===========================
New features
------------
- Apply optimized slice read to Blosc2-compressed `CArray` and `EArray`, with Blosc2 NDim 2-level partitioning for multidimensional arrays (1056). See "Multidimensional slicing and chunk/block sizes" in the User's Guide. Thanks to Marta Iborra and Ivan Vilata. This development was funded by a NumFOCUS grant.
- Add basic API for column-level attributes as `Col._v_col_attrs` (893 and 821). Thanks to Jonathan Wheeler, Thorben Menne, Ezequiel Cimadevilla Alvarez, odidev, Sander Roet, Antonio Valentino, Munehiro Nishida, Zbigniew Jędrzejewski-Szmek, Laurent Repiton, xmatthias, Logan Kilpatrick.
Other changes
-------------
- Add support for the forthcoming Python 3.12 with binary wheels and automated testing.
- Drop wheels and automated testing for Python 3.8; users or distributions may still build and test with Python 3.8 on their own (see commit ae1e60e and commit 47f5946).
- New benchmark for ERA5 climate data. Thanks to Óscar Guiñón.
- New "100 trillion baby" benchmark. Thanks to Francesc Alted.
- New benchmark for querying meteorologic data. Thanks to Francesc Alted.
Improvements
------------
- Use `H5Dchunk_iter` (when available) to speed up walking over many chunks in a very large table, as well as with random reads (991, 997, 999). Thanks to Francesc Alted and Mark Kittisopikul.
- Improve `setup.py` (now using `pyproject.toml` as per PEP 518) and `blosc2` discovery mechanism. Blosc2 may be used both via python-blosc2 or system c-blosc2 (987, 1000, 998, 1017, 1045). Thanks to Antonio Valentino, Ben Greiner, Iwo-KX, nega.
- Enable compatibility with Cython 3 (1008 and 1003). Thanks to Matus Valo and Michał Górny.
- Set GitHub workflow permissions to least privileges (1007). Thanks to Joyce Brum.
- Add `SECURITY.md` with security policy (1012 and 1011). Thanks to Joyce Brum.
- Handle py-cpuinfo missing in some platforms (1013). Thanks to Sam James.
- Avoid NumPy >= 1.25 deprecations, use `numpy.all`, `numpy.any`, etc. instead. Thanks to Antonio Valentino.
- Avoid C-related build warnings. Thanks to Antonio Valentino.
- Streamline CI wheel building & testing with `cibuildwheel`, more clear distinctions between build and runtime dependencies.
- Update included c-blosc to v1.21.5 (fixes SSE2/AVX build issue).
- Require python-blosc2 >= 2.2.8 or c-blosc2 >= 2.10.4 (Python 3.12 support and assorted fixes).
- Update external libraries for CI-based wheel builds (1018 and 967):
* hdf5 v1.14.2
* lz4 v1.9.4
* zlib v1.2.13
Bugfixes
--------
- Fix crash in Blosc2 optimized path with large tables (995 and 996). Thanks to Francesc Alted.
- Fix compatibility with NumExpr v2.8.5 (1046). Thanks to Antonio Valentino.
- Fix build errors on Windows ARM64 (989). Thanks to Cristoph Gohlke.
- Fix `ptrepack` failures with external links (938 and 990). Thanks to Adrian Altenhoff.
- Replace stderr messages with Python warnings (992 and 993). Thanks to Maximilian Linhoff.
- Fixes to CI workflow and wheel building (1009, 1047). Thanks to Antonio Valentino.
- Fix garbled rendering of `File.get_node` docstring (1021). Thanks to Steffen Rehberg.
- Fix open `extern "C"` block (1026). Thanks to Ivan Vilata.
- Fix Cython slice indexing under Python 3.12 (1033). Thanks to Zbigniew Jędrzejewski-Szmek.
- Fix unsafe temporary file creation in benchmark (1053). Thanks to Al Arafat Tanin (Project Alpha-Omega).
Thanks
------
In alphabetical order:
- Adrian Altenhoff
- Al Arafat Tanin
- Antonio Valentino
- Ben Greiner
- Cristoph Gohlke
- Ezequiel Cimadevilla Alvarez
- Francesc Alted
- Ivan Vilata
- Iwo-KX
- Jonathan Wheeler
- Joyce Brum
- Laurent Repiton
- Logan Kilpatrick
- Mark Kittisopikul
- Marta Iborra
- Matus Valo
- Maximilian Linhoff
- Michał Górny
- Munehiro Nishida
- nega
- odidev
- Óscar Guiñón
- Sam James
- Sander Roet
- Seth Troisi
- Steffen Rehberg
- Thorben Menne
- xmatthias
- Zbigniew Jędrzejewski-Szmek