Skip to content

Latest commit

 

History

History
1902 lines (1319 loc) · 61.2 KB

release.rst

File metadata and controls

1902 lines (1319 loc) · 61.2 KB

Release notes

Unreleased

Enhancements

Maintenance

2.17.1

Enhancements

Docs

Maintenance

2.17.0

Enhancements

Docs

Maintenance

2.16.1

Maintenance

2.16.0

Enhancements

Maintenance

2.15.0

Enhancements

Maintenance

Documentation

Bug fixes

2.14.2

Bug fixes

2.14.1

Documentation

2.14.0

Major changes

Bug fixes

2.13.6

Maintenance

2.13.5

Bug fixes

2.13.4

Appreciation

Special thanks to Outreachy participants for contributing to most of the maintenance PRs. Please read the blog post summarising the contribution phase and welcoming new Outreachy interns: https://zarr.dev/blog/welcoming-outreachy-2022-interns/

Enhancements

Bug fixes

Documentation

Maintenance

2.13.3

2.13.2

2.13.1

2.13.0

Major changes

Bug fixes

Documentation

Maintenance

2.12.0

Enhancements

Bug fixes

Documentation

Maintenance

2.11.3

Bug fixes

2.11.2

Bug fixes

2.11.1

Bug fixes

2.11.0

Enhancements

  • Sparse changes with performance impact! One of the advantages of the Zarr format is that it is sparse, which means that chunks with no data (more precisely, with data equal to the fill value, which is usually 0) don't need to be written to disk at all. They will simply be assumed to be empty at read time. However, until this release, the Zarr library would write these empty chunks to disk anyway. This changes in this version: a small performance penalty at write time leads to significant speedups at read time and in filesystem operations in the case of sparse arrays. To revert to the old behavior, pass the argument write_empty_chunks=True to the array creation function. By :user:`Juan Nunez-Iglesias <jni>`; :issue:`853` and :user:`Davis Bennett <d-v-b>`; :issue:`738`.
  • Fancy indexing. Zarr arrays now support NumPy-style fancy indexing with arrays of integer coordinates. This is equivalent to using zarr.Array.vindex. Mixing slices and integer arrays is not supported. By :user:`Juan Nunez-Iglesias <jni>`; :issue:`725`.
  • New base class. This release of Zarr Python introduces a new BaseStore class that all provided store classes implemented in Zarr Python now inherit from. This is done as part of refactoring to enable future support of the Zarr version 3 spec. Existing third-party stores that are a MutableMapping (e.g. dict) can be converted to a new-style key/value store inheriting from BaseStore by passing them as the argument to the new zarr.storage.KVStore class. For backwards compatibility, various higher-level array creation and convenience functions still accept plain Python dicts or other mutable mappings for the store argument, but will internally convert these to a KVStore. By :user:`Gregory Lee <grlee77>`; :issue:`839`, :issue:`789`, and :issue:`950`.
  • Allow to assign array fill_values and update metadata accordingly. By :user:`Ryan Abernathey <rabernat>`, :issue:`662`.
  • Allow to update array fill_values By :user:`Matthias Bussonnier <Carreau>` :issue:`665`.

Bug fixes

Documentation

Maintenance

2.10.3

Bug fixes

2.10.2

Bug fixes

2.10.1

Bug fixes

2.10.0

Enhancements

Bug fixes

2.9.5

Bug fixes

2.9.4

Bug fixes

  • Fix structured arrays that contain objects By :user: Attila Bergou <abergou>; :issue: 806

2.9.3

Maintenance

2.9.2

Maintenance

2.9.1

Maintenance

2.9.0

This release of Zarr Python is the first release of Zarr to not support Python 3.6.

Enhancements

Documentation

Bug fixes

Maintenance

2.8.3

Bug fixes

2.8.2

Documentation

Bug fixes

Maintenance

2.8.1

Bug fixes

2.8.0

V2 Specification Update

2.7.1

Bug fixes

2.7.0

Enhancements

Bug fixes

2.6.1

2.6.0

This release of Zarr Python is the first release of Zarr to not support Python 3.5.

See this link for the full list of closed and merged PR tagged with the 2.6 milestone.

  • Add ability to partially read and decompress arrays, see :issue:`667`. It is only available to chunks stored using fsspec and using Blosc as a compressor.

    For certain analysis case when only a small portion of chunks is needed it can be advantageous to only access and decompress part of the chunks. Doing partial read and decompression add high latency to many of the operation so should be used only when the subset of the data is small compared to the full chunks and is stored contiguously (that is to say either last dimensions for C layout, firsts for F). Pass partial_decompress=True as argument when creating an Array, or when using open_array. No option exists yet to apply partial read and decompress on a per-operation basis.

2.5.0

This release will be the last to support Python 3.5, next version of Zarr will be Python 3.6+.

2.4.0

Enhancements

Bug fixes

Documentation

Maintenance

2.3.2

Enhancements

Bug fixes

2.3.1

Bug fixes

2.3.0

Enhancements

Bug fixes

Maintenance

2.2.0

Enhancements

Bug fixes

Documentation

Maintenance

Acknowledgments

Code was contributed to this release by :user:`Alistair Miles <alimanfoo>`, :user:`John Kirkham <jakirkham>` and :user:`Prakhar Goel <newt0311>`.

Documentation was contributed to this release by :user:`Mamy Ratsimbazafy <mratsim>` and :user:`Charles Noyes <CSNoyes>`.

