h5cpp-v1.12.7
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_typesdefinition (H5misc.hppvsH5Tmeta.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
C1001internal compiler error on theat_timplicit-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 crashedCL.exe) - #295 set
CMP0074 NEWin the examples sub-project sofind_package(HDF5)honorsHDF5_ROOT— the custom HDF Group path logic had been silently inert under thecmake_minimum_required(3.10)baseline - #291 silence
-Wattributesfor theh5::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 existingparent["attr"] = vwrite path; dispatches throughh5::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_throughputdispatch, and attribute/create/fletcher32 edges - #285 / #278 scope coverage to
h5cpp/library headers only — excludethirdparty/, the test harness, andexamples/from both the Codecovlcov --removelist and the CDashCTEST_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_NODEfor parallelism,SLURM_CLUSTER_NAMEfor the dashboard site); addscripts/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::areadsurface is unchanged; the attribute bracket-read (T v = ds["attr"]) arrives as additive sugar overh5::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 toCOVERAGE=ON(forces a Debug+gcov build) andBUILD_EXAMPLES=ON; passCOVERAGE=OFF/SUBMIT=OFFfor 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 byH5Fget_access_plistbefore the write/read dispatch resolves it, sopool_pipeline_truns synchronously. Two relatedhigh_throughputdirect-chunk defects (partial-hyperslab read, shuffle reverse) are tracked there as well.H5Zpipeline_pool.hppis 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.