Version 1.10.0
Breaking changes
- ecb5089 Changed the order of arguments for attribute functions for consistency: The new convention is to always use
linkPathbeforeattrName.If this type of mistake is detected, h5pp will throw a runtime exception with a message like:auto A = file.readAttribute<T>("nameOfAttribute", "path/to/link"); // Changes to auto A = file.readAttribute<T>("path/to/link", "nameOfAttribute");
Could not read attribute [nameOfAttribute] in link [path/to/link]: Link does not exist. NOTE: h5pp v1.10 and above requires the 'linkPath' argument before 'attrName' - 047f7fd Dropped support for compilers without
<filesystem>or<experimental/filesystem>
New features
- 6a2c033 New object
TableFieldInfo(and related functions) for more efficient interaction with table fields. The oldTableInfostill exists and now derives fromTableFieldInfo - 08adc5c ab1bf62 Added support for reading into an
std::optional<T>. E.g.auto A = file.readDataset<std::optional<double>>("some/dataset"), which returnsstd::nulloptifsome/datasetdoes not exist on file (instead of throwing an exception). - 6c0318d Added support for deleting links/soft links. Note that this does not recover storage space!
- ba15d79 Add overload to read attributes using only
h5pp::Options, and for reading as a custom h5Type. - 2bc2354 Add support for checking if an attribute exists in a link (by name):
h5pp::File::attributeExists(...). - fda82de Added support for reading any dataset into an
std::bytecontainer. - 23a6d51 e57e949 10d14b4 Added support for index wrapping over unsigned types: E.g. use index
-1to read the last element of a table (as in python). - e54c2ae Add appendTableRecords overload taking an existing TableInfo object
- 6d18873 Added support for creating soft/hard/external links
- c2996ae New
h5pp::File::FileHandleTokento keep the file handle alive during batch IO using RAII - 4e9747f Added support for reading object header information with
h5pp::File::getLinkInfo(linkpath)
Bug fixes
- 74d35a4 Fixed
h5pp::File::readTableFieldwhich did not return data at end of scope - 7df1ff2 cdb17c1 Fixed some minor issues with header includes of spdlog and fmt.
- c6770a9 Allow changing log level in const context
- 1461eee Fixed error with changing file close degree in the default property list
- 2980fe5 Fixed minor bug with reference counts
- f2f115f Fixed issues with chunk compression detection
- 1d097cc Updated find of std::filesystem to work on macos11
Minor changes
- 59de93f Renamed
h5pp::FilePermissiontoh5pp::FileAccess. The old name still works though. - bec90b2 37c7b0c Clarified logs and error messages
- bfa7de8 Check return values for error on all HDF5 calls
- 9257778 Speed up hyperslab selection
Updated dependencies
- Updated
HDF51.12.0 to 1.12.1 on conan installs (1.13.1 otherwise). - Updated
spdlog1.9.2 to 1.10.0. - Updated
fmt8.0.1 to 8.1.1
h5pp should remain compatible with older versions of these dependencies.
Solved issues
- Issue #6: Mention necessary compile flags for MSVC in documentation. Thanks @Fokatu.
- Issue #10: Clarified examples on writing structs. Thanks @FG-TUM.
- Issue #11: Fixed incompatibility with HDF5 1.13. Thanks @OlafHartwig.
- Issue #12: Fixed serious bug with circular includes when spdlog is disabled. Thanks @gayverjr.
Other
- Expanded documentation
- Simplified readme: Moved detailed installation instructions from
README.mdto documentation - A whole lot of work to install/link/find HDF5 robustly on all versions and platforms.
- cc653bd 644370a 7a538ce Updated the CMake+Conan integration workflow. Now using the
cmake_find_package_multigenerator by default. - aeec201 Added example showing how to traverse attributes.
- 11660cb Added example showing compound types with variable-length arrays.
- 6c771c1 Updated option for setting cmake verbosity (E.g. call CMake with
--loglevel=DEBUGto get more information during CMake configuration)