Releases: DavidAce/h5pp
Releases · DavidAce/h5pp
Expanded support for user-defined types
- 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
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
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
- 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
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
- Bug fix: The
h5pp_DIR
directory is now inserted intoCMAKE_MODULE_PATH
instead of appended, to prioritize finding the hand-made Find modules which are included withh5pp
. - 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
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
- 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
- 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
Big update to the functionality of find_package(H5PP)
- Added support for
COMPONENTS
andREQUIRED
andQUIET
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