# Release notes for PyTables 2.4 series

Author: | PyTables maintainers
Contact: | pytables@googlemail.com

## Changes from 2.3.1 to 2.4

### New features

- Improved HDF5 error logging management:
  - added a new function, `silenceHDF5Messages()`, for suppressing (and re-enabling) HDF5 messages. By default HDF5 error logging is now suppressed. Closes gh-87.
  - now all HDF5 error messages and trace-backs are trapped and attached to the `exceptions.HDF5ExtError` exception instances. Closes gh-120.
- Added support for the float16 data type. It is only available if numpy provides it as well (i.e. numpy >= 1.6). See gh-51.
- Leaf nodes now have attributes for retrieving the size of data in memory and on disk. Data on disk can be compressed, so the new attributes make it easy to compute the data compression ration. Thanks to Josh Ayers (close gh-141).
- The maximum number of threads for Blosc and Numexpr is now handled using the `parameters.MAX_BLOSC_THREADS` and `parameters.MAX_NUMEXPR_THREADS` parameters respectively. This allows a more fine grained configuration capability. Closes gh-142.
- ndim (read-only) attribute added to `Leaf`, `Atom` and `Col` objects (closes gh-126).
- Added read support for variable length string attributes (non scalar attributes are converted into numpy arrays with ‘O8’ type). See gh-54.

### Other improvements

- Dropped support for HDF5 1.6.x. Now PyTables uses the HDF5 1.8 API (closes gh-105).
- Blosc updated to v. 1.1.3.
- The Blosc compression library is now automatically disabled on platforms that do not support unaligned memory access (see also https://github.com/FrancescAlted/blosc/issues/3 and http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=661286).
- Improved bzip2 detection on Windows (gh-116). Thanks to cgohlke.
- For Windows, the setup.py script now has the ability to automatically find the HDF5_DIR in the system PATH. Thanks to Mark (mwiebe).
- Improved multi-arch support in GNU/Linux platforms (closes gh-124) Thanks to Julian Taylor and Picca Frederic-Emmanuel.
- Use new style syntax for exception raising. Closes gh-93.
- Fixed most of the warnings related to py3k compatibility (see gh-92).
- Fixed pyflakes warnings (closes gh-102).
- Cython extensions updated to use new constructs (closes gh-100).
- Reduced the number of build warnings (closes gh-101).
- Removed the old lrucache module. It is no more needed after the merge with PyTables Pro (closes gh-118).
- Added explicit (import time) testing for hdf5dll.dll on Windows to improve diagnostics (closes gh-146). Thanks to Mark (mwiebe).

### Documentation improvements

- new coockbook section (contents have been coming from the PyTables wiki on http://www.pytables.org)
- complete rework of the library reference. Now the entire chapter is generated from docstrings using the sphinx autodoc extension. A big thank you to Josh Ayers. Closes gh-148.
- new sphinx theme based on the cloud template

### Bugs fixed

- Fixed a segfault on platforms that do not support unaligned memory access (closes: gh-134). Thanks to Julian Taylor.
- Fixed broken inheritance in `IsDescription` classes (thanks to Andrea Bedini). Closes gh-65.
- Fixed table descriptions copy method (closes gh-131).
- Fixed open failures handling (closes gh-158). Errors that happen when one tries to open an invalid HDF5 file (e.g. an empty file) are now detected earlier by PyTables and a proper exception (`exceptions.HDF5ExtError`) is raised. Also, in case of open failures, invalid file descriptors are no more cached. Before is fix it was not possible to completely close the bad file and reopen the same path, even if a valid file was created in the meanwhile. Thanks to Daniele for reporting and for the useful test code.
- Fixed support to rich structured numpy.dtype in `description.descr_from_dtype()`. Closes gh-160.
- Fixed sorting of nested tables that caused AttributeError. Closes gh-156 and gh-157. Thanks to Uwe Mayer.
- Fixed flavor deregistration (closes gh-163)

### Deprecations

- The `parameters.MAX_THREADS` configuration parameter is now deprecated. Please use `parameters.MAX_BLOSC_THREADS` and `parameters.MAX_NUMEXPR_THREADS` instead. See gh-142.
- Since the support for HDF5 1.6.x has been dropped, the warn16incompat argument of the `File.createExternalLink()` method and the `exceptions.Incompat16Warning` exception class are now deprecated.

> Enjoy data!

> —The PyTables Team