Skip to content

Releases: vargalabs/h5cpp

h5cpp-v.1.10.10

13 May 15:53

Choose a tag to compare

v1.10.10 — Changelog

132 commits since last release (e5e00d3), across 24 issues.


New Features

Filter pipeline — full compression/transform stack (#160)

  • Added LZ4, Zstd, libdeflate (deflate), Shuffle, Fletcher32, SZIP (Rice), nbit, and scaleoffset filters
  • Vendored libdeflate v1.25.0, zstd v1.5.7, szip v2.2.0 as self-contained third-party sources
  • Unified filter_scratch_bound across all filters; multi-filter read pipeline fixed for cross-compat with externally-created HDF5 files
  • h5::gzip{N} now backed by libdeflate; built-in HDF5 deflate (filter id 1) is no longer required at runtime

Type synthesis API (#87)

  • h5::create_type() for arithmetic, text, array-like, and reflected compound types
  • Introduced storage traits and compiler metadata contract for the type engine
  • Dataset create / read / write paths refactored to consume the new type engine (#89)

Single-header amalgamation (#161)

  • h5cpp/all now ships as a pre-built single-header amalgam (h5cpp-amalgam.hpp)
  • Full round-trip verified against the test suite on all three platforms

Attribute deletion (#131)

  • h5::adelete(ds, name) — delete an attribute by name, with matching error type and unit tests

Bug Fixes

MSVC overload-resolution crash (#163) — Windows was silently calling the wrong h5::write overload

  • MSVC C++ partial-ordering bug: the inner ::h5::write(ds, mem_space, file_space, dxpl, ptr) at H5Dwrite.hpp:119 was ambiguous between the low-level
    inner overload (line 21) and the variadic ref-forwarder (line 181, matching via T=sp_t). MSVC silently resolved to line 181, running gather() on a
    property-list handle → segfault.
  • Fix: inlined the H5Dwrite C-API call at line 119, matching the H5Dread.hpp:73 idiom.
  • Secondary: (ds, T*, count) shape was also ambiguous between line 70 (pointer overload) and line 181 (T=T*). Fixed with
    std::enable_if_t<!std::is_pointer_v<std::decay_t>> SFINAE guard on both ref-forwarder overloads (lines 181, 330).

HDF5 static-destruction race (#163) — Windows crash on process exit

  • dapl, default_dapl, lcpl, default_lcpl namespace-scope singletons were destroyed before HDF5's own atexit handler ran, corrupting handle state.
  • Fix: heap-leaked all four singletons so they outlive the HDF5 shutdown sequence.

Append and buffered-transfer mechanics (#91)

  • Fixed four bugs in h5::append and buffered transfer: incorrect flush trigger, off-by-one in buffer size, missing reset on re-open, and type mismatch
    on realloc.

std::vector misclassification (#116)

  • vector was routed through the linear-value-dataset path; corrected to the packed-bit path.

linalg adapter completeness (#121)

  • is_contiguous and rank specializations were missing or wrong for Blaze, dlib, itpp, uBLAS, Blitz++; all corrected.

MSVC narrowing warnings (#112)

  • Eliminated C4244 / C4267 warnings across the codebase; _CRT_SECURE_NO_WARNINGS applied to CSV example.

macOS Clang exhaustiveness warnings (#159)

  • Added missing switch cases for H5Tget_class and H5Pget_layout enum values.

Windows file-handle semantics in tests (#163)

  • std::filesystem::remove() on an open HDF5 file throws on Windows. Fixed by wrapping all h5cpp RAII handle lifetimes in an explicit inner scope in
    test_attributes_io.cpp and test_optimized_io.cpp.

Platform / CI

Full Windows MSVC support (#112, #163)

  • Windows added to the CI matrix; 58/58 CTest cases pass under MSVC on windows-latest
  • HDF5 1.10.10 built from source and cached across runs
  • zlib 1.3.1 built from source (replaced flaky vcpkg ZLIBConfig.cmake) to give HDF5 a consistent deflate back-end
  • Windows-specific regression probes retained as permanent tests: win_stack_probe, win_hdf5_lifecycle_probe (8 modes), win_h5dwrite_path_probe (8
    modes), win_dapl_probe (9 modes)

macOS CI (#111)

  • macOS 15 / apple-clang added to the matrix with Homebrew HDF5 + LLVM

Code-coverage reporting (#137)

  • Codecov job added (ubuntu-24.04 / gcc-14, lcov); coverage badge wired to README

CI Node.js 24 upgrade (#138)

  • actions/checkout, actions/upload-artifact, actions/download-artifact, actions-gh-pages all bumped to versions that support the Node 24 runner
    runtime

C++ Standard Compliance (#162, #122, #123, #83, #93)

  • Removed all C++11 compatibility shims; minimum standard is now C++17 throughout
  • Replaced deprecated std::is_pod with is_standard_layout_v && is_trivial_v
  • NULL → nullptr across the codebase
  • std::apply adopted where manual pack-expansion was used
  • Macro hygiene: removed redefinition hazards and corrected latent syntax errors in H5Pall.hpp / H5Pdcpl.hpp
  • All headers made self-sufficient (missing #includes added; C-style system headers replaced with C++ counterparts)
  • Include guards replaced with #pragma once across all headers (#131)
  • _t transformer aliases folded into type-trait modernisation (#123)

Build / CMake (#82, #157, #158, #132)

  • Root CMakeLists.txt modernised to C++17 package-export pattern; H5CPP_BUILD_TESTS option wired into CI
  • Armadillo upgraded to v15.2.6 (header-only); Eigen3 and Blaze trimmed to headers only
  • dlib v19.24 allowed to configure under CMake 4.x
  • HDF5 HL component requirement removed (was unused; broke Windows vcpkg builds)
  • Examples CMakeLists.txt HDF5 discovery fixed; example filter dependencies propagated correctly
  • Unified Dockerfile for the complete example suite; Docker environment for MPI examples added

Tests (#145, #114, #117, #132)

  • Example-derived I/O round-trip test suite added (Categories A–F), covering: packet table, CSV, optimised offset write, attributes, linker/multi-TU
    verification (#145)
  • Cartesian-product I/O test machinery with extended storage_representation oracle (#114)
  • h5::test::fill random data generator added to the test support layer (#117)
  • Dataset I/O round-trip tests (#132)

Workflow / Docs (#129, #127, #96, #118)

  • Build-matrix CI badges added to README
  • Docs nav and content bugs fixed; stl.md rewritten
  • Branch governance and PR flow documented
  • Commit-message convention documented

v1.10.4-6

11 May 14:18

Choose a tag to compare

sync with debian