Skip to content

h5cpp-v1.12.7

Choose a tag to compare

@steven-varga steven-varga released this 01 Jun 02:01
· 8 commits to release since this release

v1.12.7 — vendored uBLAS, and off-CI/SLURM dashboards

Highlights

The build is now clean across the entire matrix. A type-taxonomy macro that was defined twice with conflicting values (H5CPP_supported_elementary_types) emitted ~50 redefinition warnings per translation unit — gone (#289). The h5:: reflection-attribute namespace ([[h5::doc]], [[h5::chunk]], …) is now declared intentional, so structs annotated for the h5cpp-compiler build clean under a plain compiler (#291). The examples' stale CMake policy baseline was raised so find_package(HDF5) actually honors HDF5_ROOT instead of silently ignoring it (#295). And an MSVC (VS2022 14.4x) C1001 internal compiler error on the new attribute-read conversion was eliminated at its source (#282).

Library line coverage clears 80% — measured against an honest denominator. Vendored thirdparty, the test harness, and the example translation units no longer pollute the figure on either the Codecov pipeline or the CDash Coverage step (they were inflating it roughly 4×). New tests cover the h5::cout handle printers, recursive ls/dfs/bfs traversal, rank-2 chunked-pipeline writes, the synchronous high_throughput dispatch, and attribute / auto-chunk / fletcher32 edges (#285, #278).

Boost uBLAS is fully self-contained. A header-only closure of Boost 1.89 uBLAS is vendored under thirdparty/ublas/ (correctly boost/-prefixed), so the examples build with no system Boost and no BLAS/LAPACK — uBLAS ships its own fallbacks, and the previous reliance on a system Boost install (which broke Boost-less hosts) is removed. The C++20 skip for the uBLAS test is retired (#293).

CDash submission now works from anywhere. A new scripts/cdash tool submits test and coverage results to CDash from any machine — desktop or HPC — and runs unattended under SLURM: it honors the job's CPU allocation, groups submissions under the cluster name, and scopes coverage to library headers (#278).

Documentation is consolidated into one DRY reference. The workspace reports and the Doxygen alias system are unified, the reports tree flattened, and a top-level REPORTS axis added (#282).

Fixes

  • #289 remove the duplicate H5CPP_supported_elementary_types definition (H5misc.hpp vs H5Tmeta.hpp) that redefined the macro with a conflicting value — ~50 warnings per TU, and the stale (no-enum) variant was silently winning
  • #282 dodge an MSVC C1001 internal compiler error on the at_t implicit-read conversion by making the operator inline and routing its body through a free function template (the out-of-line member-template conversion operator of an explicit specialization crashed CL.exe)
  • #295 set CMP0074 NEW in the examples sub-project so find_package(HDF5) honors HDF5_ROOT — the custom HDF Group path logic had been silently inert under the cmake_minimum_required(3.10) baseline
  • #291 silence -Wattributes for the h5:: reflection-attribute namespace so annotated structs build clean without the h5cpp-compiler pass (per-compiler: -Wno-attributes=h5:: / -Wno-unknown-attributes / /wd5030)

Features

  • #282 add implicit attribute-read sugar — T v = parent["attr"] — mirroring the existing parent["attr"] = v write path; dispatches through h5::aread<V>
  • #278 add scripts/cdash + scripts/CTestDashboard.cmake — off-CI CDash test and coverage submission from any machine, desktop or SLURM cluster, with auto CPU allocation and cluster-name grouping
  • #293 vendor a self-contained header-only Boost uBLAS (1.89) closure — examples build with no system Boost and no BLAS/LAPACK

Architecture / Refactoring

  • #285 raise library line coverage above 95% with targeted tests for the handle pretty-printers, recursive traversal, multi-dimensional pipeline writes, high_throughput dispatch, and attribute/create/fletcher32 edges
  • #285 / #278 scope coverage to h5cpp/ library headers only — exclude thirdparty/, the test harness, and examples/ from both the Codecov lcov --remove list and the CDash CTEST_CUSTOM_COVERAGE_EXCLUDE, so the two dashboards report the same number
  • #278 default the off-CI dashboard to coverage + examples on, and make it SLURM-aware (SLURM_CPUS_PER_TASK / SLURM_CPUS_ON_NODE for parallelism, SLURM_CLUSTER_NAME for the dashboard site); add scripts/README.md
  • #282 consolidate the workspace reports and Doxygen alias system into one DRY reference, flatten the reports tree, and add a top-level REPORTS nav axis

Compatibility Notes

  • The public synchronous h5::read / h5::write / h5::aread surface is unchanged; the attribute bracket-read (T v = ds["attr"]) arrives as additive sugar over h5::aread.
  • uBLAS is now a vendored header-only Boost 1.89 closure — no system Boost or BLAS/LAPACK is required, and the C++20 uBLAS test skip is retired (uBLAS is C++20-clean from this version).
  • The off-CI CDash tool (scripts/cdash) now defaults to COVERAGE=ON (forces a Debug+gcov build) and BUILD_EXAMPLES=ON; pass COVERAGE=OFF / SUBMIT=OFF for a plain or dry-run build.
  • Known issue (#286): the FAPL-scoped worker-pool parallel filter pipeline (h5::threads{N} + h5::high_throughput) is currently inert — the pool is dropped by H5Fget_access_plist before the write/read dispatch resolves it, so pool_pipeline_t runs synchronously. Two related high_throughput direct-chunk defects (partial-hyperslab read, shuffle reverse) are tracked there as well. H5Zpipeline_pool.hpp is excluded from coverage until this lands.

Full Changelog: v1.12.6...v1.12.7

As always, report issues at https://github.com/vargalabs/h5cpp/issues.