v3.0.0
Version 3.0.0
This version is a major version update and contains a few breaking changes.
Read the migration guide: https://highfive-devs.github.io/highfive/md__2home_2runner_2work_2_high_five_2_high_five_2doc_2migration__guide.html
When updating consider going through v2.10, because it contains deprecation
warnings for most breaking changes.
The minimum version for C++ has been increased to C++14.
Highlights
Some of the important improvements made for v3:
- Fix serialization of Eigen objects, see below.
- Completely rewritten, modern CMake code.
- Macrofree optional dependencies. Simply include the header related to the
dependency to activate it. - First-class support of all optional dependencies, also those previously
only supported by Easy. - Logically separate
read(write) andread_raw(write_raw). - Replace broadcasting with
reshapeMemSpaceandsqueezeMemSpace. - Replace
enums withenum class, e.g.File::AccessMode.
See CHANGELOG.md for more details.
Eigen Serialization
Prior to v2.8, HighFive had a bug that would write column-major Eigen objects
as row-major; and read the data and store it as if the Eigen object were
row-major.
This bug consists of two mistakes that combined cancel each other in common
circumstances, i.e. write/read cycles. However, the data on disk would be
transposed from what one would commonly expect.
If you suspect you're affected, update via v2.10, because it'll throw an
exception if the buggy code path is used. Then think very carefully before
continuing.