Skip to content

Version 1.10.0

Choose a tag to compare

@DavidAce DavidAce released this 18 Apr 18:31
· 283 commits to master since this release

Breaking changes

  • ecb5089 Changed the order of arguments for attribute functions for consistency: The new convention is to always use linkPath before attrName.
    auto A = file.readAttribute<T>("nameOfAttribute", "path/to/link");
    // Changes to
    auto A = file.readAttribute<T>("path/to/link", "nameOfAttribute");
    If this type of mistake is detected, h5pp will throw a runtime exception with a message like:
    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 old TableInfo still exists and now derives from TableFieldInfo
    • 02bc055 New function h5pp::File::getTableFieldInfo to get table field information such as names, sizes and offsets.
    • 96d998a New function h5pp::File::fieldExists to check if table fields exist by name or index.
  • 08adc5c ab1bf62 Added support for reading into an std::optional<T>. E.g. auto A = file.readDataset<std::optional<double>>("some/dataset"), which returns std::nullopt if some/dataset does 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::byte container.
  • 23a6d51 e57e949 10d14b4 Added support for index wrapping over unsigned types: E.g. use index -1 to 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::FileHandleToken to 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::readTableField which 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::FilePermission to h5pp::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 HDF5 1.12.0 to 1.12.1 on conan installs (1.13.1 otherwise).
  • Updated spdlog 1.9.2 to 1.10.0.
  • Updated fmt 8.0.1 to 8.1.1

h5pp should remain compatible with older versions of these dependencies.

Solved issues

Other

  • Expanded documentation
  • Simplified readme: Moved detailed installation instructions from README.md to 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_multi generator 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=DEBUG to get more information during CMake configuration)