Help us improve by taking our short survey: https://www.hdfgroup.org/website-survey/

| HDF5 Last Updated on 2026-03-23 The HDF5 Field Guide

Loading...
Searching...
No Matches
Release Specific Information for HDF5 2.x

Navigate back: Main / Release Specific Information / Release Specific Information for HDF5 2.x

# Software Changes from Release to Release in HDF5 2.x

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 of HDF5 versions when considering upgrading to the later HDF5 release to take advantage of the library features and enhancements.

- Compatibility reports for Release 2.1.1 versus Release 2.1.0
- Compatibility reports for Release 2.1.0 versus Release 2.0.0
- Compatibility reports for Release 2.0.0 versus Release 1.14.6

## Differences between releases

- Release 2.1.1 versus Release 2.1.0
- Release 2.1.0 versus Release 2.0.0
- Release 2.0.0 versus Release 1.14.6

The Change log (a.k.a. the RELEASE.txt prior to release 2.x) also lists changes made to the library, but these notes tend to be more at a more detail-oriented level. It includes 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.1.1 versus Release 2.1.0

This is a patch release that fixed the issue that results in missing libhdf5_hl_fortran libs.

### Release 2.1.0 versus Release 2.0.0

List of new public APIs/Macros

Function/Constant | Description
--- | ---
H5T_FLOAT_F6E2M3 | 6-bit FP6 E2M3 (2 exponent bits, 3 mantissa bits) floating-point
H5T_FLOAT_F6E3M2 | 6-bit FP6 E3M2 (3 exponent bits, 2 mantissa bits) floating-point
H5T_FLOAT_F4E2M1 | 4-bit FP4 E2M1 (2 exponent bits, 1 mantissa bit) floating-point

### Release 2.0.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);
  hid_t
  int64_t hid_t
  Definition H5Ipublic.h:60
  herr_t
  int herr_t
  Definition H5public.h:269
  hsize_t
  uint64_t hsize_t
  Definition H5public.h:321
  H5Dread_chunk1
  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);
  H5Dread_chunk2
  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);
  H5Tdecode1
  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);
  H5Tdecode2
  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
  H5I_type_t
  Definition H5Ipublic.h:34
  H5I_free_t
  herr_t(* H5I_free_t)(void *obj, void **request)
  Definition H5Ipublic.h:82
  H5Iregister_type1
  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);
  H5Iregister_type2
  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/Constant | Description
--- | ---
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.x