This document is designed to help developers maintain HDF5-based applications as they are used with successive releases of HDF5. To that end, this document lists the changes at each release that a maintenance developer needs to be aware of:
- 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
Bug fixes and performance enhancements in the C library are automatically picked up by the C++, Fortran, and Java libraries.
The release notes also list changes made to the library, but these notes tend to be more at a more detail-oriented level. The release notes may include new features, bugs fixed, supported configuration features, platforms on which the library has been tested, and known problems. The release note files are listed below and can be found at the top level of the HDF5 source code tree in the release_docs directory of the distributed HDF5 source code.
| Technical notes regarding the current release of the HDF5 library |
| Release information for all HDF5-1.10 releases |
| Development history between the HDF5-1.8.0 and HDF5-1.10.0 releases |
| Release information for HDF5-1.8.0 through HDF5-1.8.17 releases |
| Technical notes starting with HDF5-1.0.0 and ending with HDF5-1.8.0-rc3 (the state of the code prior to the HDF5-1.8.0 release) |
Information for the following releases is included:
Release 1.10.2 versus Release 1.10.1
This section lists interface-level changes and other user-visible changes in behavior in the transition from HDF5 Release 1.10.1 to Release 1.10.2.
New and Changed Functions, Classes, Subroutines, Wrappers, and Macros
In the C Interface (main library)
The following are new C functions in this release:
Function | Description |
---|---|
H5D_GET_CHUNK_STORAGE_SIZE | Returns storage amount allocated within a file for a raw data chunk in a dataset |
H5F_GET_EOA | Retrieves the file’s EOA |
H5F_INCREMENT_FILESIZE | Sets the file’s EOA to the maximum of (EOA, EOF) + increment |
H5F_SET_LIBVER_BOUNDS | Enables the switch of version bounds setting for a file |
H5FDdriver_query | Queries a VFL driver for its feature flags when a file is not available (not documented in Reference Manual) |
H5P_GET_VIRTUAL_PREFIX | Retrieves prefix applied to VDS source file paths |
H5P_SET_VIRTUAL_PREFIX | Sets prefix to be applied to VDS source file paths |
The following C functions changed in this release:
Function | Change |
---|---|
H5P_SET_LIBVER_BOUNDS | HDF5-1.10 was added to the range of versions |
H5P_SET_VIRTUAL | A change was made to the method of searching for VDS source files |
H5PL* | The parameters for many of the H5PL APIs were renamed |
In the C High Level Interface
The following new C function was added to this release:
Function | Description |
---|---|
H5DO_READ_CHUNK | Reads a raw data chunk directly from a dataset in a file |
In the C++ Wrapper
The following C++ wrappers were added:
C++ Wrapper | Description |
---|---|
H5Lcreate_soft | Creates a soft link from link_name to target_name |
H5Lcreate_hard | Creates a hard link from new_name to curr_name |
H5Lcopy | Copy an object from a group of file |
H5Lmove | Rename an object in a group or file |
H5Ldelete | Removes the specified link from this location |
H5Tencode | Creates a binary object description of this datatype |
H5Tdecode | Returns the decoded type from the binary object description |
H5Lget_info | Returns the information of the named link |
These were also added:
Class
LinkCreatPropList
for link create property listOverloaded functions
H5Location::createGroup
to take a link creation property list
See the API Compatibility report for complete details.
In the Java Wrapper
The following Java wrappers were added:
Java Wrapper | Description |
---|---|
H5Pset_evict_on_close | Controls the library's behavior of evicting metadata associated with a closed object |
H5Pget_evict_on_close | Retrieves the file access property list setting that determines whether an HDF5 object will be evicted from the library's metadata cache when closed |
H5Pset_chunk_opts | Sets the edge chunk option in a dataset creation property list |
H5Pget_chunk_opts | Retrieves the edge chunk option setting from a dataset creation property list |
H5Pset_efile_prefix | Sets the external dataset storage file prefix in the dataset access property list |
H5Pget_efile_prefix | Retrieves the prefix for external raw data storage files as set in the dataset access property list |
H5Pset_virtual_prefix | Sets prefix to be applied to VDS source file paths |
H5Pget_virtual_prefix | Retrieves prefix applied to VDS source file paths |
See the Release.txt
file for details.
Tools
New options were added to the h5clear
utility:
--filesize | Print the file’s EOA and EOF |
--increment=C | Set the file’s EOA to the maximum of (EOA, EOF) + C for the file C is >= 0; C is optional and will default to 1M when not set |
A new option was added to h5diff
:
--enable-error-stack | Enable the error stack |
Compatibility Notes and Report
See API Compatibility Reports for information regarding compatibility with previous releases.
Release 1.10.1 versus Release 1.10.0 (and 1.10.0-patch1)
This section lists interface-level changes and other user-visible changes in behavior in the transition from HDF5 Release 1.10.0 (and HDF5-1.10.0-patch1) to Release 1.10.1.
New Features
Several new features are introduced in HDF5 Release 1.10.1.
Metadata Cache Image
Metadata Cache Evict on Close
Paged Aggregation
Page Buffering
New Features, including associated C Functions
The following features are described and documented in New Features in HDF5 Release 1.10. Each new feature in 1.10.1 is listed below along with the associated C functions:
Metadata Cache Image:
| Retrieves the metadata cache image configuration values for a file access property list. |
| Sets the metadata cache image option for a file access property list. |
| Gets information about a metadata cache image if it exists. |
Metadata Cache Evict on Close:
| Retrieves the property list setting that determines whether an HDF5 object will be evicted from the library's metadata cache when it is closed. |
| Controls the library's behavior of evicting metadata associated with a closed object. |
Paged Aggregation:
| Retrieves the file space page size for a file creation property list. |
| Sets the file space page size (used with paged aggregation) for a file creation property list. |
| Retrieves the file space handling strategy for a file creation property list. |
| Sets the file space allocation strategy for a file creation property list. |
Page Buffering:
| Retrieves the maximum size for the page buffer and the minimum percentage for metadata and raw data pages. |
| Sets the maximum size for the page buffer and the minimum percentage for metadata and raw data pages. |
| Retrieves statistics about page access when it is enabled. |
| Resets the page buffer statistics. |
New and Changed Functions, Classes, Subroutines, Wrappers, and Macros
In the C Interface (main library)
The following new C functions were added:
|
|
|
|
|
|
|
In the C++ Wrapper
New member functions were added to provide const
versions. For example, these methods,
ArrayType::getArrayDims
( hsize_t* dims ) const
ArrayType::getArrayNDims
( ) const
replace these:
ArrayType::getArrayDims
( hsize_t* dims )
ArrayType::getArrayNDims
( )
Several functions were moved to other classes. For example, this method,
H5Location::openDataSet
( char const* name ) const
replaces:
CommonFG::openDataSet
( char const* name ) const
PLEASE review the Compatibility report below for complete information on the C++ changes in this release.
Compatibility Report
Compatibility report for Release 1.10.1 versus Release 1.10.0-patch1
API compatibility report for the HDF5 Library between 1.10.1 and 1.10.0-patch1
Release 1.10.0 of March 2016 versus Release 1.8.16
This section lists interface-level changes and other user-visible changes in behavior in the transition from HDF5 Release 1.8.16 to Release 1.10.0.
Changed Type
hid_t
Changed from a 32-bit to a 64-bit value.
hid_t
is the type is used for all HDF5 identifiers. This change, which is necessary to accomodate the capacities of modern computing systems, therefore affects all HDF5 applications. If an application has been using HDF5’s hid_t
the type, recompilation will normally be sufficient to take advantage of HDF5 Release 1.10.0. If an application uses an integer type instead of HDF5’s hid_t
type, those identifiers must be changed to a 64-bit type when the application is ported to the 1.10.x series.
New Features and Feature Sets
Several new features are introduced in HDF5 Release 1.10.0.
Single-Writer / Multiple-Reader or SWMR
Collective Metadata I/O
Fine-tuning the metadata cache
File Space Management
Virtual Datasets or VDS
Partial Edge Chunk Options
Relative Pathnames for External Links
Property List Encoding and Decoding
More substantial lists follow, including new and modified C functions and Fortran subroutines.
New Features, including associated C Functions and Fortran Wrappers
The following features are described and documented in New Features in HDF5 Release 1.10.0. On this page, we list each feature and its associated C functions and Fortran wrappers.
Single-writer / Multiple-reader, commonly called SWMR:
| Enables SWMR writing mode for a file. |
| Appends data to a dataset along a specified dimension. |
| Retrieves the values of the append property that is set up in the dataset access property list. |
| Sets two actions to perform when the size of a dataset’s dimension being appended reaches a specified boundary. |
| Retrieves the object flush property values from the file access property list. |
| Sets a callback function to invoke when an object flush occurs in the file. |
| Prevents metadata entries for an HDF5 object from being flushed from the metadata cache to storage. |
| Returns the cache entries associated with an HDF5 object to the default metadata flush and eviction algorithm. |
| |
| Determines if an HDF5 object (dataset, group, committed datatype) has had flushes of metadata entries disabled. |
| Globally prevents dirty metadata entries from being flushed from the metadata cache to storage. |
| Returns a file’s metadata cache to the standard eviction and flushing algorithm. |
| |
| Determines if flushes have been globally disabled for a file’s metadata cache. |
| |
| Returns a list of all object identifiers for which flushes have been disabled in a file’s metadata cache. |
| |
| Allows users to output new records appended to a dataset under SWMR access as it grows. The functionality is similar to the Unix user command |
| This tool allows users to convert the indexing type of a chunked dataset made with a 1.10.x version of the HDF5 Library when the latest file format is used to the 1.8.x version 1 B-tree indexing type. For example, datasets created using SWMR access, can be converted to be accessed by the HDF5 1.18 library and tools. The tool does not rewrite raw data, but it does rewrite HDF5 metadata. |
Collective Metadata I/O:
| Establishes I/O mode property setting, collective or independent, for metadata writes. |
| Retrieves I/O mode property setting for metadata writes. |
| Establishes I/O mode, collective or independent, for metadata read operations. |
| Retrieves I/O mode for metadata read operations. |
Fine-tuning the Metadata Cache:
| |
| Retrieves the collection of read retries for metadata items with checksum. |
| |
| Retrieves the number of read attempts from a file access property list. |
| |
| Sets the number of read attempts in a file access property list. |
| Causes all buffers associated with a dataset to be immediately written to disk without removing the data from the cache. |
| Causes all buffers associated with a dataset to be cleared and immediately re-loaded with updated contents from disk storage. |
| Causes all buffers associated with a group to be immediately flushed to disk without removing the data from the cache. |
| Causes all buffers associated with a group to be cleared and immediately re-loaded with updated contents from disk storage. |
| Causes all buffers associated with an object to be immediately flushed to disk without removing the data from the cache. |
| Causes all buffers associated with an object to be cleared and immediately re-loaded with updated contents from disk storage. |
| Causes all buffers associated with a committed datatype to be immediately flushed to disk without removing the data from the cache. |
| Causes all buffers associated with a committed datatype to be cleared and immediately re-loaded with updated contents from disk storage. |
| Determines the read/write or read-only status of a file. |
| |
| Sets metadata cache logging options. |
| Gets metadata cache logging options. |
| Starts logging metadata cache events if logging was previously enabled. |
| Stops logging metadata cache events if logging was previously enabled and is currently ongoing. |
| |
| Gets the current metadata cache logging status. |
File Space Management:
|
| Retrieves free-space section information for a file. |
|
| Returns the amount of free space in a file. |
|
| Returns global information for a file. |
|
| Sets the file space management strategy and/or the free-space section threshold for an HDF5 file. |
|
| Retrieves the file space management strategy and/or the free-space section threshold for an HDF5 file. |
| ||
The following tool has been modified to preserve or modify file freepace information appropriately when processing files employing the VDS feature: | ||
| Repacks HDF5 files with various options, including the ability to change the applied filters. This version of |
Virtual Dataset or VDS:
| Sets the mapping between virtual and source datasets. |
| Retrieves the number of mappings for the virtual dataset. |
| Retrieves a dataspace identifier for the selection within the virtual dataset used in the mapping. |
| Retrieves a dataspace identifier for the selection within the source dataset used in the mapping. |
| Retrieves the name of a source dataset used in the mapping. |
| Retrieves the filename of a source dataset used in the mapping. |
| Sets maximum number of missing source files and/or datasets with printf-style names when getting the extent of an unlimited virtual dataset. |
| Returns maximum number of missing source files and/or datasets with printf-style names when getting the extent for an unlimited virtual dataset. |
| Sets the view of the virtual dataset to include or exclude missing mapped elements. |
| Retrieves the view of a virtual dataset. |
| |
| Determines whether a hyperslab selection is regular. |
| Retrieves a regular hyperslab selection. |
| |
| Specifies the layout to be used for a dataset. |
| Retrieves the layout in use for a dataset. |
Partial Edge Chunks:
| Sets a partial edge chunk option in a dataset access property list. |
| Retrieves partial edge chunk option setting from a dataset access property list. |
Relative Pathnames for External Links:
| These functions enable the user to specify the locations of external files. |
|
Property List Encoding and Decoding:
|
|
Additional New Functions:
The following new functions appear in HDF5 Release 1.10.0 but are not yet documented:
H5Dformat_convert
H5Dget_chunk_index_type
H5FDlock
H5FDunlock
H5Fformat_convert
H5LDget_dset_dims
H5LDget_dset_elmts
H5LDget_dset_type_size
New and Changed Elements of the Packet Table (H5PT) High-level API
In the C Interface
Replacement functions:
H5PTcreate
Takes a property list identifier to provide flexibility on creation properties.
H5PTcreate_fl
has been removed.
H5PTfree_vlen_buff
Replaces H5PTfree_vlen_readbuff
.
New functions:
Two accessor functions have been added.
H5PTget_dataset
Returns the identifier of the dataset associated a packet table.
H5PTget_type
Returns the identifier of the datatype used by a packet table.
H5PTis_varlen
Determines whether a type is variable-length.
In the C++ Interface
Overloaded constructor
An overloaded constructor has been added.
FL_PacketTable
Takes a property list identifier to provide flexibility on creation properties.>/dd>
H5PTfree_vlen_buff
Replaces H5PTfree_vlen_readbuff
.
Accessor wrappers
Two accessor wrappers are added to class PacketTable
.
PacketTable::GetDataset()
Returns the identifier of the dataset associated a packet table.
PacketTable::GetDatatype()
Returns the identifier of the datatype used by a packet table.
Other wrappers
PacketTable::FreeBuff()
Replaces VL_PacketTable::FreeReadBuff()
.
PacketTable::IsVariableLength()
Replaces VL_PacketTable::IsVariableLength()
.
Overloaded functions:
Where a member functions has a char*
as an argument, an overloaded functions has been added to provide the const char*
argument.
The existing version will be deprecated in a future release.
Java Interface Changes
Integration into Main HDF5 Library
The Java HDF5 JNI library has been integrated into the HDF5 repository.
Configure option:
--enable-java
CMake option:
HDF5_BUILD_JAVA:BOOL=ON
Prior to the 1.10.x series, the HDF5 Java tools were built from an independent repository and were not as fully integrated with HDF5. were built from an independent repository and were not as fully integrated with HDF5.
Package Hierarchy Change
The package hierarchy has changed to hdf.hdflib.hdf5
.
Prior to the 1.10.x series, the hierarchy was ncsa.hdf.hdflib.hdf5
.
New Java APIs
A number of new APIs have been added in the Java interface, including APIs for the VDS and SWMR features.
Functions with Changed Behavior
H5Lexists
The behavior of this function has changed in this release. When testing the pathname /
(a slash representing the root of an HDF5 file) H5Lexists
now returns successfully with the value 1
(one). See the entry in the HDF5 Reference Manual for H5Lexists
for more information.
API Compatibility
See API Compatibility Macros in HDF5 for details on the following.
New API Compatibility Flag
A new v18
flag was added enabling the building of HDF5 such that the default API is compatible with the HDF5 Release 1.8.x API:
--with-default-api-version=v18
New versioned functions and associated compatibility macros
Two functions and a struct have been converted to a versioned form in this release. Compatibility macros have been created for each.
H5Fget_info
The original function is renamed to H5Fget_info1
and deprecated.
A new version of the function, H5Fget_info2
, is introduced.
The compatiblity macro H5Fget_info
is introduced.
H5F_info_t
This is the struct used by the H5Fget_info
functions and macro.
The original struct is renamed to H5F_info1_t
and deprecated.
A new version of the struct, H5F_info2_t
, is introduced.
The compatiblity macro H5F_info_t
is introduced.
H5Rdereference
The original function is renamed to H5Rdereference1
and deprecated.
A new version of the function, H5Rdereference2
, is introduced.
The compatiblity macro H5Rdereference
is introduced.
Autotools Configuration and Large File Support
Autotools configuration has been extensively reworked and autotool’s handling of large file support has been overhauled in this release.
See the following sections in RELEASE.txt
:
- “Autotools Configuration Has Been Extensively Reworked”
- “LFS Changes”
RELEASE.txt
is found in the release_docs/
subdirectory at the root level of the HDF5 code distribution.
Compatibility Report and Comments
Compatibility report for Release 1.10.0 versus Release 1.8.16
API compatibility report for the HDF5 Library between 1.10.0 and 1.8.16 versions on x86
Comments regarding the report
In the C interface, the hid_t
change from 32-bit to 64-bit was made in order to address a performance problem that arose when the library “ran out” of valid object identifiers to issue and thus needed to employ an expensive algorithm to find previously issued identifiers that could be re-issued. This problem is avoided by switching the size of the hid_t
type to 64-bit integers instead of 32-bit integers in order to make the pool of available integers significantly larger. (H5E_major_t
and H5E_minor_t
are aliased to hid_t
which is why they changed size as well). (An alternate solution to this problem was applied in release HDF5 1.8.5 but this is the cleaner/preferred solution and had to wait until 1.10.0 to be included).
hbool_t
will now be defined as a _Bool
type when configure determines that it’s available.
Public structs that have members of type hid_t
or hbool_t
are affected by the above changes accordingly.
The H5Fget_info
function was renamed due to the introduction of a newer version of the function which returns additional information. The H5Rdereference
function was renamed due to the introduction of a newer version of the function which allows a data access property list to be passed in. Both changes are accompanied with compatibility macros, so while existing code will need to be recompiled in order to use the newer library version, these functions do not need to be changed in application code using them provided that the HDF5 API compatibility macros are configured appropriately.
--- Last Modified: April 05, 2018 | 09:56 AM