Skip to content

v3.0.0

Choose a tag to compare

@1uc 1uc released this 01 Jul 07:12
· 24 commits to main since this release
364f024

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) and read_raw (write_raw).
  • Replace broadcasting with reshapeMemSpace and squeezeMemSpace.
  • Replace enums with enum 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.

See BlueBrain/HighFive#532