Skip to content

Releases: DavidAce/h5pp

Expanded support for user-defined types

29 Jan 15:52
Compare
Choose a tag to compare
  • Support for user-defined compound HDF5 types
  • Support for HDF5 Tables with user-defined compound HDF5 types as entries

See examples 5 and 6 in the wiki for more details

Large update

28 Jan 12:28
Compare
Choose a tag to compare

Rewrite of fundamental parts of h5pp adding many features without breaking API for older versions

For users

  • Users can now query type information and size of datasets and attributes before reading
  • Users can now select layout H5D_COMPACT, H5D_CONTIGUOUS and H5D_CHUNKED directly when writing a new dataset
  • Users can specify chunking dimensions when writing a new H5D_CHUNKED dataset. If not specified, these dimensions will be computed.
  • Users can now set default compression level or specify one directly when writing a dataset
  • Users can now opt in to dependencies like Eigen3 and spdlog
  • Added support for types "long double" and "short"
  • Clarified many debugging messages

Internal

  • New wrapper classes for HDF5 "hid_t" identifiers. These identifiers are numbers that are analogous to pointers, they need to be managed (created/destroyed) by the user. To avoid resource leaks, the new wrapper class manages the life-time of these identifiers in a type-safe way
  • New non-owning wrapper for c-style arrays
  • Reorganisation of namespaces and better naming convention
  • Many new sfinae helper template functions to scan data types
  • More precise scan of type info before reading/writing/bootstrapping
  • Eliminated need for experimental/type_traits header by rewriting sfinae functions
  • New ctests for typeinfo

Compatibility update

07 Jan 08:52
Compare
Choose a tag to compare

Major

  • Added compatibility with Windows (MSVC)
  • Added compatibility with Mac OSX
  • Added ghc::filesystem as drop-in replacement for compilers where std::filesystem is missing
  • Mimic std::experimental::is_detected on compilers where experimental/type_traits is missing

Minor

  • Added CI testing for windows and osx for various download methods.
  • Added "find-only" as download method.
  • Print type information for debugging

First stable release

02 Jan 23:29
Compare
Choose a tag to compare
  • Cleaned up conan related build code
  • Simplified linking of targets
  • Expanded on usage examples and explanation of linking in README.md
  • Updated the name of member functions writeAttributeToLink() to writeAttribute() to follow naming convention
  • New conan repo for h5pp: https://bintray.com/davidace/conan-public/h5pp%3Adavidace
  • New DOWNLOAD_METHOD selection method to choose between "none", "conan" and "native" download methods for dependencies
  • New conanfile.py recipe added.

Support for reading attributes

21 Dec 10:19
Compare
Choose a tag to compare

New features:

  • Added support for reading attributes h5pp::File::readAttribute(DataType &data, const std::string &attributeName, const std::string &linkPath).
  • Added function to list all attributes std::vector<std::string> h5pp::File::getAttributeNames(const std::string &linkPath)

Improvements:

  • Corrected size for char arrays using strlen instead of size.
  • Stronger testing for reading and writing attributes
  • Target-based robust transitive linking for hdf5

Resolved static linking errors related to pthread

19 Dec 10:34
Compare
Choose a tag to compare
  • Bug fix: The h5pp_DIR directory is now inserted into CMAKE_MODULE_PATH instead of appended, to prioritize finding the hand-made Find modules which are included with h5pp.
  • Use "pthread" instead of "-lpthread" when linking to avoid downstream errors. When linking statically, one may need -Wl, --whole-archive phread -Wl,--no-whole-archive as described in stackoverflow. If we mix "-lpthread" and "pthread" and then --whole-archive, CMake is not smart enough to unify the link flags and gives a multiple definition error. Sticking to "pthread" seems most flexible since CMake can add "-l" as needed.
  • Preempt Threads::Threads setting it to link "pthread" if not defined already.

Tweak release + bugfix

16 Dec 14:07
Compare
Choose a tag to compare

Re-release of v0.4.7 due to find_package module bugfix

  • CMAKE_MODULE_PATH needs h5pp_DIR first to give hand made modules priority
  • Controllable parallel build command
  • Put an upper cap on number of cores when building in ci testing
  • Use tar.gz sources instead of git when possible
  • Print nicer host properties
  • Better printout messages when building dependencies
  • Better honor install location of dependencies
  • Changed default install dir for examples to share/h5pp/examples
  • Avoid overwriting HDF5_ROOT
  • Check that version files for dependencies exist before reading

Continued work on adding robustness to find/link steps

14 Dec 13:15
Compare
Choose a tag to compare
  • Added Findspdlog.cmake in the same style as FindEigen3.cmake
  • Added version check for spdlog to avoid ubuntu xenial apt version which is too old
  • Replaced Threads::Threads with -lpthread because for some reason that causes less linking problems when h5pp is linked from other projects.

Improved support for finding and overriding search paths for dependencies

14 Dec 01:25
Compare
Choose a tag to compare
  • h5pp now supports spdlog with external fmt and compiled library to speed up compile times.
  • Corrected header includes for spdlog relating to fmt. Headers are included differently if fmt is extrnal.
  • Eigen can be found in given directories with override mechanism by defining variables such as Eigen3_DIR or EIGEN3_ROOT. The found path gets exported in H5PP_DIRECTORY_HINTS. This is useful when compiling with conan/conda external dependencies.
  • h5pp can now be built with conan-only dependencies

Updated cmake find flexibility

13 Dec 12:33
Compare
Choose a tag to compare

Big update to the functionality of find_package(H5PP)

  • Added support for COMPONENTS and REQUIRED and QUIET in find_package(h5pp) when searching for h5pp and its dependencies. Valid components are EIGEN3, SPDLOG, HDF5, NONE and/or ALL. Example: find_package(h5pp 0.4.4 COMPONENTS EIGEN3 SPDLOG QUIET)
  • If no COMPONENTS are specified the default is to look for all dependencies.
  • Modernized travis-ci testing script
  • New more robust search behavior when looking for HDF5 in various places /conda/apt/prefix/HDF5_ROOT...)
  • Enabled C language when searching for HDF5 C components