Hi,
Quick update on the HDF5 ecosystem in Go:
While gonum/hdf5 is still limited to HDF5 1.8.x due to CGo wrapper constraints, there's now an alternative that might interest you: a pure Go HDF5 implementation that doesn't depend on the C library version at all.
CURRENT STATUS (2025):
Repository:
https://github.com/scigolib/hdf5 Read support: Feature-complete (all HDF5 formats)
Write support: Beta (v0.11.1-beta)
SWMR: Planned for v0.12.0-RC (Q1 2026)
WHY THIS MATTERS FOR YOUR USE CASE:
1. No CGo = no C library version constraints
2. Pure Go implementation = format support independent of libhdf5
3. SWMR is a format-level feature, not a library dependency
CURRENT LIMITATIONS:
SWMR is not yet implemented in the pure-Go library. However, since it's implemented at the format level (file locking + metadata versioning), it's feasible to add without C library dependencies.
The roadmap shows SWMR planned for v0.12.0-RC, which should be Q1 2026.
WORKAROUND FOR NOW:
If you need SWMR today and can't wait:
Option 1: Use gonum/hdf5 with HDF5 1.10 C library
- Requires building HDF5 1.10 from source
- May need to modify gonum/hdf5 build flags
Option 2: Wait for pure-Go SWMR support (~3-4 months)
- No CGo complications
- Format-level implementation
REGARDING GONUM/HDF5 UPDATE TO 1.10:
That's a question for the gonum maintainers, but CGo wrappers typically lag behind C library releases. The pure-Go approach bypasses this issue entirely since format support isn't tied to library versions.
Installation (if you want to try the pure-Go approach):
go get
github.com/scigolib/hd...@v0.11.1-betaHope this helps. If SWMR is critical for your workflow and you'd like to contribute or test early SWMR support in the pure-Go library, the project is actively developed and welcoming contributors.
Best,
Andrey Kolkov
Links:
- Pure Go HDF5:
https://github.com/scigolib/hdf5- Roadmap (SWMR timeline):
https://github.com/scigolib/hdf5/blob/main/ROADMAP.md- HDF Group recognition:
https://forum.hdfgroup.org/t/loking-for-an-hdf5-version-compatible-with-go1-9-2/10021/7