# What’s new in h5py 3.12

## New features

- h5py now has pre-built packages for Python 3.13.

  - However, h5py is not yet compatible with the new free-threading mode; we’re tracking work on that in issue GH2475.

## Breaking changes

- Support for Python 3.8 was dropped (PR 2471). Python 3.9 or newer is required to build or install h5py 3.12.

- The minimum supported version of HDF5 was increased to 1.10.6 (PR 2486). If you need h5py on HDF5 1.10.4 or .5, please use h5py 3.11.

- The fill time for chunked storage was previously set to `h5d.FILL_TIME_ALLOC`. Now this the default comes from HDF5, which uses `h5d.FILL_TIME_IFSET` (equivalent to `fill_time='ifset'`) (PR 2463). Please use `fill_time='alloc'` if the change is a problem for you.

## Exposing HDF5 functions

- Expose fill time option in dataset creation property list via the `fill_time` parameter in `create_dataset()` (PR 2463).

## Bug fixes

- Fix an error where native float16 support is not available (PR 2422).

- Fixed values of `H5F_close_degree_t` enum (PR 2433).

- External links are now accessed with libhdf5’s default access properties (PR 2433).

- Fix the iteration order for the root group in a file with creation order tracked (PR 2410).

- Fixed some deprecation warnings from NumPy (PR 2416).

## Building h5py

- Require a newer version of mpi4py for Python 3.12 (PR 2418).

- The test suite is now configured to fail on unexpected warnings (PR 2428).

- The generated Cython wrapper code (`defs.*` & `_hdf5.pxd`) is now specific to the version of HDF5 it’s building for. If the version of HDF5 has changed, `api_gen.py` should be run automatically to recreate this (PR 2479, PR 2480).

- Various PRs modernising & cleaning up old Cython code, see the 3.12 milestone on Github for details.

## 3.12.1 bug fix release

- Fix bundling HDF5 DLLs in pre-built packages for Windows (PR 2507).