summaryrefslogtreecommitdiffstats
path: root/release_docs/RELEASE.txt
diff options
context:
space:
mode:
Diffstat (limited to 'release_docs/RELEASE.txt')
-rwxr-xr-x[-rw-r--r--]release_docs/RELEASE.txt1305
1 files changed, 914 insertions, 391 deletions
diff --git a/release_docs/RELEASE.txt b/release_docs/RELEASE.txt
index c1adf8d..0c3873b 100644..100755
--- a/release_docs/RELEASE.txt
+++ b/release_docs/RELEASE.txt
@@ -1,576 +1,1090 @@
-HDF5 version 1.10.1 released on 2017-04-27
+HDF5 version 1.10.2 released on 2018-03-29
================================================================================
-INTRODUCTION
-
-This document describes the differences between HDF5-1.10.0-patch1 and
-HDF5 1.10.1, and contains information on the platforms tested and known
-problems in HDF5-1.10.1. For more details check the HISTORY*.txt files
-in the HDF5 source.
-
-Links to HDF5 1.10.1 source code, documentation, and additional materials can
-be found on The HDF5 web page at:
- https://support.hdfgroup.org/HDF5/
+INTRODUCTION
-The HDF5 1.10.1 release can be obtained from:
+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.
- https://support.hdfgroup.org/HDF5/release/obtain5.html
+Note that documentation in the links below will be updated at the time of each
+final release.
-User documentation for the snapshot can be accessed directly at this location:
+Links to HDF5 documentation can be found on The HDF5 web page:
- https://support.hdfgroup.org/HDF5/doc/
+ https://portal.hdfgroup.org/display/HDF5/HDF5
-New features in the HDF5-1.10.x release series, including brief general
-descriptions of some new and modified APIs, are described in the "New Features
-in HDF5 Release 1.10" document:
+The official HDF5 releases can be obtained from:
- https://support.hdfgroup.org/HDF5/docNewFeatures/index.html
+ https://www.hdfgroup.org/downloads/hdf5/
-All new and modified APIs are listed in detail in the "HDF5 Software Changes
-from Release to Release" document, in the section "Release 10.1 (current
-release) versus Release 1.10.0
+Changes from Release to Release and New Features in the HDF5-1.10.x release series
+can be found at:
- https://support.hdfgroup.org/HDF5/doc/ADGuide/Changes.html
+ 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
+ help@hdfgroup.org
CONTENTS
-- Major New Features Introduced in HDF5 1.10.1
-- Other New Features and Enhancements
-- Support for New Platforms, Languages, and Compilers
-- Bug Fixes since HDF5-1.10.0-patch1
+- New Features
+- Support for new platforms and languages
+- Bug Fixes since HDF5-1.10.1
- Supported Platforms
- Tested Configuration Features Summary
- More Tested Platforms
- Known Problems
-Major New Features Introduced in HDF5 1.10.1
-============================================
+New Features
+============
-For links to the RFCs and documentation in this section please view
-https://support.hdfgroup.org/HDF5/docNewFeatures in a web browser.
+ Configuration and Build Systems:
+ --------------------------------
+ - CMake builds
+ --------------
-________________________________________
-Metadata Cache Image
-________________________________________
+ - Changed minimum CMake required version to 3.10.
- HDF5 metadata is typically small, and scattered throughout the HDF5 file.
- This can affect performance, particularly on large HPC systems. The
- Metadata Cache Image feature can improve performance by writing the
- metadata cache in a single block on file close, and then populating the
- cache with the contents of this block on file open, thus avoiding the many
- small I/O operations that would otherwise be required on file open and
- close. See the RFC for complete details regarding this feature. Also,
- see the Fine Tuning the Metadata Cache documentation.
+ This change removed the need to support a copy of the FindMPI.cmake module,
+ which has been removed, along with its subfolder in the config/cmake_ext_mod
+ location.
- 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.
+ (ADB - 2018/03/09)
-________________________________________
-Metadata Cache Evict on Close
-________________________________________
+ - Added pkg-config file generation
- The HDF5 library's metadata cache is fairly conservative about holding on
- to HDF5 object metadata (object headers, chunk index structures, etc.),
- which can cause the cache size to grow, resulting in memory pressure on
- an application or system. The "evict on close" property will cause all
- metadata for an object to be evicted from the cache as long as metadata
- is not referenced from any other open object. See the Fine Tuning the
- Metadata Cache documentation for information on the APIs.
+ Added pkg-config file generation for the C, C++, HL, and HL C++ libraries.
+ In addition, builds on Linux will create h5cc, h5c++, h5hlcc, and h5hlc++ scripts in the bin
+ directory that use the pkg-config files. The scripts can be used to build HDF5 C and C++
+ applications (i.e, similar to the compiler scripts produced by the Autotools builds).
- At present, evict on close is disabled in parallel builds.
+ (ADB - 2018/03/08, HDFFV-4359)
-________________________________________
-Paged Aggregation
-________________________________________
+ - Refactored use of CMAKE_BUILD_TYPE for new variable, which understands
+ the type of generator in use.
- The current HDF5 file space allocation accumulates small pieces of metadata
- and raw data in aggregator blocks which are not page aligned and vary
- widely in sizes. The paged aggregation feature was implemented to provide
- efficient paged access of these small pieces of metadata and raw data.
- See the RFC for details. Also, see the File Space Management documentation.
-
-________________________________________
-Page Buffering
-________________________________________
+ Added new configuration macros to use new HDF_BUILD_TYPE variable. This
+ variable is set correctly for the type of generator being used for the build.
- Small and random I/O accesses on parallel file systems result in poor
- performance for applications. Page buffering in conjunction with paged
- aggregation can improve performance by giving an application control of
- minimizing HDF5 I/O requests to a specific granularity and alignment.
- See the RFC for details. Also, see the Page Buffering documentation.
+ (ADB - 2018/01/08, HDFFV-10385, HDFFV-10296)
- At present, page buffering is disabled in parallel builds.
+ - Autotools builds
+ ------------------
+ - Removed version-specific gcc/gfortran flags for version 4.0 (inclusive)
+ and earlier.
+ The config/gnu-flags file, which is sourced as a part of the configure
+ process, adds version-specific flags for use when building HDF5. Most of
+ these flags control warnings and do not affect the final product.
-Other New Features and Enhancements
-===================================
+ Flags for older versions of the compiler were consolidated into the
+ common flags section. Moving these flags simplifies maintenance of
+ the file.
- Library
- -------
- - Added a mechanism for disabling the SWMR file locking scheme.
+ The upshot of this is that building with ancient versions of gcc
+ (<= 4.0) will possibly no longer work without hand-hacking the file
+ to remove the flags not understood by that version of the compiler.
+ Nothing should change when building with gcc >= 4.1.
- The file locking calls used in HDF5 1.10.0 (including patch1)
- will fail when the underlying file system does not support file
- locking or where locks have been disabled. To disable all file
- locking operations, an environment variable named
- HDF5_USE_FILE_LOCKING can be set to the five-character string
- 'FALSE'. This does not fundamentally change HDF5 library
- operation (aside from initial file open/create, SWMR is lock-free),
- but users will have to be more careful about opening files
- to avoid problematic access patterns (i.e.: multiple writers)
- that the file locking was designed to prevent.
+ (DER - 2017/05/31, HDFFV-9937)
- Additionally, the error message that is emitted when file lock
- operations set errno to ENOSYS (typical when file locking has been
- disabled) has been updated to describe the problem and potential
- resolution better.
+ - -fno-omit-frame-pointer was added when building with debugging symbols
+ enabled.
- (DER, 2016/10/26, HDFFV-9918)
+ Debugging symbols can be enabled independently of the overall build
+ mode in both the autotools and CMake. This allows (limited) debugging
+ of optimized code. Since many debuggers rely on the frame pointer,
+ we've disabled this optimization when debugging symbols are requested
+ (e.g.: via building with --enable-symbols).
- - The return type of H5Pget_driver_info() has been changed from void *
- to const void *.
+ (DER - 2017/05/31, HDFFV-10226)
- The pointer returned by this function points to internal library
- memory and should not be freed by the user.
- (DER, 2016/11/04, HDFFV-10017)
+ Library:
+ --------
+ - Added an enumerated value to H5F_libver_t for H5Pset_libver_bounds().
- - The direct I/O VFD has been removed from the list of VFDs that
- support SWMR.
+ Currently, the library defines two values for H5F_libver_t and supports
+ only two pairs of (low, high) combinations as derived from these values.
+ Thus the bounds setting via H5Pset_libver_bounds() is rather restricted.
- This configuration was never officially tested and several SWMR
- tests fail when this VFD is set.
+ Added an enumerated value (H5F_LIBVER_V18) to H5F_libver_t and
+ H5Pset_libver_bounds() now supports five pairs of (low, high) combinations
+ as derived from these values. This addition provides the user more
+ flexibility in setting bounds for object creation.
- (DER, 2016/11/03, HDFFV-10169)
+ (VC - 2018/03/14)
- Configuration:
- --------------
- - The minimum version of CMake required to build HDF5 is now 3.2.2.
+ - Added prefix option to VDS files.
- (ADB, 2017/01/10)
+ Currently, VDS source files must be in the active directory to be
+ found by the virtual file. Adding the option of a prefix to be set
+ on the virtual file, using a data access property list (DAPL),
+ allows the source files to locate at an absolute or relative path
+ to the virtual file.
+ Private utility functions in H5D and H5L packages merged into single
+ function in H5F package.
- - An --enable/disable-developer-warnings option has been added to
- configure.
+ New public APIs:
+ herr_t H5Pset_virtual_prefix(hid_t dapl_id, const char* prefix);
+ ssize_t H5Pget_virtual_prefix(hid_t dapl_id, char* prefix /*out*/, size_t size);
+ The prefix can also be set with an environment variable, HDF5_VDS_PREFIX.
- This disables warnings that do not indicate poor code quality such
- as -Winline and gcc's -Wsuggest-attribute. Developer warnings are
- disabled by default.
+ (ADB - 2017/12/12, HDFFV-9724, HDFFV-10361)
- (DER, 2017/01/10)
+ - H5FDdriver_query() API call added to the C library.
- - A bin/restore.sh script was added that reverts autogen.sh processing.
+ This new library call allows the user to query a virtual file driver
+ (VFD) for the feature flags it supports (listed in H5FDpublic.h).
+ This can be useful to determine if a VFD supports SWMR, for example.
- (DER, 2016/11/08)
+ Note that some VFDs have feature flags that may only be present
+ after a file has been created or opened (e.g.: the core VFD will
+ have the H5FD_FEAT_POSIX_COMPAT_HANDLE flag set if the backing
+ store is switched on). Since the new API call queries a generic VFD
+ unassociated with a file, these flags will never be returned.
- - CMake: Added NAMESPACE hdf5:: to package configuration files to allow
- projects using installed HDF5 binaries built with CMake to link with
- them without specifying the HDF5 library location via IMPORTED_LOCATION.
+ (DER - 2017/05/31, HDFFV-10215)
- (ABD, 2016/10/17, HDFFV-10003)
+ - H5FD_FEAT_DEFAULT_VFD_COMPATIBLE VFD feature flag added to the C library.
- - CMake: Changed the CTEST_BUILD_CONFIGURATION option to
- CTEST_CONFIGURATION_TYPE as recommended by the CMake documentation.
+ This new feature flag indicates that the VFD is compatible with the
+ default VFD. VFDs that set this flag create single files that follow
+ the canonical HDF5 file format.
- (ABD, 2016/10/17, HDFFV-9971)
-
+ (DER - 2017/05/31, HDFFV-10214)
- Fortran Library:
- ----------------
+ - The H5I_REFERENCE value in the H5I_type_t enum (defined in H5Ipublic.h)
+ has been marked as deprectated.
+
+ This ID type value is not used in the C library. i.e.: There are no
+ hid_t values that are of ID type H5I_REFERENCE.
+
+ This enum value will be removed in a future major version of the library.
+ The code will remain unchanged in the HDF5 1.10.x releases and branches.
+
+ (DER - 2017/04/05, HDFFV-10252)
+
+
+ Parallel Library:
+ -----------------
+ - Enabled compression for parallel applications.
+
+ With this release parallel applications can create and write compressed
+ datasets (or the datasets with the filters such as Fletcher32 applied).
+
+ (EIP - 2018/03/29)
+
+ - Addressed slow file close on some Lustre file systems.
+
+ Slow file close has been reported on some Lustre file systems.
+ While the ultimate cause is not understood fully, the proximate
+ cause appears to be long delays in MPI_File_set_size() calls at
+ file close and flush.
+
+ To minimize this problem pending a definitive diagnosis and fix,
+ PHDF5 has been modified to avoid MPI_File_set_size() calls when
+ possible. This is done by comparing the library's EOA (End of
+ Allocation) with the file systems EOF, and skipping the
+ MPI_File_set_size() call if the two match.
+
+ (JRM - 2018/03/29)
- - The HDF5 Fortran library can now be compiled with the NAG compiler.
+ - Optimized parallel open/location of the HDF5 super-block.
- (MSB, 2017/2/10, HDFFV-9973)
+ Previous releases of PHDF5 required all parallel ranks to
+ search for the HDF5 superblock signature when opening the
+ file. As this is accomplished more or less as a synchronous
+ operation, a large number of processes can experience a
+ slowdown in the file open due to filesystem contention.
+
+ As a first step in improving the startup/file-open performance,
+ we allow MPI rank 0 of the associated MPI communicator to locate
+ the base offset of the super-block and then broadcast that result
+ to the remaining ranks in the parallel group. Note that this
+ approach is utilized ONLY during file opens which employ the MPIO
+ file driver in HDF5 by previously having called H5Pset_fapl_mpio().
+
+ HDF5 parallel file operations which do not employ multiple ranks
+ e.g. specifiying MPI_COMM_SELF (whose MPI_Comm_size == 1)
+ as opposed to MPI_COMM_WORLD, will not be affected by this
+ optimization. Conversely, parallel file operations on subgroups
+ of MPI_COMM_WORLD are allowed to be run in parallel with each
+ subgroup operating as an independant collection of processes.
+
+ (RAW - 2017/10/10, HDFFV-10294)
+
+ - Added large (>2GB) MPI-IO transfers.
+
+ Previous releases of PHDF5 would fail when attempting to
+ read or write greater than 2GB of data in a single IO operation.
+ This issue stems principally from an MPI API whose definitions
+ utilize 32 bit integers to describe the number of data elements
+ and datatype that MPI should use to effect a data transfer.
+ Historically, HDF5 has invoked MPI-IO with the number of
+ elements in a contiguous buffer represented as the length
+ of that buffer in bytes.
+
+ Resolving the issue and thus enabling larger MPI-IO transfers
+ is accomplished first, by detecting when a user IO request would
+ exceed the 2GB limit as described above. Once a transfer request
+ is identified as requiring special handling, PHDF5 now creates a
+ derived datatype consisting of a vector of fixed sized blocks
+ which is in turn wrapped within a single MPI_Type_struct to
+ contain the vector and any remaining data. The newly created
+ datatype is then used in place of MPI_BYTE and can be used to
+ fulfill the original user request without encountering API
+ errors.
+
+ (RAW - 2017/09/10, HDFFV-8839)
C++ Library:
------------
-
- The following C++ API wrappers have been added to the C++ Library:
+ + H5Lcreate_soft:
+ // Creates a soft link from link_name to target_name.
+ void link(const char *target_name, const char *link_name,...)
+ void link(const H5std_string& target_name,...)
- // Sets/Gets the strategy and the threshold value that the library
- // will employ in managing file space.
- FileCreatPropList::setFileSpaceStrategy - H5Pset_file_space_strategy
- FileCreatPropList::getFileSpaceStrategy - H5Pget_file_space_strategy
+ + H5Lcreate_hard:
+ // Creates a hard link from new_name to curr_name.
+ void link(const char *curr_name, const Group& new_loc,...)
+ void link(const H5std_string& curr_name, const Group& new_loc,...)
- // Sets/Gets the file space page size for paged aggregation.
- FileCreatPropList::setFileSpacePagesize - H5Pset_file_space_page_size
- FileCreatPropList::getFileSpacePagesize - H5Pget_file_space_page_size
+ // Creates a hard link from new_name to curr_name in same location.
+ void link(const char *curr_name, const hid_t same_loc,...)
+ void link(const H5std_string& curr_name, const hid_t same_loc,...)
- // Checks if the given ID is valid.
- IdComponent::isValid - H5Iis_valid
+ Note: previous version of H5Location::link will be deprecated.
- // Sets/Gets the number of soft or user-defined links that can be
- // traversed before a failure occurs.
- LinkAccPropList::setNumLinks - H5Pset_nlinks
- LinkAccPropList::getNumLinks - H5Pget_nlinks
+ + H5Lcopy:
+ // Copy an object from a group of file to another.
+ void copyLink(const char *src_name, const Group& dst,...)
+ void copyLink(const H5std_string& src_name, const Group& dst,...)
- // Returns a copy of the creation property list of a datatype.
- DataType::getCreatePlist - H5Tget_create_plist
+ // Copy an object from a group of file to the same location.
+ void copyLink(const char *src_name, const char *dst_name,...)
+ void copyLink(const H5std_string& src_name,...)
- // Opens/Closes an object within a group or a file, regardless of object
- // type
- Group::getObjId - H5Oopen
- Group::closeObjId - H5Oclose
+ + H5Lmove:
+ // Rename an object in a group or file to a new location.
+ void moveLink(const char* src_name, const Group& dst,...)
+ void moveLink(const H5std_string& src_name, const Group& dst,...)
- // Maps elements of a virtual dataset to elements of the source dataset.
- DSetCreatPropList::setVirtual - H5Pset_virtual
+ // Rename an object in a group or file to the same location.
+ void moveLink(const char* src_name, const char* dst_name,...)
+ void moveLink(const H5std_string& src_name,...)
- // Gets general information about this file.
- H5File::getFileInfo - H5Fget_info2
+ Note: previous version H5Location::move will be deprecated.
- // Returns the number of members in a type.
- IdComponent::getNumMembers - H5Inmembers
+ + H5Ldelete:
+ // Removes the specified link from this location.
+ void unlink(const char *link_name,
+ const LinkAccPropList& lapl = LinkAccPropList::DEFAULT)
+ void unlink(const H5std_string& link_name,
+ const LinkAccPropList& lapl = LinkAccPropList::DEFAULT)
- // Determines if an element type exists.
- IdComponent::typeExists - H5Itype_exists
+ Note: additional parameter is added to previous H5Location::unlink.
- // Determines if an object exists.
- H5Location::exists - H5Lexists.
+ + H5Tencode and H5Tdecode:
+ // Creates a binary object description of this datatype.
+ void DataType::encode() - C API H5Tencode()
- // Returns the header version of an HDF5 object.
- H5Object::objVersion - H5Oget_info for version
+ // Returns the decoded type from the binary object description.
+ DataType::decode() - C API H5Tdecode()
+ ArrayType::decode() - C API H5Tdecode()
+ CompType::decode() - C API H5Tdecode()
+ DataType::decode() - C API H5Tdecode()
+ EnumType::decode() - C API H5Tdecode()
+ FloatType::decode() - C API H5Tdecode()
+ IntType::decode() - C API H5Tdecode()
+ StrType::decode() - C API H5Tdecode()
+ VarLenType::decode() - C API H5Tdecode()
- (BMR, 2017/03/20, HDFFV-10004, HDFFV-10139, HDFFV-10145)
+ + H5Lget_info:
+ // Returns the information of the named link.
+ H5L_info_t getLinkInfo(const H5std_string& link_name,...)
- - New exception: ObjHeaderIException for H5O interface.
+ (BMR - 2018/03/11, HDFFV-10149)
- (BMR, 2017/03/15, HDFFV-10145)
+ - Added class LinkCreatPropList for link create property list.
- - New class LinkAccPropList for link access property list, to be used by
- wrappers of H5Lexists.
+ (BMR - 2018/03/11, HDFFV-10149)
- (BMR, 2017/01/04, HDFFV-10145)
+ - Added overloaded functions H5Location::createGroup to take a link
+ creation property list.
+ Group createGroup(const char* name, const LinkCreatPropList& lcpl)
+ Group createGroup(const H5std_string& name, const LinkCreatPropList& lcpl)
- - New constructors to open datatypes in ArrayType, CompType, DataType,
- EnumType, FloatType, IntType, StrType, and VarLenType.
-
- (BMR, 2016/12/26, HDFFV-10056)
+ (BMR - 2018/03/11, HDFFV-10149)
- - New member functions:
+ - A document is added to the HDF5 C++ API Reference Manual to show the
+ mapping from a C API to C++ wrappers. It can be found from the main
+ page of the C++ API Reference Manual.
- DSetCreatPropList::setNbit() to setup N-bit compression for a dataset.
+ (BMR - 2017/10/17, HDFFV-10151)
- ArrayType::getArrayNDims() const
- ArrayType::getArrayDims() const
- both to replace the non-const versions.
- (BMR, 2016/04/25, HDFFV-8623, HDFFV-9725)
+ Java Library:
+ ----------------
+ - Wrapper added for enabling the error stack.
+ H5error_off would disable the error stack reporting. In order
+ to re-enable the reporting, the error stack info needs to be
+ saved so that H5error_on can revert state.
- Tools:
- ------
- - The following options have been added to h5clear:
- -s: clear the status_flags field in the file's superblock
- -m: Remove the metadata cache image from the file
+ (ADB - 2018/03/13, HDFFV-10412)
- (QAK, 2017/03/22, PR#361)
+ - Wrappers were added for the following C APIs:
+ H5Pset_evict_on_close
+ H5Pget_evict_on_close
+ H5Pset_chunk_opts
+ H5Pget_chunk_opts
+ H5Pset_efile_prefix
+ H5Pget_efile_prefix
+ H5Pset_virtual_prefix
+ H5Pget_virtual_prefix
+ (ADB - 2017/12/20)
- High-Level APIs:
- ---------------
- - Added New Fortran 2003 API for h5tbmake_table_f.
+ - The H5I_REFERENCE value in the H5I_type_t enum (defined in H5Ipublic.h)
+ has been marked as deprectated.
+
+ JNI code which refers to this value will be removed in a future
+ major version of the library. The code will remain unchanged in the
+ 1.10.x releases and branches.
+
+ See the C library section, above, for further information.
- (MSB, 2017/02/10, HDFFV-8486)
+ (HDFFV-10252, DER, 2017/04/05)
+ Tools:
+ ------
+ - h5diff has a new option to display error stack.
-Support for New Platforms, Languages, and Compilers
-===================================================
+ Updated h5diff with the --enable-error-stack argument, which
+ enables the display of the hdf5 error stack. This completes the
+ improvement to the main tools: h5copy, h5diff, h5dump, h5ls and
+ h5repack.
- - Added NAG compiler
+ (ADB - 2017/08/30, HDFFV-9774)
+Support for new platforms, languages and compilers.
+=======================================
+ - None
-Bug Fixes since HDF5-1.10.0-patch1 release
+Bug Fixes since HDF5-1.10.1 release
==================================
Library
-------
- - Outdated data structure was used in H5D_CHUNK_DEBUG blocks, causing
- compilation errors when H5D_CHUNK_DEBUG was defined. This is fixed.
+ - The data read after a direct chunk write to a chunked dataset with
+ one chunk was incorrect.
+
+ The problem was due to the passing of a null dataset pointer to
+ the insert callback for the chunk index in the routine
+ H5D__chunk_direct_write() in H5Dchunk.c
+ The dataset was a single-chunked dataset which will use the
+ single chunk index when latest format was enabled on file creation.
+ The single chunk index was the only index that used this pointer
+ in the insert callback.
- (BMR, 2017/04/04, HDFFV-8089)
+ Passed the dataset pointer to the insert callback for the chunk
+ index in H5D__chunk_direct_write().
- - SWMR implementation in the HDF5 1.10.0 and 1.10.0-patch1 releases has a
- broken metadata flush dependency that manifested itself with the following
- error at the end of the HDF5 error stack:
+ (VC - 2018/03/20, HDFFV-10425)
- H5Dint.c line 846 in H5D__swmr_setup(): dataspace chunk index must be 0
- for SWMR access, chunkno = 1
- major: Dataset
- minor: Bad value
+ - Added public routine H5DOread_chunk to the high-level C library.
- It was also reported at https://github.com/areaDetector/ADCore/issues/203
+ The patch for H5DOwrite_chunk() to write an entire chunk to the file
+ directly was contributed by GE Healthcare and integrated by The HDF Group
+ developers.
+
+ (VC - 2017/05/19, HDFFV-9934)
- The flush dependency is fixed in this release.
+ - Freeing of object header after failed checksum verification.
- - Changed the plugins dlopen option from RTLD_NOW to RTLD_LAZY
+ It was discovered that the object header (in H5Ocache.c) was not released properly
+ when the checksum verification failed and a re-load of the object
+ header was needed.
- (ABD, 2016/12/12, PR#201)
+ Freed the object header that failed the chksum verification only
+ after the new object header is reloaded, deserialized and set up.
- - A number of issues were fixed when reading/writing from/to corrupted
- files to ensure that the library fails gracefully in these cases:
+ (VC - 2018/03/14, HDFFV-10209)
- * Writing to a corrupted file that has an object message which is
- incorrectly marked as sharable on disk results in a buffer overflow /
- invalid write instead of a clean error message.
+ - Updated H5Pset_evict_on_close in H5Pfapl.c
- * Decoding data from a corrupted file with a dataset encoded with the
- H5Z_NBIT decoding can result in a code execution vulnerability under
- the context of the application using the HDF5 library.
+ Changed the minor error number from H5E_CANTSET to H5E_UNSUPPORTED for
+ parallel library.
- * When decoding an array datatype from a corrupted file, the HDF5 library
- fails to return an error in production if the number of dimensions
- decoded is greater than the maximum rank.
+ (ADB - 2018/03/06, HDFFV-10414)
- * When decoding an "old style" array datatype from a corrupted file, the
- HDF5 library fails to return an error in production if the number of
- dimensions decoded is greater than the maximum rank.
+ - Fixed the problems with the utility function that could not handle lowercase
+ Windows drive letters.
- (NAF, 2016/10/06, HDFFV-9950, HDFFV-9951, HDFFV-9992, HDFFV-9993)
+ Added call to upper function for drive letter.
- - Fixed an error that would occur when copying an object with an attribute
- which is a compound datatype consisting of a variable length string.
+ (ADB - 2017/12/18, HDFFV-10307)
- (VC, 2016/08/24, HDFFV-7991)
+ - Fixed H5Sencode() bug when the number of elements selected was > 2^32.
- - H5DOappend will no longer fail if a dataset has no append callback
- registered.
+ H5Sencode() incorrectly encodes dataspace selection with number of
+ elements exceeding 2^32. When decoding such selection via H5Sdecode(),
+ the number of elements in the decoded dataspace is not the same as
+ what is encoded. This problem exists for H5S_SEL_HYPER and
+ H5S_SEL_POINTS encoding.
- (VC, 2016/08/14, HDFFV-9960)
+ The cause of the problem is due to the fact that the library uses 32 bits to
+ encode counts and block offsets for the selection.
+ The solution is to use the original 32 bit encodings if possible,
+ but use a different way to encode selection if more that 32 bits is needed.
+ See details in the RFC: H5Sencode/H5Sdecode Format Change i
+ https://bitbucket.hdfgroup.org/projects/HDFFV/repos/hdf5doc/browse/RFCs/HDF5_Library/H5SencodeFormatChange.
- - Fixed an issue where H5Pset_alignment could result in misaligned blocks
- with some input combinations, causing an assertion failure in debug mode.
+ (VC - 2017/11/28, HDFFV-9947)
- (NAF, 2016/08/11, HDFFV-9948)
+ - Fixed filter plugin handling in H5PL.c and H5Z.c to not require i availability of
+ dependent libraries (e.g., szip or zlib).
- - Fixed a problem where a plugin compiled into a DLL in the default plugin
- directory could not be found by the HDF5 library at runtime on Windows
- when the HDF5_PLUGIN_PATH environment variable was not set.
+ It was discovered that the dynamic loading process used by
+ filter plugins had issues with library dependencies.
- (ABD, 2016/08/01, HDFFV-9706)
+ CMake build process changed to use LINK INTERFACE keywords, which
+ allowed HDF5 C library to make dependent libraries private. The
+ filter plugin libraries no longer require dependent libraries
+ (such as szip or zlib) to be available.
+
+ (ADB - 2017/11/16, HDFFV-10328)
- - Fixed an error that would occur when calling H5Adelete on an attribute
- which is attached to an externally linked object in the target file and
- whose datatype is a committed datatype in the main file.
+ - Fixed rare object header corruption bug.
- (VC, 2016/07/06, HDFFV-9940)
+ In certain cases, such as when converting large attributes to dense
+ storage, an error could occur which would either fail an assertion or
+ cause file corruption. Fixed and added test.
- - (a) Throw an error instead of assertion when v1 btree level hits the 1
- byte limit.
- (b) Modifications to better handle error recovery when conversion by
- h5format_convert fails.
+ (NAF - 2017/11/14, HDFFV-10274)
- (VC, 2016/05/29, HDFFV-9434)
+ - Updated H5Zfilter_avail in H5Z.c.
- - Fixed a memory leak where an array used by the library to track SWMR
- read retries was unfreed.
+ The public function checked for plugins, while the private
+ function did not.
- The leaked memory was small (on the order of a few tens of ints) and
- allocated per-file. The memory was allocated (and lost) only when a
- file was opened for SWMR access.
+ Modified H5Zfilter_avail and private function, H5Z_filter_avail.
+ Moved check for plugin from public to private function. Updated
+ H5P__set_filter due to change in H5Z_filter_avail. Updated tests.
- (DER, 2016/04/27, HDFFV-9786)
+ (ADB - 2017/10/10, HDFFV-10297, HDFFV-10319)
- - Fixed a memory leak that could occur when opening a file for the first
- time (including creating) and the call fails.
+ - h5dump produced SEGFAULT when dumping corrypted file.
+
+ The behavior was due to the error in the internal function H5HL_offset_into().
- This occurred when the file-driver-specific info was not cleaned up.
- The amount of memory leaked varied with the file driver, but would
- normally be less than 1 kB.
+ (1) Fixed H5HL_offset_into() to return error when offset exceeds heap data
+ block size.
+ (2) Fixed other places in the library that call this routine to detect
+ error routine.
- (DER, 2016/12/06, HDFFV-10168)
+ (VC - 2017/08/30, HDFFV-10216)
- - Fixed a failure in collective metadata writes.
+ - Fixes for paged aggregation feature.
- This failure only appeared when collective metadata writes
- were enabled (via H5Pset_coll_metadata_write()).
+ Skip test in test/fheap.c when:
+ (1) multi/split drivers and
+ (2) persisting free-space or using paged aggregation strategy
- (JRM, 2017/04/10, HDFFV-10055)
+ (VC, 2017/07/10)
+ Changes made based on RFC review comments:
+ (1) Added maximum value for file space page size
+ (2) Dropped check for page end metadata threshold
+ (3) Removed "can_shrink" and "shrink" callbacks for small section class
- Parallel Library
- ----------------
- - Fixed a bug that could occur when allocating a chunked dataset in parallel
- with an alignment set and an alignment threshold greater than the chunk
- size but less than or equal to the raw data aggregator size.
+ (VC - 2017/06/09)
+
+ - Fixed for infinite loop in H5VM_power2up().
+
+ The function H5VM_power2up() returns the next power of 2
+ for n. When n exceeds 2^63, it overflows and becomes 0 causing
+ the infinite looping.
+
+ The fix ensures that the function checks for n >= 2^63
+ and returns 0.
+
+ (VC - 2017/07/10, HDFFV-10217)
- (NAF, 2016/08/11, HDFFV-9969)
+ - Fixed for H5Ocopy doesn't work with open identifiers.
+
+ Changes made so that raw data for dataset objects are copied from
+ cached info when possible instead of flushing objects to file and
+ read them back in again.
+
+ (VC - 2017/07/05, HDFFV-7853)
+
+ - An uninitialized struct could cause a memory access error when using
+ variable-length or reference types in a compressed, chunked dataset.
+
+ A struct containing a callback function pointer and a pointer to some
+ associated data was used before initialization. This could cause a
+ memory access error and system crash. This could only occur under
+ unusual conditions when using variable-lenth and reference types in
+ a compressed, chunked dataset.
+
+ On recent versions of Visual Studio, when built in debug mode, the
+ debug heap will complain and cause a crash if the code in question
+ is executed (this will cause the objcopy test to fail).
+
+ (DER - 2017/11/21, HDFFV-10330)
+
+ - Fixed collective metadata writes on file close.
+
+ It was discovered that metadata was being written twice as part of
+ the parallel file close behavior, once independently and once
+ collectively.
+
+ A fix for this error was included as part of the parallel compression
+ feature but remained undocumented here.
+
+ (RAW - 2017/12/01, HDFFV-10272)
+
+ - If an HDF5 file contains a filter pipeline message with a 'number of
+ filters' field that exceeds the maximum number of allowed filters,
+ the error handling code will attempt to dereference a NULL pointer.
+
+ This issue was reported to The HDF Group as issue #CVE-2017-17505.
+ https://security-tracker.debian.org/tracker/CVE-2017-17505
+ https://cve.mitre.org/cgi-bin/cvename.cgi?name=3DCVE-2017-17505
+
+ NOTE: The HDF5 C library cannot produce such a file. This condition
+ should only occur in a corrupt (or deliberately altered) file
+ or a file created by third-party software.
+
+ This problem arose because the error handling code assumed that
+ the 'number of filters' field implied that a dynamic array of that
+ size had already been created and that the cleanup code should
+ iterate over that array and clean up each element's resources. If
+ an error occurred before the array has been allocated, this will
+ not be true.
+
+ This has been changed so that the number of filters is set to
+ zero on errors. Additionally, the filter array traversal in the
+ error handling code now requires that the filter array not be NULL.
+
+ (DER - 2018/02/06, HDFFV-10354)
+
+ - If an HDF5 file contains a filter pipeline message which contains
+ a 'number of filters' field that exceeds the actual number of
+ filters in the message, the HDF5 C library will read off the end of
+ the read buffer.
+
+ This issue was reported to The HDF Group as issue #CVE-2017-17506.
+ https://security-tracker.debian.org/tracker/CVE-2017-17506
+ https://cve.mitre.org/cgi-bin/cvename.cgi?name=3DCVE-2017-17506
+
+ NOTE: The HDF5 C library cannot produce such a file. This condition
+ should only occur in a corrupt (or deliberately altered) file
+ or a file created by third-party software.
+
+ The problem was fixed by passing the buffer size with the buffer
+ and ensuring that the pointer cannot be incremented off the end
+ of the buffer. A mismatch between the number of filters declared
+ and the actual number of filters will now invoke normal HDF5
+ error handling.
+
+ (DER - 2018/02/26, HDFFV-10355)
+
+ - If an HDF5 file contains a malformed compound datatype with a
+ suitably large offset, the type conversion code can run off
+ the end of the type conversion buffer, causing a segmentation
+ fault.
+
+ This issue was reported to The HDF Group as issue #CVE-2017-17507.
+ https://security-tracker.debian.org/tracker/CVE-2017-17506
+ https://cve.mitre.org/cgi-bin/cvename.cgi?name=3DCVE-2017-17506
+
+ NOTE: The HDF5 C library cannot produce such a file. This condition
+ should only occur in a corrupt (or deliberately altered) file
+ or a file created by third-party software.
+
+ THE HDF GROUP WILL NOT FIX THIS BUG AT THIS TIME
+
+ Fixing this problem would involve updating the publicly visible
+ H5T_conv_t function pointer typedef and versioning the API calls
+ which use it. We normally only modify the public API during
+ major releases, so this bug will not be fixed at this time.
+
+ (DER - 2018/02/26, HDFFV-10356)
+
+ - If an HDF5 file contains a malformed compound type which contains
+ a member of size zero, a division by zero error will occur while
+ processing the type.
+
+ This issue was reported to The HDF Group as issue #CVE-2017-17508.
+ https://security-tracker.debian.org/tracker/CVE-2017-17508
+ https://cve.mitre.org/cgi-bin/cvename.cgi?name=3DCVE-2017-17508
+
+ NOTE: The HDF5 C library cannot produce such a file. This condition
+ should only occur in a corrupt (or deliberately altered) file
+ or a file created by third-party software.
+
+ Checking for zero before dividing fixes the problem. Instead of the
+ division by zero, the normal HDF5 error handling is invoked.
+
+ (DER - 2018/02/26, HDFFV-10357)
+
+ - If an HDF5 file contains a malformed symbol table node that declares
+ it contains more symbols than it actually contains, the library
+ can run off the end of the metadata cache buffer while processing
+ the symbol table node.
+
+ This issue was reported to The HDF Group as issue #CVE-2017-17509.
+ https://security-tracker.debian.org/tracker/CVE-2017-17509
+ https://cve.mitre.org/cgi-bin/cvename.cgi?name=3DCVE-2017-17509
+
+ NOTE: The HDF5 C library cannot produce such a file. This condition
+ should only occur in a corrupt (or deliberately altered) file
+ or a file created by third-party software.
+
+ Performing bounds checks on the buffer while processing fixes the
+ problem. Instead of the segmentation fault, the normal HDF5 error
+ handling is invoked.
+
+ (DER - 2018/03/12, HDFFV-10358)
+
+ - Fixed permissions passed to open(2) on file create.
+
+ On Windows, the POSIX permissions passed to open(2) when creating files
+ were only incidentally correct. They are now set to the correct value of
+ (_S_IREAD | _S_IWRITE).
+
+ On other platforms, the permissions were set to a mix of 666, 644, and
+ 000. They are now set uniformly to 666.
+
+ (DER - 2017/04/28, HDFFV-9877)
+
+ - The H5FD_FEAT_POSIX_COMPAT_HANDLE flag is no longer used to determine
+ if a virtual file driver (VFD) is compatible with SWMR.
+
+ Use of this VFD feature flag was not in line with the documentation in
+ the public H5FDpublich.h file. In particular, it was being used as a
+ proxy for determining if SWMR I/O is allowed. This is unecessary as we
+ already have a feature flag for this (H5FD_SUPPORTS_SWMR_IO).
+
+ (DER - 2017/05/31, HDFFV-10214)
Configuration
- -------------
- - Configuration will check for the strtoll and strtoull functions
- before using alternatives
+ -------------
+ - CMake changes
- (ABD, 2017/03/17, PR#340)
+ - Updated CMake commands configuration.
- - CMake uses a Windows pdb directory variable if available and
- will generate both static and shared pdb files.
+ A number of improvements were made to the CMake commands. Most
+ changes simplify usage or eliminate unused constructs. Also,
+ some changes support better cross-platform support.
- (ABD, 2017/02/06, HDFFV-9875)
+ (ADB - 2018/02/01, HDFFV-10398)
- - CMake now builds shared versions of tools.
+ - Corrected usage of CMAKE_BUILD_TYPE variable.
- (ABD, 2017/02/01, HDFFV-10123)
+ The use of the CMAKE_BUILD_TYPE is incorrect for multi-config
+ generators (Visual Studio and XCode) and is optional for single
+ config generators. Created a new macro to check
+ GLOBAL PROPERTY -> GENERATOR_IS_MULTI_CONFIG
+ Created two new HDF variable, HDF_BUILD_TYPE and HDF_CFG_BUILD_TYPE.
+ Defaults for these variables is "Release".
- - Makefiles and test scripts have been updated to correctly remove files
- created when running "make check" and to avoid removing any files under
- source control. In-source builds followed by "make clean" and "make
- distclean" should result in the original source files.
+ (ADB - 2018/01/10, HDFFV-10385)
- (LRK, 2017/01/17, HDFFV-10099)
+ - Added replacement of fortran flags if using static CRT.
- - The tools directory has been divided into two separate source and test
- directories. This resolves a build dependency and, as a result,
- 'make check' will no longer fail in the tools directory if 'make' was
- not executed first.
-
- (ABD, 2016/10/27, HDFFV-9719)
+ Added TARGET_STATIC_CRT_FLAGS call to HDFUseFortran.cmake file in
+ config/cmake_ext_mod folder.
- - CMake: Fixed a timeout error that would occasionally occur when running
- the virtual file driver tests simultaneously due to test directory
- and file name collisions.
+ (ADB - 2018/01/08, HDFFV-10334)
- (ABD, 2016/09/19, HDFFV-9431)
- - CMake: Fixed a command length overflow error by converting custom
- commands inside CMakeTest.cmake files into regular dependencies and
- targets.
+ - The hdf5 library used shared szip and zlib, which needlessly required
+ applications to link with the same szip and zlib libraries.
- (ABD, 2016/07/12, HDFFV-9939)
+ Changed the target_link_libraries commands to use the static libs.
+ Removed improper link duplication of szip and zlib.
+ Adjusted the link dependencies and the link interface values of
+ the target_link_libraries commands.
- - Fixed a problem preventing HDF5 to be built on 32-bit CYGWIN by
- condensing cygwin configuration files into a single file and
- removing outdated compiler settings.
+ (ADB - 2017/11/14, HDFFV-10329)
- (ABD, 2016/07/12, HDFFV-9946)
+ - CMake MPI
+ CMake implementation for MPI was problematic and would create incorrect
+ MPI library references in the hdf5 libraries.
- Fortran
- --------
- - Changed H5S_ALL_F from INTEGER to INTEGER(HID_T)
+ Reworked the CMake MPI code to properly create CMake targets. Also merged
+ the latest CMake FindMPI.cmake changes to the local copy. This is necessary
+ until HDF changes the CMake minimum to 3.9 or greater.
+
+ (ADB - 2017/11/02, HDFFV-10321)
+
+ - Corrected FORTRAN_HAVE_C_LONG_DOUBLE processing in the autotools.
- (MSB, 2016/10/14, HDFFV-9987)
+ A bug in the autotools Fortran processing code always set the
+ FORTRAN_HAVE_C_LONG_DOUBLE variable to be true regardless of
+ whether or not a C long double type was present.
+ This would cause compilation failures on platforms where a C
+ long double type was not available and the Fortran wrappers
+ were being built.
+
+ (DER - 2017/07/05, HDFFV-10247)
+
+ - The deprecated --enable-production and --enable-debug configure options
+ failed to emit errors when passed an empty string
+ (e.g.: --enable-debug="").
+
+ Due to the way we checked for these options being set, it was possible
+ to avoid the error message and continue configuration if an empty string
+ was passed to the option.
+
+ Any use of --enable-production or --enable-debug will now halt the
+ configuration step and emit a helpful error message
+ (use --enable-build-mode=debug|production instead).
+
+ (DER - 2017/07/05, HDFFV-10248)
+
+ - CMake
+
+ Too many commands for POST_BUILD step caused command line to be
+ too big on windows.
+
+ Changed foreach of copy command to use a custom command with the
+ use of the HDFTEST_COPY_FILE macro.
+
+ (ADB - 2017/07/12, HDFFV-10254)
+
+ - CMake test execution environment
+
+ The parallel HDF5 test: 't_pread' assumed the use of autotools
+ and the directory structure associated with that testing approach.
+ Modified the test code to check whether the 'h5jam' utility can be
+ found in the same directory as the test executable (which is
+ preferred directory structure utilized by cmake) and if found
+ will invoke the tool directly rather than utilizing a relative path.
+
+ (RAW - 2017/11/03, HDFFV-10318)
+
+ - Fortran compilation fails for xlf and CMake builds.
+
+ Fixed CMake shared library build for H5match_types and modules
+
+ (MSB - 2017/12/19, HDFFV-10363)
+
+ - Shared libraries fail test on OSX with Fortran enabled with CMake.
+
+ Fixed by removing the F77 use of EQUIVALENCE and COMMON, replaced
+ using MODULES. Updated CMake.
+
+ (MSB - 2017/12/07, HDFFV-10223)
+
+ - The bin/trace script now emits an error code on problems and autogen.sh
+ will fail if bin/trace fails.
+
+ The bin/trace script adds tracing functionality to public HDF5 API calls.
+ It is only of interest to developers who modify the HDF5 source code.
+ Previously, bin/trace just wrote an error message to stdout when it
+ encountered problems, so autogen.sh processing did not halt and a broken
+ version of the library could be built. The script will now return an
+ error code when it encounters problems, and autogen.sh will fail.
+
+ This only affects users who run autogen.sh to rebuild the Autotools files,
+ which is not necessary to build HDF5 from source in official releases of the
+ library. CMake users are unaffected as bin/trace is not run via CMake
+ at this time.
+
+ (DER - 2017/04/25, HDFFV-10178)
+
+ - FC_BASENAME was changed from gfortran40 to gfortran in a few places.
+
+ In the autotools, FC_BASENAME was set to gfortran40 in a few locations
+ (config/gnu-fflags and config/freebsd). This was probably a historical
+ artifact and did not seem to affect many users.
+
+ The value is now correctly set to gfortran.
+
+ (DER - 2017/05/26, HDFFV-10249)
+
+ - The ar flags were changed to -cr (was: -cru)
+
+ The autotools set the flags for ar to -cru by default. The -u flag,
+ which allows selective replacement of only the members which have
+ changed, raises warnings on some platforms, so the flags are now set to
+ -cr via AR_FLAGS in configure.ac. This causes the static library to
+ always be completely recreated from the object files on each build.
+
+ (DER - 2017/11/15, HDFFV-10428)
+
+
+ Fortran
+ --------
+ - Fixed compilation errors when using Intel 18 Fortran compilers
+ (MSB - 2017/11/3, HDFFV-10322)
Tools
-----
- - h5diff now correctly ignores strpad in comparing strings.
+ - h5clear
- (ABD, 2017/03/03, HDFFV-10128)
+ An enhancement to the tool in setting a file's stored EOA.
- - h5repack now correctly parses the command line filter options.
+ It was discovered that a crashed file's stored EOA in the superblock
+ was smaller than the actual file's EOF. When the file was reopened
+ and closed, the library truncated the file to the stored EOA.
- (ABD, 2017/01/24, HDFFV-10046)
+ Added an option to the tool in setting the file's stored EOA in the
+ superblock to the maximum of (EOA, EOF) + increment.
+ An option was also added to print the file's EOA and EOF.
- - h5diff now correctly returns an error when it cannot read data due
- to an unavailable filter plugin.
+ (VC - 2018/03/14, HDFFV-10360)
- (ADB 2017/01/18, HDFFV-9994 )
+ - h5repack
- - Fixed an error in the compiler wrapper scripts (h5cc, h5fc, et al.)
- in which they would erroneously drop the file argument specified via
- the -o flag when the -o flag was specified before the -c flag on the
- command line, resulting in a failure to compile.
+ h5repack changes the chunk parameters when a change of layout is not
+ specified and a filter is applied.
- (LRK, 2016/11/04, HDFFV-9938, HDFFV-9530)
+ HDFFV-10297, HDFFV-10319 reworked code for h5repack and h5diff code
+ in the tools library. The check for an existing layout was incorrectly
+ placed into an if block and not executed. The check was moved into
+ the normal path of the function.
- - h5repack User Defined (UD) filter parameters were not parsed correctly.
+ (ADB - 2018/02/21, HDFFV-10412)
- The UD filter parameters were not being parsed correctly. Reworked coding
- section to parse the correct values and verify number of parameters.
+ - h5dump
- (ABD, 2016/10/19, HDFFV-9996, HDFFV-9974, HDFFV-9515, HDFFV-9039)
+ The tools library will hide the error stack during file open.
- - h5repack allows the --enable-error-stack option on the command line.
+ While this is preferable almost always, there are reasons to enable
+ display of the error stack when a tool will not open a file. Adding an
+ optional argument to the --enable-error-stack will provide this use case.
+ As an optional argument it will not affect the operation of the
+ --enable-error-stack. h5dump is the only tool to implement this change.
- (ADB, 2016/08/08, HDFFV-9775)
+ (ADB - 2018/02/15, HDFFV-10384)
+ - h5dump
- C++ APIs
- --------
- - The member function H5Location::getNumObjs() is moved to
- class Group because the objects are in a group or a file only,
- and H5Object::getNumAttrs to H5Location to get the number of
- attributes at a given location.
+ h5dump would output an indented blank line in the filters section.
+
+ h5dump overused the h5tools_simple_prefix function, which is a
+ function intended to account for the data index (x,y,z) option.
+ Removed the function call for header information.
+
+ (ADB - 2018/01/25, HDFFV-10396)
+
+ - h5repack
+
+ h5repack incorrectly searched internal object table for name.
+
+ h5repack would search the table of objects for a name, if the
+ name did not match it tried to determine if the name without a
+ leading slash would match. The logic was flawed! The table
+ stored names(paths) without a leading slash and did a strstr
+ of the table path to the name.
+ The assumption was that if there was a difference of one then
+ it was a match, however "pressure" would match "/pressure" as
+ well as "/pressure1", "/pressure2", etc. Changed logic to remove
+ any leading slash and then do a full compare of the name.
+
+ (ADB - 2018/01/18, HDFFV-10393)
+
+ - h5repack
+
+ h5repack failed to handle command line parameters for customer filters.
+
+ User defined filter parameter conversions would fail whenintegers were
+ represented on the command line with character string
+ larger then 9 characters. Increased local variable array for storing
+ the current command line parameter to prevent buffer overflows.
+
+ (ADB - 2018/01/17, HDFFV-10392)
+
+ - h5diff
+
+ h5diff seg faulted if comparing VL strings against fixed strings.
+
+ Reworked solution for HDFFV-8625 and HDFFV-8639. Implemented the check
+ for string objects of same type in the diff_can_type function by
+ adding an if(tclass1 == H5T_STRING) block. This "if block" moves the
+ same check that was added for attributes to this function, which is
+ used by all object types. This function handles complex type structures.
+ Also added a new test file in h5diffgenttest for testing this issue
+ and removed the temporary files used in the test scripts.
- (BMR, 2017/03/17, PR#466)
+ (ADB - 2018/01/04, HDFFV-8745)
- - Due to the change in the C API, the overloaded functions of
- PropList::setProperty now need const for some arguments. They are
- planned for deprecation and are replaced by new versions with proper
- consts.
+ - h5repack
- (BMR, 2017/03/17, PR#344)
+ h5repack failed to copy a dataset with existing filter.
- - The high-level API Packet Table (PT) did not write data correctly when
- the datatype is a compound type that has string type as one of the
- members. This problem started in 1.8.15, after the fix of HDFFV-9042
- was applied, which caused the Packet Table to use native type to access
- the data. It should be up to the application to specify whether the
- buffer to be read into memory is in the machine's native architecture.
- Thus, the PT is fixed to not use native type but to make a copy of the
- user's provided datatype during creation or the packet table's datatype
- during opening. If an application wishes to use native type to read the
- data, then the application will request that. However, the Packet Table
- doesn't provide a way to specify memory datatype in this release. This
- feature will be available in future releases.
+ Reworked code for h5repack and h5diff code in the tools library. Added
+ improved error handling, cleanup of resources and checks of calls.
+ Modified H5Zfilter_avail and private function, H5Z_filter_avail.
+ Moved check for plugin from public to private function. Updated
+ H5P__set_filter due to change in H5Z_filter_avail. Updated tests.
+ Note, h5repack output display has changed to clarify the individual
+ steps of the repack process. The output indicates if an operation
+ applies to all objects. Lines with notation and no information
+ have been removed.
- (BMR, 2016/10/27, HDFFV-9758)
+ (ADB - 2017/10/10, HDFFV-10297, HDFFV-10319)
- - The obsolete macros H5_NO_NAMESPACE and H5_NO_STD have been removed from
- the HDF5 C++ API library.
+ - h5repack
- (BMR, 2016/10/23, HDFFV-9532)
+ h5repack always set the User Defined filter flag to H5Z_FLAG_MANDATORY.
- - The problem where a user-defined function cannot access both, attribute
- and dataset, using only one argument is now fixed.
+ Added another parameter to the 'UD=' option to set the flag by default
+ to '0' or H5Z_FLAG_MANDATORY, the other choice is '1' or H5Z_FLAG_OPTIONAL.
- (BMR, 2016/10/11, HDFFV-9920)
+ (ADB - 2017/08/31, HDFFV-10269)
- - In-memory array information, ArrayType::rank and
- ArrayType::dimensions, were removed. This is an implementation
- detail and should not affect applications.
+ - h5ls
- (BMR, 2016/04/25, HDFFV-9725)
+ h5ls generated error on stack when it encountered a H5S_NULL
+ dataspace.
+ Adding checks for H5S_NULL before calling H5Sis_simple (located
+ in the h5tools_dump_mem function) fixed the issue.
+
+ (ADB - 2017/08/17, HDFFV-10188)
+
+ - h5repack
+
+ Added tests to h5repack.sh.in to verify options added for paged
+ aggregation work as expected.
+
+ (VC - 2017/08/03)
+
+ - h5dump
+
+ h5dump segfaulted on output of XML file.
+
+ Function that escape'd strings used the full buffer length
+ instead of just the length of the replacement string in a
+ strncpy call. Using the correct length fixed the issue.
+
+ (ADB - 2017/08/01, HDFFV-10256)
+
+ - h5diff
+
+ h5diff segfaulted on compare of a NULL variable length string.
+
+ Improved h5diff compare of strings by adding a check for
+ NULL strings and setting the lengths to zero.
+
+ (ADB - 2017/07/25, HDFFV-10246)
+
+ - h5import
+
+ h5import crashed trying to import data from a subset of a dataset.
+
+ Improved h5import by adding the SUBSET keyword. h5import understands
+ to use the Count times the Block as the size of the dimensions.
+ Added INPUT_B_ORDER keyword to old-style configuration files.
+ The import from h5dump function expects the binary files to use native
+ types (FILE '-b' option) in the binary file.
+
+ (ADB - 2017/06/15, HDFFV-10219)
+
+ - h5repack
+
+ h5repack did not maintain the creation order flag of the root
+ group.
+
+ Improved h5repack by reading the creation order and applying the
+ flag to the new root group. Also added arguments to set the
+ order and index direction, which applies to the traversing of the
+ original file, on the command line.
+
+ (ADB - 2017/05/26, HDFFV-8611)
+
+ - h5diff
+
+ h5diff failed to account for strpad type and null terminators
+ of char strings. Also, h5diff failed to account for string length
+ differences and would give a different result depending on file
+ order in the command line.
+
+ Improved h5diff compare of strings and arrays by adding a check for
+ string lengths and if the strpad was null filled.
+
+ (ADB - 2017/05/18, HDFFV-9055, HDFFV-10128)
+
+ High-Level APIs:
+ ------
+ - H5DOwrite_chunk() problems when overwriting an existing chunk with
+ no filters enabled.
+
+ When overwriting chunks and no filters were being used, the library would
+ fail (when asserts are enabled, e.g. debug builds) or incorrectly
+ insert additional chunks instead of overwriting (when asserts are not
+ enabled, e.g. production builds).
+
+ This has been fixed and a test was added to the hl/test_dset_opt test.
+
+ (DER - 2017/05/11, HDFFV-10187)
+
+ C++ APIs
+ --------
+ - Removal of memory leaks.
+
+ A private function was inadvertently called, causing memory leaks. This
+ is now fixed.
+
+ (BMR - 2018/03/12 - User's reported in email)
Testing
-------
- - Fixed a problem that caused tests using SWMR to occasionally fail when
- running "make check" using parallel make.
+ - Memory for three variables in testphdf5's coll_write_test was malloced
+ but not freed, leaking memory when running the test.
+
+ The variables' memory is now freed.
- (LRK, 2016/03/22, PR#338, PR#346, PR#358)
+ (LRK - 2018/03/12, HDFFV-10397)
+
+ - Refactored the testpar/t_bigio.c test to include ALARM macros
+
+ Changed the test to include the ALARM_ON and ALARM_OFF macros which
+ are intended to prevent nightly test hangs that have been observed
+ with this particular parallel test example. The code was also modified to
+ simplify status reporting (only from MPI rank 0) and additional
+ status checking added.
+
+ (RAW - 2017/11/08, HDFFV-10301)
Supported Platforms
===================
- Linux 2.6.32-573.18.1.el6.ppc64 gcc (GCC) 4.4.7 20120313 (Red Hat 4.4.7-4)
- #1 SMP ppc64 GNU/Linux g++ (GCC) 4.4.7 20120313 (Red Hat 4.4.7-4)
- (ostrich) GNU Fortran (GCC) 4.4.7 20120313
- (Red Hat 4.4.7-4)
+ 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++)
+ 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
+ (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 15.0.3.187 Build 20150407
+ 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
@@ -584,33 +1098,30 @@ Supported Platforms
Windows 7 x64 Visual Studio 2012 w/ Intel Fortran 15 (cmake)
Visual Studio 2013 w/ Intel Fortran 15 (cmake)
Visual Studio 2015 w/ Intel Fortran 16 (cmake)
+ Visual Studio 2015 w/ Intel C, Fortran 2017 (cmake)
Visual Studio 2015 w/ MSMPI 8 (cmake)
- Cygwin(CYGWIN_NT-6.1 2.8.0(0.309/5/3)
+ Cygwin(CYGWIN_NT-6.1 2.8.0(0.309/5/3)
gcc and gfortran compilers (GCC 5.4.0)
(cmake and autotools)
Windows 10 Visual Studio 2015 w/ Intel Fortran 16 (cmake)
- Cygwin(CYGWIN_NT-6.1 2.8.0(0.309/5/3)
+ Cygwin(CYGWIN_NT-6.1 2.8.0(0.309/5/3)
gcc and gfortran compilers (GCC 5.4.0)
(cmake and autotools)
Windows 10 x64 Visual Studio 2015 w/ Intel Fortran 16 (cmake)
- Mac OS X Mt. Lion 10.8.5 Apple clang/clang++ version 5.1 from Xcode 5.1
- 64-bit gfortran GNU Fortran (GCC) 4.8.2
- (swallow/kite) Intel icc/icpc/ifort version 15.0.3
-
- Mac OS X Mavericks 10.9.5 Apple clang/clang++ version 6.0 from Xcode 6.2
- 64-bit gfortran GNU Fortran (GCC) 4.9.2
- (wren/quail) Intel icc/icpc/ifort version 15.0.3
-
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 from Xcode 7.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
- (osx1010dev/osx1010test) Intel icc/icpc/ifort version 16.0.2
+ (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
@@ -671,28 +1182,33 @@ Compiler versions for each platform are listed in the preceding
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++)
+ 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.8.4
+ Version 4.9.3, 5.3.0, 6.2.0
PGI C, Fortran, C++ for 64-bit target on
x86-64;
- Version 16.10-0
+ Version 17.10-0
Intel(R) C (icc), C++ (icpc), Fortran (icc)
compilers:
- Version 15.0.3.187 (Build 20150407)
+ 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)
+ (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 15.0.3.187 (Build 20150407)
+ 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
@@ -703,16 +1219,16 @@ The following platforms are not supported but have been tested for this release.
(cmake and autotools)
Fedora 24 4.7.2-201.fc24.x86_64 #1 SMP x86_64 x86_64 x86_64 GNU/Linux
- gcc, g++ (GCC) 6.1.1 20160621
+ gcc, g++ (GCC) 6.1.1 20160621
(Red Hat 6.1.1-3)
- GNU Fortran (GCC) 6.1.1 20160621
+ GNU Fortran (GCC) 6.1.1 20160621
(Red Hat 6.1.1-3)
(cmake and autotools)
Ubuntu 16.04.1 4.4.0-38-generic #57-Ubuntu SMP x86_64 GNU/Linux
- gcc, g++ (Ubuntu 5.4.0-6ubuntu1~16.04.2)
+ gcc, g++ (Ubuntu 5.4.0-6ubuntu1~16.04.2)
5.4.0 20160609
- GNU Fortran (Ubuntu 5.4.0-6ubuntu1~16.04.2)
+ GNU Fortran (Ubuntu 5.4.0-6ubuntu1~16.04.2)
5.4.0 20160609
(cmake and autotools)
@@ -720,11 +1236,18 @@ The following platforms are not supported but have been tested for this release.
Known Problems
==============
- At present, metadata cache images may not be generated by parallel
+ 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.
- Known problems in previous releases can be found in the HISTORY*.txt files
- in the HDF5 source. Please report any new problems found to
+ Three tests fail with OpenMPI 3.0.0/GCC-7.2.0-2.29:
+ testphdf5 (ecdsetw, selnone, cchunk1, cchunk3, cchunk4, and actualio)
+ t_shapesame (sscontig2)
+ t_pflush1/fails on exit
+ The first two tests fail attempting collective writes.
+
+ 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.
+