Help us improve by taking our short survey: https://www.hdfgroup.org/website-survey/
HDF5 Last Updated on 2025-11-13
The HDF5 Field Guide
Loading...
Searching...
No Matches
Release Specific Information for HDF5 2.0

Navigate back: Main / Release Specific Information / Release Specific Information for HDF5 2.0


Software Changes from Release to Release in HDF5 2.0

This page provides information on the changes that a maintenance developer needs to be aware of between successive releases of HDF5, such as:

  • New or changed features or tools
  • Syntax and behavioral changes in the existing application programming interface (the API)
  • Certain types of changes in configuration or build processes
  • Note that bug fixes and performance enhancements in the C library are automatically picked up by the C++, Fortran, and Java libraries.

API Compatibility

See API Compatibility Macros for details on using HDF5 version 2.0 with previous releases.

Differences between releases

The Change log (a.k.a. the RELEASE.txt prior to release 2.0) also lists changes made to the library, but these notes tend to be more at a more detail-oriented level. It include new features, bugs fixed, supported configuration features, platforms on which the library has been tested, and known problems. The change log files are listed in each release section and can be found at the top level of the HDF5 source code tree in the release_docs directory.

Release 2.0 versus Release 1.14.6

HDF5 version 2.0 provides a number of new C APIs and other user-visible changes in behavior in the transition from HDF5 Release 1.14.6 to Release 2.0. Some of those require the use of the API Compatibility Macros for the main library. In addition, some APIs have been removed or have had their signature change.

  • #hbool_t has been removed from public API calls
    The #hbool_t type was introduced before the library supported C99's Boolean type. Originally typedef'd to an integer, it has been typedef'd to C99's bool for many years. Prior to HDF5 2.0, it had been purged from the library code and only remained in public API signatures. In HDF5 2.0, it has also been removed from public API signatures.
    The #hbool_t typedef remains in H5public.h so existing code does not need to be updated.
  • Default page buffer size for the ROS3 driver changed
    Calling H5Pset_fapl_ros3() now has the side effect of setting the page buffer size in the FAPL to 64 MiB if it was not previously set. This will only have an effect if the file uses paged allocation. Also added the #H5F_PAGE_BUFFER_SIZE_DEFAULT to allow the user to unset the page buffer size in an FAPL so it can be similarly overridden.
  • Default dataset chunk cache size increased
    The default dataset chunk cache size was increased to 8 MiB (8,388,608 bytes).
  • H5Dread_chunk() signature has changed
    A new parameter, nalloc, has been added to H5Dread_chunk(). This parameter contains a pointer to a variable that holds the size of the buffer buf. If *nalloc is not large enough to hold the entire chunk being read, no data is read. On exit, the value of this variable is set to the buffer size needed to read the chunk. The old signature has been renamed to H5Dread_chunk1() and is considered deprecated:
    herr_t H5Dread_chunk1(hid_t dset_id, hid_t dxpl_id, const hsize_t *offset, uint32_t *filters, void *buf);
    int64_t hid_t
    Definition H5Ipublic.h:60
    int herr_t
    Definition H5public.h:252
    uint64_t hsize_t
    Definition H5public.h:304
    herr_t H5Dread_chunk1(hid_t dset_id, hid_t dxpl_id, const hsize_t *offset, uint32_t *filters, void *buf)
    Reads a raw data chunk directly from a dataset in a file into a buffer.
    The new signature is H5Dread_chunk2(). All code should be updated to use this version:
    herr_t H5Dread_chunk2(hid_t dset_id, hid_t dxpl_id, const hsize_t *offset, uint32_t *filters, void *buf, size_t *nalloc);
    herr_t H5Dread_chunk2(hid_t dset_id, hid_t dxpl_id, const hsize_t *offset, uint32_t *filters, void *buf, size_t *buf_size)
    Reads a raw data chunk directly from a dataset in a file into a buffer.
    H5Dread_chunk() will map to the new signature unless the library is explicitly configured to use an older version of the API.
  • H5Tdecode() signature has changed
    A new parameter, buf_size, has been added to H5Tdecode() to prevent walking off the end of the buffer. The old signature has been renamed to H5Tdecode1() and is considered deprecated:
    herr_t H5Tdecode1(const void *buf);
    hid_t H5Tdecode1(const void *buf)
    Decodes a binary object description of datatype and returns a new object handle.
    The new signature is H5Tdecode2(). All code should be updated to use this version:
    herr_t H5Tdecode2(const void *buf, size_t buf_size);
    hid_t H5Tdecode2(const void *buf, size_t buf_size)
    Decodes a binary object description of datatype and returns a new object handle.
    H5Tdecode() will map to the new signature unless the library is explicitly configured to use an older version of the API.
  • H5Iregister_type() signature has changed
    The hash_size parameter has not been used since early versions of HDF5 1.8, so it has been removed and the API call has been versioned. The old signature has been renamed to H5Iregister_type1() and is considered deprecated:
    H5I_type_t H5Iregister_type1(size_t hash_size, unsigned reserved, H5I_free_t free_func);
    H5I_type_t
    Definition H5Ipublic.h:34
    herr_t(* H5I_free_t)(void *obj, void **request)
    Definition H5Ipublic.h:86
    H5I_type_t H5Iregister_type1(size_t hash_size, unsigned reserved, H5I_free_t free_func)
    Creates and returns a new ID type.
    The new signature is H5Iregister_type2(). New code should use this version:
    H5I_type_t H5Iregister_type2(unsigned reserved, H5I_free_t free_func);
    H5I_type_t H5Iregister_type2(unsigned reserved, H5I_free_t free_func)
    Creates and returns a new ID type.
    H5Iregister_type() will map to the new signature unless the library is explicitly configured to use an older version of the API.

