# What’s new in h5py 3.15

## New features

- Added pre-built packages for Python 3.14 (PR 2617).

- Added pre-built packages for Windows on ARM devices (PR 2653).

- Added pre-built packages for Linux with musl libc, such as Alpine Linux, on both both `x86_64` and `aarch64` architectures (PR 2632). See PEP 656 for the details of the `musllinux` platform tag.

- `h5py.Dataset.iter_chunks()` accepts slice objects with the `None` value for `slice.start` and `slice.stop` attributes, or integers (PR 2657). Example: `dset.iter_chunks((slice(None, None), 4))`. This is equivalent to `dset[:,4]`.

- A new track_times parameter when creating a group or a file to control whether creation, modification, change and access timestamps are stored for group objects (PR 2611). This is False by default.

- Work to better support free-threaded mode in CPython (PR 2658, PR 2678). This is not substantially tested yet, but some of the most glaring issues have been resolved. See free-threading.

## Breaking Changes and Deprecations

- Support for Python 3.9 was dropped. Python 3.10 or newer is now required to build or install h5py from this version on (PR 2640).

- The minimum supported version of HDF5 is now 1.10.7, and within the 1.12 series the minimum supported version is now 1.12.1 (PR 2605).

- Timestamps are no longer stored by default for groups (including the root group) if the `track_order` parameter is set (PR 2611). Previously, setting this parameter also caused timestamps to be stored in the file.

- Pre-emptively fix build issue with Numpy 10 or above (PR 2638).

## Bug fixes

- Fixed `h5py.h5p.PropLAID.get_elink_prefix` method (PR 2712).

- Fixed a segfault reading unallocated variable length string data as NumPy variable length strings (PR 2630).

- Fixed an error reading certain types of variable length data where an entry has 0 length (PR 2717).

- Fixed some SyntaxWarnings which might become errors in a future Python version (PR 2597).

## Building h5py

- The minimum versions build-time Python requirements were updated to `Cython==3.0.0` (up from `0.29.1`, PR 2647), and `numpy==1.25.0` (down from `2.0.0`, PR 2646). We still recommend building with numpy 2 or newer whenever possible, this is done to improve support for external package ecosystems, where the system uses the same version of packages for building and installation.

- Deprecated Cython preproc macros (`DEF`, `IF`, `ELIF` and `ELSE`) were replaced with build-time `tempita`-based templating (PR 2637).

- Some work to support building h5py with HDF5 2.0 development versions (PR 2636).

- Building h5py using the standard Python mechanisms now uses a custom build backend within the source folder, wrapping setuptools, to avoid the use of the deprecated `setup_requires` parameter (PR 2659).

## 3.15.1 bug fix release

- Pre-built MacOS packages are compatible with older versions of MacOS again, back to 11.0 for ARM and 10.15 for Intel (PR 2722). This also appears to fix some mysterious regressions on newer versions of MacOS, although we don’t fully understand why.

This change only affects the packages we provide on PyPI. There was also a small change to a test, but downstream packagers can ignore this release.