# What’s new in h5py 3.5

## New features

- Datasets are now created without timestamps by default, making it easier to create more consistent files. Pass `track_times=True` to `Group.create_dataset()` to add timestamps again.

- Added `locking` `File` argument to select HDF5 file locking behavior.

- Enable setting file space page size when creating new HDF5 files. A new named argument `fs_page_size` is added to the `File` class.

- Enable HDF5 page buffering, a low-level caching feature that may improve overall I/O performance in some cases. Three new named arguments are added to the `File` class: `page_buf_size`, `min_meta_keep`, and `min_raw_keep`.

- Get and reset HDF5 page buffering statistics. Available as the low-level API of the `FileID` class.

- The built-in `reversed()` function now works with various dictionary-like interfaces: `Group`, `GroupID`, `Group.keys()`, `Group.values()` and `Group.items()`.

## Exposing HDF5 functions

- `H5Pset_file_locking` and `H5Pget_file_locking` (for HDF5 >= 1.12.1 or 1.10.x >= 1.10.7)

- `H5Freset_page_buffering_stats`

- `H5Fget_page_buffering_stats`

- `H5Pset_file_space_page_size`

- `H5Pget_file_space_page_size`

- `H5Pset_page_buffer_size`

- `H5Pget_page_buffer_size`

## Breaking changes & deprecations

- Dataset timestamps are no longer written by default for new datasets. Pass `track_times=True` to `Group.create_dataset()` if you need them.

- The IPython completer code no longer tries to work with very old versions of IPython (before 1.0).

## Bug fixes

- Fix a memory leak when reading data. This particularly affected code making many small reads.

- `dataset == array` now behaves the same way as `array == dataset`: the HDF5 dataset is read and NumPy makes a boolean array.

- The IPython completer code no longer imports the `readline` module.