List of new public APIs/Macros

Function/ConstantDescription
H5Dread_chunk1() Reads an entire chunk from the file directly (Deprecated in favor of H5Dread_chunk2())
H5Dread_chunk2() Reads an entire chunk from the file directly
H5Iregister_type1() Creates a new type of ID (Deprecated in favor of H5Iregister_type2())
H5Iregister_type2() Creates a new type of ID
H5Pget_virtual_spatial_tree() Retrieves the setting for whether or not to use a spatial tree for VDS mappings
H5Pset_virtual_spatial_tree() Sets the flag to use a spatial tree for mappings
H5Tcomplex_create() Creates a new complex number datatype
H5Tdecode1() Decodes a binary object description (Deprecated in favor of H5Tdecode2())
H5Tdecode2() Decodes a binary object description
H5VLclose_lib_context() Closes the state of the library, undoing the effects of H5VLopen_lib_context()
H5VLopen_lib_context() Opens a new internal context for the HDF5 library
H5T_COMPLEX_IEEE_F16BE Complex number of 2 16-bit big-endian IEEE floating point numbers
H5T_COMPLEX_IEEE_F16LE Complex number of 2 16-bit little-endian IEEE floating point numbers
H5T_COMPLEX_IEEE_F32BE Complex number of 2 32-bit big-endian IEEE floating point numbers
H5T_COMPLEX_IEEE_F32LE Complex number of 2 32-bit little-endian IEEE floating point numbers
H5T_COMPLEX_IEEE_F64BE Complex number of 2 64-bit big-endian IEEE floating point numbers
H5T_COMPLEX_IEEE_F64LE Complex number of 2 64-bit little-endian IEEE floating point numbers
H5T_FLOAT_BFLOAT16BE 16-bit big-endian bfloat16 floating point
H5T_FLOAT_BFLOAT16LE 16-bit little-endian bfloat16 floating point
H5T_FLOAT_F8E4M3 8-bit FP8 E4M3 (4 exponent bits, 3 mantissa bits) floating point
H5T_FLOAT_F8E5M2 8-bit FP8 E5M2 (5 exponent bits, 2 mantissa bits) floating point
H5T_NATIVE_DOUBLE_COMPLEX double _Complex (MSVC _Dcomplex)
H5T_NATIVE_FLOAT_COMPLEX float _Complex (MSVC _Fcomplex)
H5T_NATIVE_LDOUBLE_COMPLEX long double _Complex (MSVC _Lcomplex)
H5VL_NATIVE Identifier for the native VOL connector
H5VL_PASSTHRU Identifier for the pass-through VOL connector

List of removed public APIs

Function
H5Dread_chunk()
H5FDperform_init()
H5Iregister_type()
H5Tdecode()
H5VLpeek_connector_id_by_name()
H5VLpeek_connector_id_by_value()
H5VLfinish_lib_state()
H5VLstart_lib_state()

Navigate back: Main / Release Specific Information / Release Specific Information for HDF5 2.0