Files
hdf5/release_docs
M. Scot Breitenfeld 305f1df3bf Use vendored Ryu for shortest-round-trip filter-param formatting
H5Z__format_double_canonical() previously found the shortest round-tripping
%.*g precision by brute-force search, verified with an strtod() readback.
On HDFGroup/hdf5#6153 we agreed a well-tested library was the safer choice
for a conversion that lands in the on-disk format, and settled on Ryu.

Vendors the double-to-shortest-decimal subset of Ryu (src/ryu), following
the same pattern as the existing tomlc17 vendoring: pristine upstream
sources pinned to a commit, per-file SHA-256s, an HDF5-authored
h5_ryu_prefix.h renaming its globals via force-include, and matching CMake
treatment for symbol visibility and warnings.

Ryu emits unconditional scientific notation with no padding (3.0 -> "3E0"),
so H5Z__format_double_canonical() takes its digit string and decimal
exponent apart and lays them out %g-style -- fixed-point in the human-scale
range, scientific outside it -- which keeps the canonical form unchanged
(rate = 3.5, not rate = 3.5E0) and needs no strtod() round-trip check: the
re-layout only moves the decimal point. Ryu also writes ASCII digits
directly rather than through locale-sensitive snprintf(), so the
localeconv() decimal-separator fixup the old implementation needed is gone.

Updated the get_config plugin contract, the h5repack/h5tools rationale
comments, and tooling (clang-format, codespell, format_source) that
exempted src/tomlc17 to exempt src/ryu the same way.

Verified with a 2M-sample bit-pattern sweep plus all 2098 powers of two
round-tripping bit-exact through the new formatter, and the full tfilter2
canonicalization suite passing unchanged.
2026-09-19 18:11:31 -05:00
..
2026-07-24 07:13:52 -05:00
2024-05-23 16:44:33 -05:00

The release_docs directory

This directory contains release artifacts only: changelogs, version history, release process documentation, and maintainer information.

User-facing guides (installation, build instructions, platform-specific docs) have been moved to the docs/ directory.

Contents

CHANGELOG.md (formerly RELEASE.txt)

This is the changelog for the current version of the library.

For a MAJOR release (or in develop) this file lists all the changes since the last major version. For a MINOR release (or in a maintenance branch), this file lists all the changes since the last release in the maintenance branch.

Examples:

  • The file for HDF5 1.14.0 includes all the changes since HDF5 1.12.0
  • The file for HDF5 1.10.9 includes all the changes since HDF5 1.10.8
  • The file in develop includes all the changes since the last major release
  • The file in hdf5_1_14 includes all the changes since the last minor HDF5 1.14 release

HISTORY files

The HISTORY files contain the history of this branch of HDF5. They fall into three categories.

HISTORY-[VERSION 1]-[VERSION 2].txt

These files are created when we release a new major version and include all the changes that were made to the develop branch while creating a major release.

HISTORY-[VERSION].txt

This file contains the changes that were made to a maintenance branch since it split off from develop. It will also be found in the develop branch when experimental releases have been created.

Note that we make no effort to bring maintenance branch HISTORY files back to develop. If you want to compare, say, 1.10.4 with 1.12.3, you'd have to get the history files from those releases and compare them by hand.

RELEASE_PROCESS.md

Documentation for how releases are created and managed.

MAINTAINERS.md

Maintainer information for the project.

Creating new releases

MAJOR release

  • If there were experimental releases, merge the experimental HISTORY file and the current CHANGELOG.md by category to create a separate, unified file that ignores the experimental releases. Don't check this in yet or clobber any existing HISTORY/RELEASE files, but put it someplace handy for use in later steps.

  • Create the new maintenance branch

In develop:

  • Create the new HISTORY-\[VERSION 1\]-\[VERSION 2\].txt file
    • If there is an experimental HISTORY file, add CHANGELOG.md to the beginning of it and use that
    • Otherwise, start with CHANGELOG.md
    • Add the introduction boilerplate like in the other HISTORY files (TOC, etc.)
  • Delete any experimental HISTORY file
  • Clear out CHANGELOG.md

Note that we're KEEPING any experimental release history information in the HISTORY-\[VERSION 1\]-\[VERSION 2\].txt file, so do NOT use the merged file in the above steps!

In the new maintenance branch:

  • Create the new HISTORY-\[VERSION\].txt file

    • If there is an experimental HISTORY file use the combined file you created earlier
    • Otherwise, start with CHANGELOG.md
    • Add the introduction boilerplate like in the other HISTORY files (TOC, etc.)
  • Delete any experimental HISTORY file

  • Clear out CHANGELOG.md

  • Create the new release branch

In the new release branch:

  • If there were experimental releases, use the combined file you created earlier as CHANGELOG.md
  • Otherwise the CHANGELOG.md will be used as-is

MINOR release

  • Create the release branch

In the maintenance branch:

  • Add the contents of CHANGELOG.md to the beginnnig of HISTORY-\[VERSION\].txt
  • Clear out CHANGELOG.md

EXPERIMENTAL release

  • Add the contents of CHANGELOG.md to the beginnnig of HISTORY-\[VERSION\].txt
  • Clear out CHANGELOG.md