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
  :meth:`.Group.create_dataset` to add timestamps again.
* Added ``locking`` :class:`.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 :class:`.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 :class:`.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 :class:`.FileID` class.
* The built-in ``reversed()`` function now works with various dictionary-like
  interfaces: :class:`.Group`, :class:`.GroupID`, :meth:`.Group.keys`,
  :meth:`.Group.values` and :meth:`.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 :meth:`.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.
