* CI: skip reviewer removal when they have already submitted a review
GitHub's API rejects removeRequestedReviewers for users who have already
reviewed; detect that case upfront via listReviews and report it clearly
instead of surfacing a cryptic API error.
* CI: defer reviewer assignment for draft PRs until ready for review
Add ready_for_review to the pull_request_target trigger so the workflow
fires when a draft is promoted. In the script, skip requestReviewers
(and the CODEOWNERS auto-assignment cleanup second pass) while the PR is
a draft; still assign the PR author and strip any reviewers GitHub
auto-assigned. When the PR is marked ready, treat it like a fresh open
and run the full load-balanced reviewer selection.
* CI: fix synchronize race — treat first synchronize as new PR when opened was cancelled
When a fork PR is created, GitHub fires both opened and synchronize.
With cancel-in-progress: true the synchronize run often wins, and the
opened run (which clears CODEOWNERS auto-assignments) is cancelled before
it completes. Detect this: if synchronize fires but no checklist comment
exists yet, run the full new-PR path (enforceSelection + load-balanced
reviewer assignment) instead of silently carrying forward all auto-assigned
reviewers.
* CI: enforce reviewer selection before posting @mentions
On synchronize, run enforceSelection against the ideal load-balanced
pick before building the checklist body so the @mentions are never
sent until the reviewer list is actually correct. Re-fetch the PR
after cleanup so confirmedRequested reflects reality, not the pre-
cleanup snapshot.
For workflow_run (review submitted), reviewer assignment is intentionally
left unchanged but @mentions are filtered to the ideal selection so
CODEOWNERS extras don't generate spurious notifications on comment edits.
* CI: preserve manually added reviewers on synchronize
Reverting the enforceSelection call on the non-first-run synchronize
path. There is no API way to distinguish CODEOWNERS auto-assignments
from manually added reviewers, so enforcing the load-balanced selection
on every synchronize would silently remove intentional additions.
The initial cleanup (opened or first-synchronize via openedWasSkipped)
already produces a correct reviewer list; subsequent synchronize and
workflow_run events carry it forward unchanged.
* CI: pin actions/github-script to commit hash in remove-reviewer.yml
zizmor requires actions to be pinned to a commit hash rather than a tag.
Use the same pinned hash (ed597411d8f924073f98dfc5c65a23a2325f34cd, v8.0.0)
already used in review-checklist.yml.
* CI: refactor review-checklist.js for readability
Extract the reviewer coordination logic out of the monolithic run()
function into named module-level helpers:
checklistExists() — single responsibility: does a checklist
comment already exist on the PR?
removeUnselected() — remove CODEOWNERS auto-assignments not in
the load-balanced selection set
requestReviewers() — request each reviewer individually so one
bad login cannot block the rest
removeUnselectedAfterDelay() — 15-second wait + re-fetch + re-enforce
for GitHub's async auto-assignment race
coordinateReviewers() — top-level dispatcher; the four event paths
(read-only, synchronize-normal, new-PR/draft,
new-PR/non-draft) are now explicit branches
with labelled comments instead of nested ifs
run() is now a straight pipeline of 8 numbered steps with no nested
async functions. Behaviour is unchanged.
* CI: extract convertGlobToRegex and use github.paginate consistently
Extract glob-to-regex conversion into a standalone helper and replace
manual pagination loops for listFiles and listReviews with github.paginate,
matching the existing style used for listComments and pulls.list.
* CI: restrict remove-reviewer workflow to main repo only
Adds a github.repository guard so the job does not run in forks,
preventing unintended resource consumption and command execution
against fork PRs.
* CI: restrict test-maven-packages workflow to main repo only
Adds github.repository guards to all three jobs so the workflow
does not evaluate in forks, preventing spurious "workflow file issue"
failures on push events in forked repositories.
* Revert "CI: restrict test-maven-packages workflow to main repo only"
This reverts commit cc1208226d.
What is HDF5?
This repository contains a high-performance library's source code and a file format specification that implements the HDF5® data model. The model has been adopted across many industries, and this implementation has become a de facto data management standard in science, engineering, and research communities worldwide.
The HDF Group is the developer, maintainer, and steward of HDF5 software. Find more information about The HDF Group, the HDF5 Community, and other HDF5 software projects, tools, and services at The HDF Group's website.
Quick Start
-
New to HDF5? Start with the INSTALL.md guide for compilation and installation instructions.
-
Ready to build? See INSTALL_CMake.md for CMake-based builds.
-
Running on HPC? Check out README_HPC.md for parallel HDF5 configuration.
Table of Contents
- What is HDF5?
- Quick Start
- Documentation
- Help and Support
- Forum and News
- Release Schedule
- Downloads and Source Code
- Java Maven Artifacts
- Contributing
- How to Cite HDF5
- Build Status
Documentation
Documentation for all HDF software is available at:
- All HDF Documentation: https://support.hdfgroup.org/documentation/index.html
- Latest HDF5 Library: https://support.hdfgroup.org/documentation/hdf5/latest
See the CHANGELOG.md file in the release_docs/ directory for information specific to the features and updates included in this release of the library.
Platform-Specific Guides
Several files in the docs/ directory provide platform-specific details:
| File | Description |
|---|---|
| INSTALL | General compilation and installation instructions (start here) |
| INSTALL_CMake.md | Building with CMake |
| README_HPC.md | Building and configuring Parallel HDF5 on HPC systems |
| INSTALL_Windows.md | Windows installation |
| INSTALL_Cygwin.md | Cygwin installation |
| USING_HDF5_CMake.md | Building HDF5 applications with CMake |
| USING_CMake_Examples.md | Building and testing HDF5 examples with CMake |
Help and Support
The HDF Group staffs a free Help Desk accessible at https://help.hdfgroup.org and also monitors the Forum. Our free support service is community-based and handled as time allows. We'll do our best to respond to your question as soon as possible, but please note that response times may vary depending on the complexity of the issue and staff availability.
If you're interested in guaranteed response and resolution times, a dedicated technical account manager, and more benefits (all while supporting the open-source work of The HDF Group), please check out Priority Support.
Forum and News
The HDF Forum is provided for public announcements, technical questions, and discussions of interest to the general HDF5 Community.
These forums are provided as an open and public service for searching and reading. Posting requires completing a simple registration and allows one to join in the conversation. Please read the quickstart guide for more information on how to get started.
Release Schedule
HDF5 does not follow a regular release schedule. Instead, updates are based on the introduction of new features and the resolution of bugs. However, we aim to have at least one annual release for each maintenance branch.
Release Progress
The badges above show the current progress of critical and high priority issues with colors that reflect completion status:
- 🟢 Green (90%+): Readying for Deployment - most issues completed
- 🟡 Yellow (60-89%): Nearing Completion - on track for release
- 🟠 Orange (40-59%): In Development - attention needed
- 🔴 Red (<40%): Initial Phase - significant issues remain
Click the badges to view the detailed project board with current release items.
Downloads and Source Code
Snapshots and Releases
- Development Snapshots: https://github.com/HDFGroup/hdf5/releases/tag/snapshot
- Latest Release: https://github.com/HDFGroup/hdf5/releases
- Previous Releases: https://support.hdfgroup.org/archive/support/ftp/HDF5/releases/index.html
- Development Code: https://github.com/HDFGroup/hdf5.git
HPC Testing Results
View HPC configure/build/test results on CDash
Java Maven Artifacts
HDF5 Java bindings and examples are available as Maven artifacts. For detailed usage instructions including dependency configuration, repository setup, and platform-specific builds, see HDF5Examples/JAVA/README-MAVEN.md.
Contributing
We welcome contributions to HDF5! Whether you're fixing bugs, adding features, or improving documentation, your help is appreciated.
How to Contribute
- Report Issues: Use our GitHub Issues to report bugs or request features
- Submit Pull Requests: Fork the repository, make your changes, and submit a PR
- Join Discussions: Participate in the HDF Forum
For detailed contribution guidelines, please contact us through the Help Desk.
How to Cite HDF5
If you use HDF5 in your research, please cite it. This repository includes a CITATION.cff file containing standard citation metadata.
Quick DOI: 10.5281/zenodo.17808558