Thank you to :user:`John Kirkham <jakirkham>`, :user:`Stephan Hoyer <shoyer>`, :user:`Francesc Alted <FrancescAlted>`, and :user:`Matthew Rocklin <mrocklin>` for code reviews and/or comments on pull requests.

2.1.4

2.1.3

2.1.2

  • Resolved an issue when no compression is used and chunks are stored in memory (:issue:`79`).

2.1.1

Various minor improvements, including: Group objects support member access via dot notation (__getattr__); fixed metadata caching for Array.shape property and derivatives; added Array.ndim property; fixed Array.__array__ method arguments; fixed bug in pickling Array state; fixed bug in pickling ThreadSynchronizer.

2.1.0

2.0.1

The bundled Blosc library has been upgraded to version 1.11.1.

2.0.0

Hierarchies

Support has been added for organizing arrays into hierarchies via groups. See the tutorial section on :ref:`tutorial_groups` and the :mod:`zarr.hierarchy` API docs for more information.

Filters

Support has been added for configuring filters to preprocess chunk data prior to compression. See the tutorial section on :ref:`tutorial_filters` and the :mod:`zarr.codecs` API docs for more information.

Other changes

To accommodate support for hierarchies and filters, the Zarr metadata format has been modified. See the :ref:`spec_v2` for more information. To migrate an array stored using Zarr version 1.x, use the :func:`zarr.storage.migrate_1to2` function.

The bundled Blosc library has been upgraded to version 1.11.0.

Acknowledgments

Thanks to :user:`Matthew Rocklin <mrocklin>`, :user:`Stephan Hoyer <shoyer>` and :user:`Francesc Alted <FrancescAlted>` for contributions and comments.

1.1.0

  • The bundled Blosc library has been upgraded to version 1.10.0. The 'zstd' internal compression library is now available within Blosc. See the tutorial section on :ref:`tutorial_compress` for an example.
  • When using the Blosc compressor, the default internal compression library is now 'lz4'.
  • The default number of internal threads for the Blosc compressor has been increased to a maximum of 8 (previously 4).
  • Added convenience functions :func:`zarr.blosc.list_compressors` and :func:`zarr.blosc.get_nthreads`.

1.0.0

This release includes a complete re-organization of the code base. The major version number has been bumped to indicate that there have been backwards-incompatible changes to the API and the on-disk storage format. However, Zarr is still in an early stage of development, so please do not take the version number as an indicator of maturity.

Storage

The main motivation for re-organizing the code was to create an abstraction layer between the core array logic and data storage (:issue:`21`). In this release, any object that implements the MutableMapping interface can be used as an array store. See the tutorial sections on :ref:`tutorial_persist` and :ref:`tutorial_storage`, the :ref:`spec_v1`, and the :mod:`zarr.storage` module documentation for more information.

Please note also that the file organization and file name conventions used when storing a Zarr array in a directory on the file system have changed. Persistent Zarr arrays created using previous versions of the software will not be compatible with this version. See the :mod:`zarr.storage` API docs and the :ref:`spec_v1` for more information.

Compression

An abstraction layer has also been created between the core array logic and the code for compressing and decompressing array chunks. This release still bundles the c-blosc library and uses Blosc as the default compressor, however other compressors including zlib, BZ2 and LZMA are also now supported via the Python standard library. New compressors can also be dynamically registered for use with Zarr. See the tutorial sections on :ref:`tutorial_compress` and :ref:`tutorial_tips_blosc`, the :ref:`spec_v1`, and the :mod:`zarr.compressors` module documentation for more information.

Synchronization

The synchronization code has also been refactored to create a layer of abstraction, enabling Zarr arrays to be used in parallel computations with a number of alternative synchronization methods. For more information see the tutorial section on :ref:`tutorial_sync` and the :mod:`zarr.sync` module documentation.

Changes to the Blosc extension

NumPy is no longer a build dependency for the :mod:`zarr.blosc` Cython extension, so setup.py will run even if NumPy is not already installed, and should automatically install NumPy as a runtime dependency. Manual installation of NumPy prior to installing Zarr is still recommended, however, as the automatic installation of NumPy may fail or be sub-optimal on some platforms.

Some optimizations have been made within the :mod:`zarr.blosc` extension to avoid unnecessary memory copies, giving a ~10-20% performance improvement for multi-threaded compression operations.

The :mod:`zarr.blosc` extension now automatically detects whether it is running within a single-threaded or multi-threaded program and adapts its internal behaviour accordingly (:issue:`27`). There is no need for the user to make any API calls to switch Blosc between contextual and non-contextual (global lock) mode. See also the tutorial section on :ref:`tutorial_tips_blosc`.

Other changes

The internal code for managing chunks has been rewritten to be more efficient. Now no state is maintained for chunks outside of the array store, meaning that chunks do not carry any extra memory overhead not accounted for by the store. This negates the need for the "lazy" option present in the previous release, and this has been removed.

The memory layout within chunks can now be set as either "C" (row-major) or "F" (column-major), which can help to provide better compression for some data (:issue:`7`). See the tutorial section on :ref:`tutorial_chunks_order` for more information.

A bug has been fixed within the __getitem__ and __setitem__ machinery for slicing arrays, to properly handle getting and setting partial slices.

Acknowledgments

Thanks to :user:`Matthew Rocklin <mrocklin>`, :user:`Stephan Hoyer <shoyer>`, :user:`Francesc Alted <FrancescAlted>`, :user:`Anthony Scopatz <scopatz>` and :user:`Martin Durant <martindurant>` for contributions and comments.

0.4.0

See v0.4.0 release notes on GitHub.

0.3.0

See v0.3.0 release notes on GitHub.