|
| 1 | +Release notes |
| 2 | +============= |
| 3 | + |
| 4 | +.. _release_1.0.0: |
| 5 | + |
| 6 | +1.0.0 |
| 7 | +----- |
| 8 | + |
| 9 | +This release includes a complete re-organization of the code base. The |
| 10 | +major version number has been bumped to indicate that there have been |
| 11 | +backwards-incompatible changes to the API and the on-disk storage |
| 12 | +format. However, Zarr is still in an early stage of development, so |
| 13 | +please do not take the version number as an indicator of maturity. |
| 14 | + |
| 15 | +Storage |
| 16 | +~~~~~~~ |
| 17 | + |
| 18 | +The main motivation for re-organizing the code was to create an |
| 19 | +abstraction layer between the core array logic and data storage (`#21 |
| 20 | +<https://github.com/alimanfoo/zarr/issues/21>`_). In this release, any |
| 21 | +object that implements the ``MutableMapping`` interface can be used as |
| 22 | +an array store. See the tutorial sections on :ref:`tutorial_persist` |
| 23 | +and :ref:`tutorial_tips_storage`, the :ref:`spec_v1`, and the |
| 24 | +:mod:`zarr.storage` module documentation for more information. |
| 25 | + |
| 26 | +Please note also that the file organization and file name conventions |
| 27 | +used when storing a Zarr array in a directory on the file system have |
| 28 | +changed. Persistent Zarr arrays created using previous versions of the |
| 29 | +software will not be compatible with this version. See the |
| 30 | +:mod:`zarr.storage` API docs and the :ref:`spec_v1` for more |
| 31 | +information. |
| 32 | + |
| 33 | +Compression |
| 34 | +~~~~~~~~~~~ |
| 35 | + |
| 36 | +An abstraction layer has also been created between the core array |
| 37 | +logic and the code for compressing and decompressing array |
| 38 | +chunks. This release still bundles the c-blosc library and uses Blosc |
| 39 | +as the default compressor, however other compressors including zlib, |
| 40 | +BZ2 and LZMA are also now supported via the Python standard |
| 41 | +library. New compressors can also be dynamically registered for use |
| 42 | +with Zarr. See the tutorial sections on :ref:`tutorial_compress` and |
| 43 | +:ref:`tutorial_tips_blosc`, the :ref:`spec_v1`, and the |
| 44 | +:mod:`zarr.compressors` module documentation for more information. |
| 45 | + |
| 46 | +Synchronization |
| 47 | +~~~~~~~~~~~~~~~ |
| 48 | + |
| 49 | +The synchronization code has also been refactored to create a layer of |
| 50 | +abstraction, enabling Zarr arrays to be used in parallel computations |
| 51 | +with a number of alternative synchronization methods. For more |
| 52 | +information see the tutorial section on :ref:`tutorial_sync` and the |
| 53 | +:mod:`zarr.sync` module documentation. |
| 54 | + |
| 55 | +Changes to the Blosc extension |
| 56 | +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| 57 | + |
| 58 | +NumPy is no longer a build dependency for the :mod:`zarr.blosc` Cython |
| 59 | +extension, so setup.py will run even if NumPy is not already |
| 60 | +installed, and should automatically install NumPy as a runtime |
| 61 | +dependency. Manual installation of NumPy prior to installing Zarr is |
| 62 | +still recommended, however, as the automatic installation of NumPy may |
| 63 | +fail or be sub-optimal on some platforms. |
| 64 | + |
| 65 | +The :mod:`zarr.blosc` Cython extension is now optional and compilation |
| 66 | +will only be attempted on posix systems; other systems will fall back |
| 67 | +to a pure-Python installation (`#25 |
| 68 | +<https://github.com/alimanfoo/zarr/issues/25>`_). On these systems |
| 69 | +only 'zlib', 'bz2' and 'lzma' compression will be available. |
| 70 | + |
| 71 | +Some optimizations have been made within the :mod:`zarr.blosc` |
| 72 | +extension to avoid unnecessary memory copies, giving a ~10-20% |
| 73 | +performance improvement for multi-threaded compression operations. |
| 74 | + |
| 75 | +The :mod:`zarr.blosc` extension now automatically detects whether it |
| 76 | +is running within a single-threaded or multi-threaded program and |
| 77 | +adapts its internal behaviour accordingly (`#27 |
| 78 | +<https://github.com/alimanfoo/zarr/issues/27>`_). There is no need for |
| 79 | +the user to make any API calls to switch Blosc between contextual and |
| 80 | +non-contextual (global lock) mode. See also the tutorial section on |
| 81 | +:ref:`tutorial_tips_blosc`. |
| 82 | + |
| 83 | +Other changes |
| 84 | +~~~~~~~~~~~~~ |
| 85 | + |
| 86 | +The internal code for managing chunks has been rewritten to be more |
| 87 | +efficient. Now no state is maintained for chunks outside of the array |
| 88 | +store, meaning that chunks do not carry any extra memory overhead not |
| 89 | +accounted for by the store. This negates the need for the "lazy" |
| 90 | +option present in the previous release, and this has been removed. |
| 91 | + |
| 92 | +The memory layout within chunks can now be set as either "C" |
| 93 | +(row-major) or "F" (column-major), which can help to provide better |
| 94 | +compression for some data (`#7 |
| 95 | +<https://github.com/alimanfoo/zarr/issues/7>`_). See the tutorial |
| 96 | +section on :ref:`tutorial_tips_order` for more information. |
| 97 | + |
| 98 | +A bug has been fixed within the ``__getitem__`` and ``__setitem__`` |
| 99 | +machinery for slicing arrays, to properly handle getting and setting |
| 100 | +partial slices. |
| 101 | + |
| 102 | +.. _release_0.4.0: |
| 103 | + |
| 104 | +0.4.0 |
| 105 | +----- |
| 106 | + |
| 107 | +See `v0.4.0 release notes on GitHub |
| 108 | +<https://github.com/alimanfoo/zarr/releases/tag/v0.4.0>`_. |
| 109 | + |
| 110 | +.. _release_0.3.0: |
| 111 | + |
| 112 | +0.3.0 |
| 113 | +----- |
| 114 | + |
| 115 | +See `v0.3.0 release notes on GitHub |
| 116 | +<https://github.com/alimanfoo/zarr/releases/tag/v0.3.0>`_. |
| 117 | + |
0 commit comments