Skip to content

Important Differences between HDF5 1.8 and 1.10

Gerd Heber edited this page Jul 28, 2016 · 4 revisions

The highlights can be found here.

This page only deals with the ".NET fallout."

API Changes

With the exception of the functions related to (MPI-parallel) collective metadata I/O, all new APIs have been added to HDF.PInvoke, and appropriate unit tests defined. The underlying HDF5 1.10 features (SWMR, VDS, etc.) were tested primarily on UNIX/Linux systems. Testing on Windows has not been nearly as complete, and there might be issues yet unknown.

Types

Depending on how you've maintained your code, the switch from 32-bit to 64-bit handles (or identifiers) might catch you off-guard:

Feature HDF5 1.8 HDF5 1.10
hid_t System.Int32 System.Int64

If you've hard-coded System.Int32 in places where an hid_t was asked for, you might be in trouble. A relatively safe method to deal with this change is 1) to use HDF5 API type names in your code, and 2) to begin every source file with a declaration similar to this:

#if HDF5_VER1_10
using hid_t = System.Int64;
#else
using hid_t = System.Int32;
#endif

Unfortunately, declarations like this interfere with IntelliSense.

Let us know, if you've come up with a more elegant solution!