Go to file
Quincey Koziol 2c58357b8f
Refactor H5FD and package initialization (#4934)
- Reverts PR#1024, which (unnecessarily) switched from deferred
  package initialization to centralized initialization of all packages
  and introduced H5FDperform_init() to wrap an internal routine
  to initialize VFD plugins.
- Went back to deferred package initialization (primarily), to
  eliminate unnecessary resource use. (Performance has been
  verified to be the same either way)
- Switched VFD plugins to use “#define (H5OPEN, )” pattern,
  with registration of internal VFD plugins at library initialization
  time. Eliminates calling API routine (H5FDperform_init) from
  within the library, which was deadlocking threadsafe concurrency.
  And also eliminates exposing internal library routines in a public
  header file.
- Removed copy-and-paste replicas of the H5OPEN macro and put
  a (better) single definition in H5public.h
- Separated API and internal routine calls in stdio and multi VFD
  plugins into separate source files, so that the library doesn’t
  invoke API routines internally (also a deadlock problem for
  threadsafe concurrency). Also needed a “private” header for these
  plugins.
- Separated registering/unregistering a VFD plugin from initializing
  /finalizing the plugin, instead of blurring those ideas together.
  Defers the VFD plugin init to when it’s actually used, which reduces
  resource usage, especially for the MPI-based plugins like the subfiling,
  etc.
- Refactored the copy-and-pasted check for locking into a central
  location in the H5FD.c code.
- Fixed a bunch of compiler warnings, especially ones that trigger CI
  failures with -Werror
2024-10-24 06:28:40 -07:00
.devcontainer Added a GitHub Codespaces configuration. (#3966) 2024-01-30 09:04:27 -08:00
.github Refactor H5FD and package initialization (#4934) 2024-10-24 06:28:40 -07:00
bin Remove bin/cmakehdf5 2024-10-22 14:42:56 -05:00
c++ Renamed COPYING to LICENSE (#4978) 2024-10-18 21:13:04 -07:00
config Updated zlib and libaec compression versions (#4953) 2024-10-23 19:35:34 -07:00
doc Prefix remaining CMake options except for CMake BUILD* variables (#4990) 2024-10-22 15:40:54 -07:00
doxygen Renamed COPYING to LICENSE (#4978) 2024-10-18 21:13:04 -07:00
fortran Renamed COPYING to LICENSE (#4978) 2024-10-18 21:13:04 -07:00
HDF5Examples Renamed COPYING to LICENSE (#4978) 2024-10-18 21:13:04 -07:00
hl Remove some Solaris Studio work-arounds (#4979) 2024-10-20 12:47:52 -07:00
java Renamed COPYING to LICENSE (#4978) 2024-10-18 21:13:04 -07:00
m4 Renamed COPYING to LICENSE (#4978) 2024-10-18 21:13:04 -07:00
release_docs Refactor H5FD and package initialization (#4934) 2024-10-24 06:28:40 -07:00
src Refactor H5FD and package initialization (#4934) 2024-10-24 06:28:40 -07:00
test Add support for native zlib-ng in the library and compression references (#4935) 2024-10-23 16:20:15 -05:00
testpar Move h5_test_init() calls after MPI_Init (#4988) 2024-10-21 08:36:23 -07:00
tools Add support for native zlib-ng in the library and compression references (#4935) 2024-10-23 16:20:15 -05:00
utils Renamed COPYING to LICENSE (#4978) 2024-10-18 21:13:04 -07:00
.autom4te.cfg Replace COPYING with LICENSE in workflows (#4989) 2024-10-22 15:39:35 -07:00
.clang-format Refactor threading and other concurrency support (#4469) 2024-07-31 12:34:43 -05:00
.codespellrc Fix spelling (#4522) 2024-05-23 16:44:33 -05:00
.gitattributes Replace COPYING with LICENSE in workflows (#4989) 2024-10-22 15:39:35 -07:00
.gitignore Check in generated files in src (#4981) 2024-10-20 12:48:46 -07:00
.h5chkright.ini Replace COPYING with LICENSE in workflows (#4989) 2024-10-22 15:39:35 -07:00
ACKNOWLEDGMENTS Refactor threading and other concurrency support (#4469) 2024-07-31 12:34:43 -05:00
acsite.m4 Renamed COPYING to LICENSE (#4978) 2024-10-18 21:13:04 -07:00
autogen.sh Renamed COPYING to LICENSE (#4978) 2024-10-18 21:13:04 -07:00
CITATION.cff Correct URLs in documentation (#4823) 2024-09-12 22:46:58 -05:00
CMakeFilters.cmake Add support for native zlib-ng in the library and compression references (#4935) 2024-10-23 16:20:15 -05:00
CMakeInstallation.cmake Renamed COPYING to LICENSE (#4978) 2024-10-18 21:13:04 -07:00
CMakeLists.txt Prefix remaining CMake options except for CMake BUILD* variables (#4990) 2024-10-22 15:40:54 -07:00
CMakePlugins.cmake Renamed COPYING to LICENSE (#4978) 2024-10-18 21:13:04 -07:00
CMakePresets.json Updated zlib and libaec compression versions (#4953) 2024-10-23 19:35:34 -07:00
CMakeTests.cmake Renamed COPYING to LICENSE (#4978) 2024-10-18 21:13:04 -07:00
CMakeVOL.cmake Renamed COPYING to LICENSE (#4978) 2024-10-18 21:13:04 -07:00
CODE_OF_CONDUCT.md Fix spelling (#4522) 2024-05-23 16:44:33 -05:00
configure.ac Renamed COPYING to LICENSE (#4978) 2024-10-18 21:13:04 -07:00
CONTRIBUTING.md Renamed COPYING to LICENSE (#4978) 2024-10-18 21:13:04 -07:00
CTestConfig.cmake Renamed COPYING to LICENSE (#4978) 2024-10-18 21:13:04 -07:00
LICENSE Renamed COPYING to LICENSE (#4978) 2024-10-18 21:13:04 -07:00
LICENSE_LBNL_HDF5 Renamed COPYING to LICENSE (#4978) 2024-10-18 21:13:04 -07:00
Makefile.am Renamed COPYING to LICENSE (#4978) 2024-10-18 21:13:04 -07:00
Makefile.dist Renamed COPYING to LICENSE (#4978) 2024-10-18 21:13:04 -07:00
README.md Renamed COPYING to LICENSE (#4978) 2024-10-18 21:13:04 -07:00
SECURITY.md Create Security Policy (#3152) 2023-06-18 22:14:56 -07:00
UserMacros.cmake Renamed COPYING to LICENSE (#4978) 2024-10-18 21:13:04 -07:00

HDF5 version 1.17.0 currently under development

HDF5 Logo

develop cmake build status develop autotools build status HDF-EOS5 build status netCDF build status h5py build status CVE regression HDF5 VOL connectors build status HDF5 VFD build status 1.14 cmake build status 1.14 autotools build status BSD

HPC configure/build/test results

Please refer to the release_docs/INSTALL file for installation instructions.

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.

DOCUMENTATION

Documentation for all HDF software is available at:

https://support.hdfgroup.org/documentation/index.html

Documentation for the current HDF5 library release is available at:

https://support.hdfgroup.org/releases/hdf5/latest-docs.html

The latest Doxygen documentation generated on changes to develop, which does not correspond to any particular library release, is available at:

https://hdfgroup.github.io/hdf5/develop

See the RELEASE.txt file in the release_docs/ directory for information specific to the features and updates included in this release of the library.

Several more files are located within the release_docs/ directory with specific details for several common platforms and configurations.

INSTALL - Start Here. General instructions for compiling and installing the library
INSTALL_CMAKE  - instructions for building with CMake (Kitware.com)
INSTALL_parallel - instructions for building and configuring Parallel HDF5
INSTALL_Windows and INSTALL_Cygwin - MS Windows installations.

HELP AND SUPPORT

Information regarding Help Desk and Support services is available at

https://help.hdfgroup.org

FORUM and NEWS

The HDF Forum is provided for public announcements 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 instructions pertaining to the Forum's use and configuration.

RELEASE SCHEDULE

HDF5 release schedule

HDF5 does not release on a regular schedule. Instead, releases are driven by new features and bug fixes, though we try to have at least one release of each maintenance branch per year. Future HDF5 releases indicated on this schedule are tentative.

Release New Features
2.0.0 Drop Autotools support, complex number support, updated library defaults (cache sizes, etc.), semantic versioning
FUTURE Multi-threaded HDF5, crashproofing / metadata journaling, Full (VFD) SWMR, encryption, digital signatures, sparse datasets, improved storage for variable-length datatypes, better Unicode support (especially on Windows)

NOTE: In the March 2025 release we will begin using semantic versioning (https://semver.org/) and the previously announced 1.16.0 version will instead be numbered 2.0.0.

This list of feature release versions is also tentative, and the specific release in which a feature is introduced may change.

SNAPSHOTS, PREVIOUS RELEASES AND SOURCE CODE

Periodically development code snapshots are provided at the following URL:

https://github.com/HDFGroup/hdf5/releases/tag/snapshot

Source packages for current and previous releases are located at:

hdf5 1.14 releases: https://support.hdfgroup.org/releases/hdf5/v1_14/index.html

Archived releases: https://support.hdfgroup.org/archive/support/ftp/HDF5/releases/index.html

Development code is available at our Github location:

https://github.com/HDFGroup/hdf5.git