mirror of
https://github.com/HDFGroup/hdf5.git
synced 2024-12-09 07:32:32 +08:00
799ec0fde4
* OESS-98 convert plugin option to FetchContent, add tests * Fixes for pkcfg files because of plugin option * OESS-98 fix tools test for plugins * Keep doxygen comments under 100 chars long - format hint * Whitespace * HDFFV-11144 - Reclassify CMake messages * HDFFV-11099/11100 added help text * Reworked switch statement to compare string instead * Fix typo * Update CDash mode * Correct name of threadsafe * Correct option name * Undo accidental commit * Small changes plus merge of tools arg parse from 1.12
1132 lines
44 KiB
Plaintext
1132 lines
44 KiB
Plaintext
HDF5 version 1.13.0 currently under development
|
|
================================================================================
|
|
|
|
|
|
INTRODUCTION
|
|
|
|
This document describes the differences between this release and the previous
|
|
HDF5 release. It contains information on the platforms tested and known
|
|
problems in this release. For more details check the HISTORY*.txt files in the
|
|
HDF5 source.
|
|
|
|
Note that documentation in the links below will be updated at the time of each
|
|
final release.
|
|
|
|
Links to HDF5 documentation can be found on The HDF5 web page:
|
|
|
|
https://portal.hdfgroup.org/display/HDF5/HDF5
|
|
|
|
The official HDF5 releases can be obtained from:
|
|
|
|
https://www.hdfgroup.org/downloads/hdf5/
|
|
|
|
Changes from Release to Release and New Features in the HDF5-1.13.x release series
|
|
can be found at:
|
|
|
|
https://portal.hdfgroup.org/display/HDF5/HDF5+Application+Developer%27s+Guide
|
|
|
|
If you have any questions or comments, please send them to the HDF Help Desk:
|
|
|
|
help@hdfgroup.org
|
|
|
|
|
|
CONTENTS
|
|
========
|
|
|
|
- New Features
|
|
- Support for new platforms and languages
|
|
- Bug Fixes since HDF5-1.12.0
|
|
- Supported Platforms
|
|
- Tested Configuration Features Summary
|
|
- More Tested Platforms
|
|
- Known Problems
|
|
- CMake vs. Autotools installations
|
|
|
|
|
|
New Features
|
|
============
|
|
|
|
Configuration:
|
|
-------------
|
|
- CMake option to build the HDF filter plugins project as an external project
|
|
|
|
The HDF filter plugins project is a collection of registered compression
|
|
filters that can be dynamically loaded when needed to access data stored
|
|
in a hdf5 file. This CMake-only option allows the plugins to be built and
|
|
distributed with the hdf5 library and tools. Like the options for szip and
|
|
zlib, either a tgz file or a git repository can be specified for the source.
|
|
|
|
The option was refactored to use the CMake FetchContent process. This allows
|
|
more control over the filter targets, but required external project command
|
|
options to be moved to a CMake include file, HDF5PluginCache.cmake. Also
|
|
enabled the filter examples to be used as tests for operation of the
|
|
filter plugins.
|
|
|
|
(ADB - 2020/12/10, OESS-98)
|
|
|
|
- FreeBSD Autotools configuration now defaults to 'cc' and 'c++' compilers
|
|
|
|
On FreeBSD, the autotools defaulted to 'gcc' as the C compiler and did
|
|
not process C++ options. Since FreeBSD 10, the default compiler has
|
|
been clang (via 'cc').
|
|
|
|
The default compilers have been set to 'cc' for C and 'c++' for C++,
|
|
which will pick up clang and clang++ respectively on FreeBSD 10+.
|
|
Additionally, clang options are now set correctly for both C and C++
|
|
and g++ options will now be set if that compiler is being used (an
|
|
omission from the former functionality).
|
|
|
|
(DER - 2020/11/28, HDFFV-11193)
|
|
|
|
- Fixed POSIX problems when building w/ gcc on Solaris
|
|
|
|
When building on Solaris using gcc, the POSIX symbols were not
|
|
being set correctly, which could lead to issues like clock_gettime()
|
|
not being found.
|
|
|
|
The standard is now set to gnu99 when building with gcc on Solaris,
|
|
which allows POSIX things to be #defined and linked correctly. This
|
|
differs slightly from the gcc norm, where we set the standard to c99
|
|
and manually set POSIX #define symbols.
|
|
|
|
(DER - 2020/11/25, HDFFV-11191)
|
|
|
|
- Added a configure-time option to consider certain compiler warnings
|
|
as errors
|
|
|
|
A new configure-time option was added that converts some compiler warnings
|
|
to errors. This is mainly intended for library developers and currently
|
|
only works for gcc and clang. The warnings that are considered errors
|
|
will appear in the generated libhdf5.settings file. These warnings apply
|
|
to C and C++ code and will appear in "H5 C Flags" and H5 C++ Flags",
|
|
respectively. They will NOT be exported to h5cc, etc.
|
|
|
|
The default is OFF. Building with this option may fail when compiling
|
|
on operating systems and with compiler versions not commonly used by
|
|
the library developers. Compilation may also fail when headers not
|
|
under the control of the library developers (e.g., mpi.h, hdfs.h) raise
|
|
warnings.
|
|
|
|
Autotools: --enable-warnings-as-errors
|
|
|
|
CMake: HDF5_ENABLE_WARNINGS_AS_ERRORS
|
|
|
|
(DER - 2020/11/23, HDFFV-11189)
|
|
|
|
- Autotools and CMake target added to produce doxygen generated documentation
|
|
|
|
The default is OFF or disabled.
|
|
Autoconf option is '--enable-doxygen'
|
|
autotools make target is 'doxygen' and will build all doxygen targets
|
|
CMake configure option is 'HDF5_BUILD_DOC'.
|
|
CMake target is 'doxygen' for all available doxygen targets
|
|
CMake target is 'hdf5lib_doc' for the src subdirectory
|
|
|
|
(ADB - 2020/11/03)
|
|
|
|
- CMake option to use MSVC naming conventions with MinGW
|
|
|
|
HDF5_MSVC_NAMING_CONVENTION option enable to use MSVC naming conventions
|
|
when using a MinGW toolchain
|
|
|
|
(xan - 2020/10/30)
|
|
|
|
- CMake option to statically link gcc libs with MinGW
|
|
|
|
HDF5_MINGW_STATIC_GCC_LIBS allows to statically link libg/libstdc++
|
|
with the MinGW toolchain
|
|
|
|
(xan - 2020/10/30)
|
|
|
|
- CMake option to build the HDF filter plugins project as an external project
|
|
|
|
The HDF filter plugins project is a collection of registered compression
|
|
filters that can be dynamically loaded when needed to access data stored
|
|
in a hdf5 file. This CMake-only option allows the plugins to be built and
|
|
distributed with the hdf5 library and tools. Like the options for szip and
|
|
zlib, either a tgz file or a git repository can be specified for the source.
|
|
|
|
The necessary options are (see the INSTALL_CMake.txt file):
|
|
HDF5_ENABLE_PLUGIN_SUPPORT
|
|
PLUGIN_TGZ_NAME or PLUGIN_GIT_URL
|
|
There are more options necessary for various filters and the plugin project
|
|
documents should be referenced.
|
|
|
|
(ADB - 2020/09/27, OESS-98)
|
|
|
|
- Added CMake option to format source files
|
|
|
|
HDF5_ENABLE_FORMATTERS option will enable creation of targets using the
|
|
pattern - HDF5_*_SRC_FORMAT - where * corresponds to the source folder
|
|
or tool folder. All sources can be formatted by executing the format target;
|
|
make format
|
|
|
|
(ADB - 2020/08/24)
|
|
|
|
- Add file locking configure and CMake options
|
|
|
|
HDF5 1.10.0 introduced a file locking scheme, primarily to help
|
|
enforce SWMR setup. Formerly, the only user-level control of the scheme
|
|
was via the HDF5_USE_FILE_LOCKING environment variable.
|
|
|
|
This change introduces configure-time options that control whether
|
|
or not file locking will be used and whether or not the library
|
|
ignores errors when locking has been disabled on the file system
|
|
(useful on some HPC Lustre installations).
|
|
|
|
In both the Autotools and CMake, the settings have the effect of changing
|
|
the default property list settings (see the H5Pset/get_file_locking()
|
|
entry, below).
|
|
|
|
The yes/no/best-effort file locking configure setting has also been
|
|
added to the libhdf5.settings file.
|
|
|
|
Autotools:
|
|
|
|
An --enable-file-locking=(yes|no|best-effort) option has been added.
|
|
|
|
yes: Use file locking.
|
|
no: Do not use file locking.
|
|
best-effort: Use file locking and ignore "disabled" errors.
|
|
|
|
CMake:
|
|
|
|
Two self-explanatory options have been added:
|
|
|
|
HDF5_USE_FILE_LOCKING
|
|
HDF5_IGNORE_DISABLED_FILE_LOCKS
|
|
|
|
Setting both of these to ON is the equivalent to the Autotools'
|
|
best-effort setting.
|
|
|
|
NOTE:
|
|
The precedence order of the various file locking control mechanisms is:
|
|
|
|
1) HDF5_USE_FILE_LOCKING environment variable (highest)
|
|
|
|
2) H5Pset_file_locking()
|
|
|
|
3) configure/CMake options (which set the property list defaults)
|
|
|
|
4) library defaults (currently best-effort)
|
|
|
|
(DER - 2020/07/30, HDFFV-11092)
|
|
|
|
- CMake option to link the generated Fortran MOD files into the include
|
|
directory.
|
|
|
|
The Fortran generation of MOD files by a Fortran compile can produce
|
|
different binary files between SHARED and STATIC compiles with different
|
|
compilers and/or different platforms. Note that it has been found that
|
|
different versions of Fortran compilers will produce incompatible MOD
|
|
files. Currently, CMake will locate these MOD files in subfolders of
|
|
the include directory and add that path to the Fortran library target
|
|
in the CMake config file, which can be used by the CMake find library
|
|
process. For other build systems using the binary from a CMake install,
|
|
a new CMake configuration can be used to copy the pre-chosen version
|
|
of the Fortran MOD files into the install include directory.
|
|
|
|
The default will depend on the configuration of
|
|
BUILD_STATIC_LIBS and BUILD_SHARED_LIBS:
|
|
YES YES Default to SHARED
|
|
YES NO Default to STATIC
|
|
NO YES Default to SHARED
|
|
NO NO Default to SHARED
|
|
The defaults can be overriden by setting the config option
|
|
HDF5_INSTALL_MOD_FORTRAN to one of NO, SHARED, or STATIC
|
|
|
|
(ADB - 2020/07/09, HDFFV-11116)
|
|
|
|
- CMake option to use AEC (open source SZip) library instead of SZip
|
|
|
|
The open source AEC library is a replacement library for SZip. In
|
|
order to use it for hdf5 the libaec CMake source was changed to add
|
|
"-fPIC" and exclude test files. Autotools does not build the
|
|
compression libraries within hdf5 builds. New option USE_LIBAEC is
|
|
required to compensate for the different files produced by AEC build.
|
|
|
|
(ADB - 2020/04/22, OESS-65)
|
|
|
|
- CMake ConfigureChecks.cmake file now uses CHECK_STRUCT_HAS_MEMBER
|
|
|
|
Some handcrafted tests in HDFTests.c has been removed and the CMake
|
|
CHECK_STRUCT_HAS_MEMBER module has been used.
|
|
|
|
(ADB - 2020/03/24, TRILAB-24)
|
|
|
|
- Both build systems use same set of warnings flags
|
|
|
|
GNU C, C++ and gfortran warnings flags were moved to files in a config
|
|
sub-folder named gnu-warnings. Flags that only are available for a specific
|
|
version of the compiler are in files named with that version.
|
|
Clang C warnings flags were moved to files in a config sub-folder
|
|
named clang-warnings.
|
|
Intel C, Fortran warnings flags were moved to files in a config sub-folder
|
|
named intel-warnings.
|
|
|
|
There are flags in named "error-xxx" files with warnings that may
|
|
be promoted to errors. Some source files may still need fixes.
|
|
|
|
There are also pairs of files named "developer-xxx" and "no-developer-xxx"
|
|
that are chosen by the CMake option:HDF5_ENABLE_DEV_WARNINGS or the
|
|
configure option:--enable-developer-warnings.
|
|
|
|
In addition, CMake no longer applies these warnings for examples.
|
|
|
|
(ADB - 2020/03/24, TRILAB-192)
|
|
|
|
- Added test script for file size compare
|
|
|
|
If CMake minimum version is at least 3.14, the fileCompareTest.cmake
|
|
script will compare file sizes.
|
|
|
|
(ADB - 2020/02/24, HDFFV-11036)
|
|
|
|
- Update CMake minimum version to 3.12
|
|
|
|
Updated CMake minimum version to 3.12 and added version checks
|
|
for Windows features.
|
|
|
|
(ADB - 2020/02/05, TRILABS-142)
|
|
|
|
- Fixed CMake include properties for Fortran libraries
|
|
|
|
Corrected the library properties for Fortran to use the
|
|
correct path for the Fortran module files.
|
|
|
|
(ADB - 2020/02/04, HDFFV-11012)
|
|
|
|
- Added common warnings files for gnu and intel
|
|
|
|
Added warnings files to use one common set of flags
|
|
during configure for both autotools and CMake build
|
|
systems. The initial implementation only affects a
|
|
general set of flags for gnu and intel compilers.
|
|
|
|
(ADB - 2020/01/17)
|
|
|
|
- Added new options to CMake for control of testing
|
|
|
|
Added CMake options (default ON);
|
|
HDF5_TEST_SERIAL AND/OR HDF5_TEST_PARALLEL
|
|
combined with:
|
|
HDF5_TEST_TOOLS
|
|
HDF5_TEST_EXAMPLES
|
|
HDF5_TEST_SWMR
|
|
HDF5_TEST_FORTRAN
|
|
HDF5_TEST_CPP
|
|
HDF5_TEST_JAVA
|
|
|
|
(ADB - 2020/01/15, HDFFV-11001)
|
|
|
|
- Added Clang sanitizers to CMake for analyzer support if compiler is clang.
|
|
|
|
Added CMake code and files to execute the Clang sanitizers if
|
|
HDF5_ENABLE_SANITIZERS is enabled and the USE_SANITIZER option
|
|
is set to one of the following:
|
|
Address
|
|
Memory
|
|
MemoryWithOrigins
|
|
Undefined
|
|
Thread
|
|
Leak
|
|
'Address;Undefined'
|
|
|
|
(ADB - 2019/12/12, TRILAB-135)
|
|
|
|
- Update CMake for VS2019 support
|
|
|
|
CMake added support for VS2019 in version 3.15. Changes to the CMake
|
|
generator setting required changes to scripts. Also updated version
|
|
references in CMake files as necessary.
|
|
|
|
(ADB - 2019/11/18, HDFFV-10962)
|
|
|
|
- Update CMake options to match new autotools options
|
|
|
|
Add configure options (autotools - CMake):
|
|
enable-asserts HDF5_ENABLE_ASSERTS
|
|
enable-symbols HDF5_ENABLE_SYMBOLS
|
|
enable-profiling HDF5_ENABLE_PROFILING
|
|
enable-optimization HDF5_ENABLE_OPTIMIZATION
|
|
In addition NDEBUG is no longer forced defined and relies on the CMake
|
|
process.
|
|
|
|
(ADB - 2019/10/07, HDFFV-100901, HDFFV-10637, TRILAB-97)
|
|
|
|
|
|
Library:
|
|
--------
|
|
- Improved performance of H5Sget_select_elem_pointlist
|
|
|
|
Modified library to cache the point after the last block of points
|
|
retrieved by H5Sget_select_elem_pointlist, so a subsequent call to the
|
|
same function to retrieve the next block of points from the list can
|
|
proceed immediately without needing to iterate over the point list.
|
|
|
|
(NAF - 2021/01/19)
|
|
|
|
- Replaced H5E_ATOM with H5E_ID in H5Epubgen.h
|
|
|
|
The term "atom" is archaic and not in line with current HDF5 library
|
|
terminology, which uses "ID" instead. "Atom" has mostly been purged
|
|
from the library internals and this change removes H5E_ATOM from
|
|
the H5Epubgen.h (exposed via H5Epublic.h) and replaces it with
|
|
H5E_ID.
|
|
|
|
(DER - 2020/11/24, HDFFV-11190)
|
|
|
|
- Add new public function H5Ssel_iter_reset
|
|
|
|
This function resets a dataspace selection iterator back to an
|
|
initial state so that it may be used for iteration once more.
|
|
This can be useful when needing to iterate over a selection
|
|
multiple times without having to repeatedly create/destroy
|
|
a selection iterator for that dataspace selection.
|
|
|
|
(JTH - 2020/09/18)
|
|
|
|
- Remove HDFS VFD stubs
|
|
|
|
The original implementation of the HDFS VFD included non-functional
|
|
versions of the following public API calls when the HDFS VFD is
|
|
not built as a part of the HDF5 library:
|
|
|
|
* H5FD_hdfs_init()
|
|
* H5Pget_fapl_hdfs()
|
|
* H5Pset_fapl_hdfs()
|
|
|
|
They will remain present in HDF5 1.10 and HDF5 1.12 releases
|
|
for binary compatibility purposes but have been removed as of 1.14.0.
|
|
|
|
Note that this has nothing to do with the real HDFS VFD API calls
|
|
that are fully functional when the HDFS VFD is configured and built.
|
|
|
|
We simply changed:
|
|
|
|
#ifdef LIBHDFS
|
|
<real API call>
|
|
#else
|
|
<useless stub>
|
|
#endif
|
|
|
|
to:
|
|
|
|
#ifdef LIBHDFS
|
|
<real API call>
|
|
#endif
|
|
|
|
Which is how the other optional VFDs are handled.
|
|
|
|
(DER - 2020/08/27)
|
|
|
|
- Add Mirror VFD
|
|
|
|
Use TCP/IP sockets to perform write-only (W/O) file I/O on a remote
|
|
machine. Must be used in conjunction with the Splitter VFD.
|
|
|
|
(JOS - 2020/03/13, TBD)
|
|
|
|
- Add Splitter VFD
|
|
|
|
Maintain separate R/W and W/O channels for "concurrent" file writes
|
|
to two files using a single HDF5 file handle.
|
|
|
|
(JOS - 2020/03/13, TBD)
|
|
|
|
- Refactored public exposure of haddr_t type in favor of "object tokens"
|
|
|
|
To better accommodate HDF5 VOL connectors where "object addresses in a file"
|
|
may not make much sense, the following changes were made to the library:
|
|
|
|
* Introduced new H5O_token_t "object token" type, which represents a
|
|
unique and permanent identifier for referencing an HDF5 object within
|
|
a container; these "object tokens" are meant to replace object addresses.
|
|
Along with the new type, a new H5Oopen_by_token API call was introduced
|
|
to open an object by a token, similar to how object addresses were
|
|
previously used with H5Oopen_by_addr.
|
|
|
|
* Introduced new H5Lget_info2, H5Lget_info_by_idx2, H5Literate2, H5Literate_by_name2,
|
|
H5Lvisit2 and H5Lvisit_by_name2 API calls, along with their associated H5L_info2_t
|
|
struct and H5L_iterate2_t callback function, which work with the newly-introduced
|
|
object tokens, instead of object addresses. The original functions have been
|
|
renamed to version 1 functions and are deprecated in favor of the new version 2
|
|
functions. The H5L_info_t and H5L_iterate_t types have been renamed to version 1
|
|
types and are now deprecated in favor of their version 2 counterparts. For each of
|
|
the functions and types, compatibility macros take place of the original symbols.
|
|
|
|
* Introduced new H5Oget_info3, H5Oget_info_by_name3, H5Oget_info_by_idx3,
|
|
H5Ovisit3 and H5Ovisit_by_name3 API calls, along with their associated H5O_info2_t
|
|
struct and H5O_iterate2_t callback function, which work with the newly-introduced
|
|
object tokens, instead of object addresses. The version 2 functions are now
|
|
deprecated in favor of the version 3 functions. The H5O_info_t and H5O_iterate_t
|
|
types have been renamed to version 1 types and are now deprecated in favor of their
|
|
version 2 counterparts. For each, compatibility macros take place of the original
|
|
symbols.
|
|
|
|
* Introduced new H5Oget_native_info, H5Oget_native_info_by_name and
|
|
H5Oget_native_info_by_idx API calls, along with their associated H5O_native_info_t
|
|
struct, which are used to retrieve the native HDF5 file format-specific information
|
|
about an object. This information (such as object header info and B-tree/heap info)
|
|
has been removed from the new H5O_info2_t struct so that the more generic
|
|
H5Oget_info(_by_name/_by_idx)3 routines will not try to retrieve it for non-native
|
|
VOL connectors.
|
|
|
|
* Added new H5Otoken_cmp, H5Otoken_to_str and H5Otoken_from_str routines to compare
|
|
two object tokens, convert an object token into a nicely-readable string format and
|
|
to convert an object token string back into a real object token, respectively.
|
|
|
|
(DER, QAK, JTH - 2020/01/16)
|
|
|
|
- Add new public function H5Sselect_adjust.
|
|
|
|
This function shifts a dataspace selection by a specified logical offset
|
|
within the dataspace extent. This can be useful for VOL developers to
|
|
implement chunked datasets.
|
|
|
|
(NAF - 2019/11/18)
|
|
|
|
- Add new public function H5Sselect_project_intersection.
|
|
|
|
This function computes the intersection between two dataspace selections
|
|
and projects that intersection into a third selection. This can be useful
|
|
for VOL developers to implement chunked or virtual datasets.
|
|
|
|
(NAF - 2019/11/13, ID-148)
|
|
|
|
- Add new public function H5VLget_file_type.
|
|
|
|
This function returns a datatype equivalent to the supplied datatype but
|
|
with the location set to be in the file. This datatype can then be used
|
|
with H5Tconvert to convert data between file and in-memory representation.
|
|
This funcition is intended for use only by VOL connector developers.
|
|
|
|
(NAF - 2019/11/08, ID-127)
|
|
|
|
|
|
Parallel Library:
|
|
-----------------
|
|
-
|
|
|
|
|
|
Fortran Library:
|
|
----------------
|
|
- Add wrappers for H5Pset/get_file_locking() API calls
|
|
|
|
h5pget_file_locking_f()
|
|
h5pset_file_locking_f()
|
|
|
|
See the configure option discussion for HDFFV-11092 (above) for more
|
|
information on the file locking feature and how it's controlled.
|
|
|
|
(DER - 2020/07/30, HDFFV-11092)
|
|
|
|
C++ Library:
|
|
------------
|
|
- Add wrappers for H5Pset/get_file_locking() API calls
|
|
|
|
FileAccPropList::setFileLocking()
|
|
FileAccPropList::getFileLocking()
|
|
|
|
See the configure option discussion for HDFFV-11092 (above) for more
|
|
information on the file locking feature and how it's controlled.
|
|
|
|
(DER - 2020/07/30, HDFFV-11092)
|
|
|
|
|
|
Java Library:
|
|
----------------
|
|
- Replaced HDF5AtomException with HDF5IdException
|
|
|
|
Since H5E_ATOM changed to H5E_ID in the C library, the Java exception
|
|
that wraps the error category was also renamed. Its functionality
|
|
remains unchanged aside from the name.
|
|
|
|
(See also the HDFFV-11190 note in the C library section)
|
|
|
|
(DER - 2020/11/24, HDFFV-11190)
|
|
|
|
- Added new H5S functions.
|
|
|
|
H5Sselect_copy, H5Sselect_shape_same, H5Sselect_adjust,
|
|
H5Sselect_intersect_block, H5Sselect_project_intersection,
|
|
H5Scombine_hyperslab, H5Smodify_select, H5Scombine_select
|
|
wrapper functions added.
|
|
|
|
(ADB - 2020/10/27, HDFFV-10868)
|
|
|
|
- Add wrappers for H5Pset/get_file_locking() API calls
|
|
|
|
H5Pset_file_locking()
|
|
H5Pget_use_file_locking()
|
|
H5Pget_ignore_disabled_file_locking()
|
|
|
|
Unlike the C++ and Fortran wrappers, there are separate getters for the
|
|
two file locking settings, each of which returns a boolean value.
|
|
|
|
See the configure option discussion for HDFFV-11092 (above) for more
|
|
information on the file locking feature and how it's controlled.
|
|
|
|
(DER - 2020/07/30, HDFFV-11092)
|
|
|
|
- Added ability to test java library with VOLs.
|
|
|
|
Created new CMake script that combines the java and vol test scripts.
|
|
|
|
(ADB - 2020/02/03, HDFFV-10996)
|
|
|
|
- Tests fail for non-English locale.
|
|
|
|
In the JUnit tests with a non-English locale, only the part before
|
|
the decimal comma is replaced by XXXX and this leads to a comparison
|
|
error. Changed the regex for the Time substitution.
|
|
|
|
(ADB - 2020/01/09, HDFFV-10995)
|
|
|
|
|
|
Tools:
|
|
------
|
|
- h5repack added help text for user-defined filters.
|
|
|
|
Added help text line that states the valid values of the filter flag
|
|
for user-defined filters;
|
|
filter_flag: 1 is OPTIONAL or 0 is MANDATORY
|
|
|
|
(ADB - 2021/01/14, HDFFV-11099)
|
|
|
|
- Added h5delete tool
|
|
|
|
Deleting HDF5 storage when using the VOL can be tricky when the VOL
|
|
does not create files. The h5delete tool is a simple wrapper around
|
|
the H5Fdelete() API call that uses the VOL specified in the
|
|
HDF5_VOL_CONNECTOR environment variable to delete a "file". If
|
|
the call to H5Fdelete() fails, the tool will attempt to use
|
|
the POSIX remove(3) call to remove the file.
|
|
|
|
Note that the HDF5 library does currently have support for
|
|
H5Fdelete() in the native VOL connector.
|
|
|
|
(DER - 2020/12/16)
|
|
|
|
- h5repack added options to control how external links are handled.
|
|
|
|
Currently h5repack preserves external links and cannot copy and merge
|
|
data from the external files. Two options, merge and prune, were added to
|
|
control how to merge data from an external link into the resulting file.
|
|
--merge Follow external soft link recursively and merge data.
|
|
--prune Do not follow external soft links and remove link.
|
|
--merge --prune Follow external link, merge data and remove dangling link.
|
|
|
|
(ADB - 2020/08/05, HDFFV-9984)
|
|
|
|
- h5repack was fixed to repack the reference attributes properly.
|
|
The code line that checks if the update of reference inside a compound
|
|
datatype is misplaced outside the code block loop that carries out the
|
|
check. In consequence, the next attribute that is not the reference
|
|
type was repacked again as the reference type and caused the failure of
|
|
repacking. The fix is to move the corresponding code line to the correct
|
|
code block.
|
|
|
|
(KY -2020/02/07, HDFFV-11014)
|
|
|
|
- h5diff was updated to use the new reference APIs.
|
|
|
|
h5diff uses the new reference APIs to compare references.
|
|
Attribute references can also be compared.
|
|
|
|
(ADB - 2019/12/19, HDFFV-10980)
|
|
|
|
- h5dump and h5ls were updated to use the new reference APIs.
|
|
|
|
The tools library now use the new reference APIs to inspect a
|
|
file. Also the DDL spec was updated to reflect the format
|
|
changes produced with the new APIs. The export API and support
|
|
functions in the JNI were updated to match.
|
|
|
|
(ADB - 2019/12/06, HDFFV-10876 and HDFFV-10877)
|
|
|
|
|
|
High-Level APIs:
|
|
---------------
|
|
-
|
|
|
|
C Packet Table API
|
|
------------------
|
|
-
|
|
|
|
Internal header file
|
|
--------------------
|
|
-
|
|
|
|
Documentation
|
|
-------------
|
|
-
|
|
|
|
Support for new platforms, languages and compilers.
|
|
=======================================
|
|
-
|
|
|
|
Bug Fixes since HDF5-1.12.0 release
|
|
==================================
|
|
Library
|
|
-------
|
|
- Fixed problems with vlens and refs inside compound using
|
|
H5VLget_file_type()
|
|
|
|
Modified library to properly ref count H5VL_object_t structs and only
|
|
consider file vlen and reference types to be equal if their files are
|
|
the same.
|
|
|
|
(NAF - 2021/01/22)
|
|
|
|
- Creation of dataset with optional filter
|
|
|
|
When the combination of type, space, etc doesn't work for filter
|
|
and the filter is optional, it was supposed to be skipped but it was
|
|
not skipped and the creation failed.
|
|
|
|
Allowed the creation of the dataset in such situation.
|
|
|
|
(BMR - 2020/08/13, HDFFV-10933)
|
|
|
|
- Explicitly declared dlopen to use RTLD_LOCAL
|
|
|
|
dlopen documentation states that if neither RTLD_GLOBAL nor
|
|
RTLD_LOCAL are specified, then the default behavior is unspecified.
|
|
The default on linux is usually RTLD_LOCAL while macos will default
|
|
to RTLD_GLOBAL.
|
|
|
|
(ADB - 2020/08/12, HDFFV-11127)
|
|
|
|
- H5Sset_extent_none() sets the dataspace class to H5S_NO_CLASS which
|
|
causes asserts/errors when passed to other dataspace API calls.
|
|
|
|
H5S_NO_CLASS is an internal class value that should not have been
|
|
exposed via a public API call.
|
|
|
|
In debug builds of the library, this can cause asserts to trip. In
|
|
non-debug builds, it will produce normal library errors.
|
|
|
|
The new library behavior is for H5Sset_extent_none() to convert
|
|
the dataspace into one of type H5S_NULL, which is better handled
|
|
by the library and easier for developers to reason about.
|
|
|
|
(DER - 2020/07/27, HDFFV-11027)
|
|
|
|
- Fixed issues CVE-2018-13870 and CVE-2018-13869
|
|
|
|
When a buffer overflow occurred because a name length was corrupted
|
|
and became very large, h5dump crashed on memory access violation.
|
|
|
|
A check for reading pass the end of the buffer was added to multiple
|
|
locations to prevent the crashes and h5dump now simply fails with an
|
|
error message when this error condition occurs.
|
|
|
|
(BMR - 2020/07/22, HDFFV-11120 and HDFFV-11121)
|
|
|
|
- Fixed the segmentation fault when reading attributes with multiple threads
|
|
|
|
It was reported that the reading of attributes with variable length string
|
|
datatype will crash with segmentation fault particularly when the number of
|
|
threads is high (>16 threads). The problem was due to the file pointer that
|
|
was set in the variable length string datatype for the attribute. That file
|
|
pointer was already closed when the attribute was accessed.
|
|
|
|
The problem was fixed by setting the file pointer to the current opened file pointer
|
|
when the attribute was accessed. Similar patch up was done before when reading
|
|
dataset with variable length string datatype.
|
|
|
|
(VC - 2020/07/13, HDFFV-11080)
|
|
|
|
- Fixed CVE-2020-10810
|
|
|
|
The tool h5clear produced a segfault during an error recovery in
|
|
the superblock decoding. An internal pointer was reset to prevent
|
|
further accessing when it is not assigned with a value.
|
|
|
|
(BMR - 2020/06/29, HDFFV-11053)
|
|
|
|
- Fixed CVE-2018-17435
|
|
|
|
The tool h52gif produced a segfault when the size of an attribute
|
|
message was corrupted and caused a buffer overflow.
|
|
|
|
The problem was fixed by verifying the attribute message's size
|
|
against the buffer size before accessing the buffer. h52gif was
|
|
also fixed to display the failure instead of silently exiting
|
|
after the segfault was eliminated.
|
|
|
|
(BMR - 2020/06/19, HDFFV-10591)
|
|
|
|
|
|
Java Library:
|
|
----------------
|
|
- The H5FArray.java class, in which virtually the entire execution time
|
|
is spent using the HDFNativeData method that converts from an array
|
|
of bytes to an array of the destination Java type.
|
|
|
|
1. Convert the entire byte array into a 1-d array of the desired type,
|
|
rather than performing 1 conversion per row;
|
|
2. Use the Java Arrays method copyOfRange to grab the section of the
|
|
array from (1) that is desired to be inserted into the destination array.
|
|
|
|
(PGT,ADB - 2020/12/13, HDFFV-10865)
|
|
|
|
- Added ability to test java library with VOLs.
|
|
|
|
Created new CMake script that combines the java and vol test scripts.
|
|
|
|
(ADB - 2020/02/03, HDFFV-10996)
|
|
|
|
- Tests fail for non-English locale.
|
|
|
|
In the JUnit tests with a non-English locale, only the part before
|
|
the decimal comma is replaced by XXXX and this leads to a comparison
|
|
error. Changed the regex for the Time substitution.
|
|
|
|
(ADB - 2020/01/09, HDFFV-10995)
|
|
|
|
|
|
Configuration
|
|
-------------
|
|
- Reclassify CMake messages, to allow new modes and --log-level option
|
|
|
|
CMake message commands have a mode argument. By default, STATUS mode
|
|
was chosen for any non-error message. CMake version 3.15 added additional
|
|
modes, NOTICE, VERBOSE, DEBUG and TRACE. All message commands with a mode
|
|
of STATUS were reviewed and most were reclassified as VERBOSE. The new
|
|
mode was protected by a check for a CMake version of at least 3.15. If CMake
|
|
version 3.17 or above is used, the user can use the command line option
|
|
of "--log-level" to further restrict which message commands are displayed.
|
|
|
|
(ADB - 2021/01/11, HDFFV-11144)
|
|
|
|
- Fixes Autotools determination of the stat struct having an st_blocks field
|
|
|
|
A missing parenthesis in an autoconf macro prevented building the test
|
|
code used to determine if the stat struct contains the st_blocks field.
|
|
Now that the test functions correctly, the H5_HAVE_STAT_ST_BLOCKS #define
|
|
found in H5pubconf.h will be defined correctly on both the Autotools and
|
|
CMake. This #define is only used in the tests and does not affect the
|
|
HDF5 C library.
|
|
|
|
(DER - 2021/01/07, HDFFV-11201)
|
|
|
|
|
|
Tools
|
|
-----
|
|
- Fixed tools argument parsing.
|
|
|
|
Tools parsing used the length of the option from the long array to match
|
|
the option from the command line. This incorrectly matched a shorter long
|
|
name option that was happened to be a subset of another long option.
|
|
Changed to match whole names.
|
|
|
|
(ADB - 2021/01/19, HDFFV-11106)
|
|
|
|
- The tools library was updated by standardizing the error stack process.
|
|
|
|
General sequence is:
|
|
h5tools_setprogname(PROGRAMNAME);
|
|
h5tools_setstatus(EXIT_SUCCESS);
|
|
h5tools_init();
|
|
... process the command-line (check for error-stack enable) ...
|
|
h5tools_error_report();
|
|
... (do work) ...
|
|
h5diff_exit(ret);
|
|
|
|
(ADB - 2020/07/20, HDFFV-11066)
|
|
|
|
- h5diff fixed a command line parsing error.
|
|
|
|
h5diff would ignore the argument to -d (delta) if it is smaller than DBL_EPSILON.
|
|
The macro H5_DBL_ABS_EQUAL was removed and a direct value comparision was used.
|
|
|
|
(ADB - 2020/07/20, HDFFV-10897)
|
|
|
|
- h5diff added a command line option to ignore attributes.
|
|
|
|
h5diff would ignore all objects with a supplied path if the exclude-path argument is used.
|
|
Adding the exclude-attribute argument will only eclude attributes, with the supplied path,
|
|
from comparision.
|
|
|
|
(ADB - 2020/07/20, HDFFV-5935)
|
|
|
|
- h5diff added another level to the verbose argument to print filenames.
|
|
|
|
Added verbose level 3 that is level 2 plus the filenames. The levels are:
|
|
0 : Identical to '-v' or '--verbose'
|
|
1 : All level 0 information plus one-line attribute status summary
|
|
2 : All level 1 information plus extended attribute status report
|
|
3 : All level 2 information plus file names
|
|
|
|
(ADB - 2020/07/20, HDFFV-10005)
|
|
|
|
- h5repack was fixed to repack the reference attributes properly.
|
|
|
|
The code line that checks if the update of reference inside a compound
|
|
datatype is misplaced outside the code block loop that carries out the
|
|
check. In consequence, the next attribute that is not the reference
|
|
type was repacked again as the reference type and caused the failure of
|
|
repacking. The fix is to move the corresponding code line to the correct
|
|
code block.
|
|
|
|
(KY -2020/02/10, HDFFV-11014)
|
|
|
|
- h5diff was updated to use the new reference APIs.
|
|
|
|
h5diff uses the new reference APIs to compare references.
|
|
Attribute references can also be compared.
|
|
|
|
(ADB - 2019/12/19, HDFFV-10980)
|
|
|
|
- h5dump and h5ls were updated to use the new reference APIs.
|
|
|
|
The tools library now use the new reference APIs to inspect a
|
|
file. Also the DDL spec was updated to reflect the format
|
|
changes produced with the new APIs. The export API and support
|
|
functions in the JNI were updated to match.
|
|
|
|
(ADB - 2019/12/06, HDFFV-10876 and HDFFV-10877)
|
|
|
|
|
|
Performance
|
|
-------------
|
|
-
|
|
|
|
|
|
Fortran API
|
|
--------
|
|
- Corrected INTERFACE INTENT(IN) to INTENT(OUT) for buf_size in h5fget_file_image_f.
|
|
|
|
(MSB - 2020/02/18, HDFFV-11029)
|
|
|
|
|
|
High-Level Library
|
|
------
|
|
-
|
|
|
|
|
|
Fortran High-Level APIs:
|
|
------
|
|
-
|
|
|
|
|
|
Documentation
|
|
-------------
|
|
-
|
|
|
|
|
|
F90 APIs
|
|
--------
|
|
-
|
|
|
|
|
|
C++ APIs
|
|
--------
|
|
-
|
|
|
|
|
|
Testing
|
|
-------
|
|
- Stopped java/test/junit.sh.in installing libs for testing under ${prefix}
|
|
|
|
Lib files needed are now copied to a subdirectory in the java/test
|
|
directory, and on Macs the loader path for libhdf5.xxxs.so is changed
|
|
in the temporary copy of libhdf5_java.dylib.
|
|
|
|
(LRK, 2020/07/02, HDFFV-11063)
|
|
|
|
|
|
Supported Platforms
|
|
===================
|
|
|
|
Linux 2.6.32-696.16.1.el6.ppc64 gcc (GCC) 4.4.7 20120313 (Red Hat 4.4.7-18)
|
|
#1 SMP ppc64 GNU/Linux g++ (GCC) 4.4.7 20120313 (Red Hat 4.4.7-18)
|
|
(ostrich) GNU Fortran (GCC) 4.4.7 20120313 (Red Hat 4.4.7-18)
|
|
IBM XL C/C++ V13.1
|
|
IBM XL Fortran V15.1
|
|
|
|
Linux 3.10.0-327.10.1.el7 GNU C (gcc), Fortran (gfortran), C++ (g++)
|
|
#1 SMP x86_64 GNU/Linux compilers:
|
|
(kituo/moohan) Version 4.8.5 20150623 (Red Hat 4.8.5-4)
|
|
Version 4.9.3, Version 5.2.0,
|
|
Intel(R) C (icc), C++ (icpc), Fortran (icc)
|
|
compilers:
|
|
Version 17.0.0.098 Build 20160721
|
|
MPICH 3.1.4 compiled with GCC 4.9.3
|
|
|
|
SunOS 5.11 32- and 64-bit Sun C 5.12 SunOS_sparc
|
|
(emu) Sun Fortran 95 8.6 SunOS_sparc
|
|
Sun C++ 5.12 SunOS_sparc
|
|
|
|
Windows 10 x64 Visual Studio 2015 w/ Intel Fortran 18 (cmake)
|
|
Visual Studio 2017 w/ Intel Fortran 19 (cmake)
|
|
Visual Studio 2019 w/ Intel Fortran 19 (cmake)
|
|
Visual Studio 2019 w/ MSMPI 10.1 (cmake)
|
|
|
|
Mac OS X Yosemite 10.10.5 Apple clang/clang++ version 6.1 from Xcode 7.0
|
|
64-bit gfortran GNU Fortran (GCC) 4.9.2
|
|
(osx1010dev/osx1010test) Intel icc/icpc/ifort version 15.0.3
|
|
|
|
Mac OS X El Capitan 10.11.6 Apple clang/clang++ version 7.3.0 from Xcode 7.3
|
|
64-bit gfortran GNU Fortran (GCC) 5.2.0
|
|
(osx1011dev/osx1011test) Intel icc/icpc/ifort version 16.0.2
|
|
|
|
Mac OS Sierra 10.12.6 Apple LLVM version 8.1.0 (clang/clang++-802.0.42)
|
|
64-bit gfortran GNU Fortran (GCC) 7.1.0
|
|
(swallow/kite) Intel icc/icpc/ifort version 17.0.2
|
|
|
|
|
|
Tested Configuration Features Summary
|
|
=====================================
|
|
|
|
In the tables below
|
|
y = tested
|
|
n = not tested in this release
|
|
C = Cluster
|
|
W = Workstation
|
|
x = not working in this release
|
|
dna = does not apply
|
|
( ) = footnote appears below second table
|
|
<blank> = testing incomplete on this feature or platform
|
|
|
|
Platform C F90/ F90 C++ zlib SZIP
|
|
parallel F2003 parallel
|
|
Solaris2.11 32-bit n y/y n y y y
|
|
Solaris2.11 64-bit n y/n n y y y
|
|
Windows 10 y y/y n y y y
|
|
Windows 10 x64 y y/y n y y y
|
|
Mac OS X Mountain Lion 10.8.5 64-bit n y/y n y y y
|
|
Mac OS X Mavericks 10.9.5 64-bit n y/y n y y ?
|
|
Mac OS X Yosemite 10.10.5 64-bit n y/y n y y ?
|
|
Mac OS X El Capitan 10.11.6 64-bit n y/y n y y ?
|
|
CentOS 6.7 Linux 2.6.18 x86_64 GNU n y/y n y y y
|
|
CentOS 6.7 Linux 2.6.18 x86_64 Intel n y/y n y y y
|
|
CentOS 6.7 Linux 2.6.32 x86_64 PGI n y/y n y y y
|
|
CentOS 7.2 Linux 2.6.32 x86_64 GNU y y/y y y y y
|
|
CentOS 7.2 Linux 2.6.32 x86_64 Intel n y/y n y y y
|
|
Linux 2.6.32-573.18.1.el6.ppc64 n y/n n y y y
|
|
|
|
|
|
Platform Shared Shared Shared Thread-
|
|
C libs F90 libs C++ libs safe
|
|
Solaris2.11 32-bit y y y y
|
|
Solaris2.11 64-bit y y y y
|
|
Windows 10 y y y y
|
|
Windows 10 x64 y y y y
|
|
Mac OS X Mountain Lion 10.8.5 64-bit y n y y
|
|
Mac OS X Mavericks 10.9.5 64-bit y n y y
|
|
Mac OS X Yosemite 10.10.5 64-bit y n y y
|
|
Mac OS X El Capitan 10.11.6 64-bit y n y y
|
|
CentOS 6.7 Linux 2.6.18 x86_64 GNU y y y y
|
|
CentOS 6.7 Linux 2.6.18 x86_64 Intel y y y n
|
|
CentOS 6.7 Linux 2.6.32 x86_64 PGI y y y n
|
|
CentOS 7.2 Linux 2.6.32 x86_64 GNU y y y n
|
|
CentOS 7.2 Linux 2.6.32 x86_64 Intel y y y n
|
|
Linux 2.6.32-573.18.1.el6.ppc64 y y y n
|
|
|
|
Compiler versions for each platform are listed in the preceding
|
|
"Supported Platforms" table.
|
|
|
|
|
|
More Tested Platforms
|
|
=====================
|
|
The following platforms are not supported but have been tested for this release.
|
|
|
|
Linux 2.6.32-573.22.1.el6 GNU C (gcc), Fortran (gfortran), C++ (g++)
|
|
#1 SMP x86_64 GNU/Linux compilers:
|
|
(mayll/platypus) Version 4.4.7 20120313
|
|
Version 4.9.3, 5.3.0, 6.2.0
|
|
PGI C, Fortran, C++ for 64-bit target on
|
|
x86-64;
|
|
Version 17.10-0
|
|
Intel(R) C (icc), C++ (icpc), Fortran (icc)
|
|
compilers:
|
|
Version 17.0.4.196 Build 20170411
|
|
MPICH 3.1.4 compiled with GCC 4.9.3
|
|
|
|
Linux 3.10.0-327.18.2.el7 GNU C (gcc) and C++ (g++) compilers
|
|
#1 SMP x86_64 GNU/Linux Version 4.8.5 20150623 (Red Hat 4.8.5-4)
|
|
(jelly) with NAG Fortran Compiler Release 6.1(Tozai)
|
|
GCC Version 7.1.0
|
|
OpenMPI 3.0.0-GCC-7.2.0-2.29
|
|
Intel(R) C (icc) and C++ (icpc) compilers
|
|
Version 17.0.0.098 Build 20160721
|
|
with NAG Fortran Compiler Release 6.1(Tozai)
|
|
|
|
Linux 3.10.0-327.10.1.el7 MPICH 3.2 compiled with GCC 5.3.0
|
|
#1 SMP x86_64 GNU/Linux
|
|
(moohan)
|
|
|
|
Linux 2.6.32-573.18.1.el6.ppc64 MPICH mpich 3.1.4 compiled with
|
|
#1 SMP ppc64 GNU/Linux IBM XL C/C++ for Linux, V13.1
|
|
(ostrich) and IBM XL Fortran for Linux, V15.1
|
|
|
|
Fedora32 5.8.18-200.fc32.x86_64
|
|
#1 SMP x86_64 GNU/Linux GNU gcc (GCC) 10.2.1 20201016 (Red Hat 10.2.1-6)
|
|
GNU Fortran (GCC) 10.2.1 20201016 (Red Hat 10.2.1-6)
|
|
clang version 10.0.1 (Fedora 10.0.1-3.fc32)
|
|
(cmake and autotools)
|
|
|
|
Ubuntu20.10 -5.8.0-29-generic-x86_64
|
|
#31-Ubuntu SMP x86_64 GNU/Linux GNU gcc (GCC) 10.2.0-13ubuntu1
|
|
GNU Fortran (GCC) 10.2.0-13ubuntu1
|
|
(cmake and autotools)
|
|
|
|
|
|
Known Problems
|
|
==============
|
|
CMake files do not behave correctly with paths containing spaces.
|
|
Do not use spaces in paths because the required escaping for handling spaces
|
|
results in very complex and fragile build files.
|
|
ADB - 2019/05/07
|
|
|
|
At present, metadata cache images may not be generated by parallel
|
|
applications. Parallel applications can read files with metadata cache
|
|
images, but since this is a collective operation, a deadlock is possible
|
|
if one or more processes do not participate.
|
|
|
|
CPP ptable test fails on both VS2017 and VS2019 with Intel compiler, JIRA
|
|
issue: HDFFV-10628. This test will pass with VS2015 with Intel compiler.
|
|
|
|
Known problems in previous releases can be found in the HISTORY*.txt files
|
|
in the HDF5 source. Please report any new problems found to
|
|
help@hdfgroup.org.
|
|
|
|
|
|
CMake vs. Autotools installations
|
|
=================================
|
|
While both build systems produce similar results, there are differences.
|
|
Each system produces the same set of folders on linux (only CMake works
|
|
on standard Windows); bin, include, lib and share. Autotools places the
|
|
COPYING and RELEASE.txt file in the root folder, CMake places them in
|
|
the share folder.
|
|
|
|
The bin folder contains the tools and the build scripts. Additionally, CMake
|
|
creates dynamic versions of the tools with the suffix "-shared". Autotools
|
|
installs one set of tools depending on the "--enable-shared" configuration
|
|
option.
|
|
build scripts
|
|
-------------
|
|
Autotools: h5c++, h5cc, h5fc
|
|
CMake: h5c++, h5cc, h5hlc++, h5hlcc
|
|
|
|
The include folder holds the header files and the fortran mod files. CMake
|
|
places the fortran mod files into separate shared and static subfolders,
|
|
while Autotools places one set of mod files into the include folder. Because
|
|
CMake produces a tools library, the header files for tools will appear in
|
|
the include folder.
|
|
|
|
The lib folder contains the library files, and CMake adds the pkgconfig
|
|
subfolder with the hdf5*.pc files used by the bin/build scripts created by
|
|
the CMake build. CMake separates the C interface code from the fortran code by
|
|
creating C-stub libraries for each Fortran library. In addition, only CMake
|
|
installs the tools library. The names of the szip libraries are different
|
|
between the build systems.
|
|
|
|
The share folder will have the most differences because CMake builds include
|
|
a number of CMake specific files for support of CMake's find_package and support
|
|
for the HDF5 Examples CMake project.
|
|
|