Seeking guidance on C++ wrappers

Dear all,

I am currently in the process of modernizing a C++ scientific software project that leverages parallel HDF5 through a C++ wrapper library. Due to compatibility issues with recent HDF5 releases, I looked into alternative C++ wrappers and am currently considering either the HDF5 C++ bindings or the HighFive library, both of which offer RAII management for HDF5 objects. While the C++ bindings appear to work in parallel with minimal adjustments, there seems to be some level of uncertainty regarding their long-term support, particularly in light of the discussions in the May 2024 meeting minutes, although subsequent meeting notes give the impression these bindings will still be part of the code for some time. I also noticed a draft PR aimed at integrating HighFive into the CI (#5095), although it was put on pause.

As someone who is not deeply embedded in the HDF community, I lack detailed insight into the future of C++ support within this ecosystem. I am aware that significant efforts are currently being directed towards the 2.0 release, and that C++ bindings aren’t a high-priority target.

I would greatly appreciate your advice on whether I should invest time on the HDF5 C++ bindings or to the HighFive library. I would be happy to contribute back any code improvements or bug fixes that may arise during the migration, such as extending existing serial C++ bindings for parallel use, or writing additional unit tests. Unfortunately, my other commitments will not allow me to become a long-term contributor to either the C++ bindings or the HighFive library.

Thank you for your consideration!

Hi Jean-Noël,
can you share which c++ standard you are targeting during this modernisation process?

I am targeting C++20. Ideally I would like to be able to interface with both the most recent 1.x releases and the 2.0 release of hdf5, even if it means using #ifdef here and there, because some users rely on libhdf5-openmpi-dev from Ubuntu packages, while other like to get the most recent version of all dependencies.

In general, we recommend using the alternatives you’ve mentioned instead of the HDF5 C++ wrappers. Those implementations have many more advantages and very few disadvantages; I’ll let those more familiar with them expand upon that.

@jgrad I agree with @brtnfld, adding that the HDF5 C++ wrappers are likely to be deprecated in the not too distant future.