Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion changes/2720.doc.md

This file was deleted.

1 change: 0 additions & 1 deletion changes/3492.doc.md

This file was deleted.

1 change: 0 additions & 1 deletion changes/3546.misc.md

This file was deleted.

1 change: 0 additions & 1 deletion changes/3611.bugfix.md

This file was deleted.

3 changes: 0 additions & 3 deletions changes/3679.feature.md

This file was deleted.

1 change: 0 additions & 1 deletion changes/3748.feature.md

This file was deleted.

1 change: 0 additions & 1 deletion changes/3781.feature.md

This file was deleted.

1 change: 0 additions & 1 deletion changes/3793.misc.md

This file was deleted.

2 changes: 0 additions & 2 deletions changes/3797.bugfix.md

This file was deleted.

1 change: 0 additions & 1 deletion changes/3800.misc.md

This file was deleted.

16 changes: 0 additions & 16 deletions changes/3802.feature.md

This file was deleted.

2 changes: 0 additions & 2 deletions changes/3828.misc.md

This file was deleted.

1 change: 0 additions & 1 deletion changes/3830.misc.md

This file was deleted.

1 change: 0 additions & 1 deletion changes/3833.misc.md

This file was deleted.

2 changes: 0 additions & 2 deletions changes/3836.doc.md

This file was deleted.

1 change: 0 additions & 1 deletion changes/3837.misc.md

This file was deleted.

1 change: 0 additions & 1 deletion changes/3845.doc.md

This file was deleted.

1 change: 0 additions & 1 deletion changes/3846.bugfix.md

This file was deleted.

1 change: 0 additions & 1 deletion changes/3863.bugfix.md

This file was deleted.

1 change: 0 additions & 1 deletion changes/3874.feature.md

This file was deleted.

2 changes: 0 additions & 2 deletions changes/3897.misc.md

This file was deleted.

1 change: 0 additions & 1 deletion changes/3900.removal.md

This file was deleted.

1 change: 0 additions & 1 deletion changes/3901.removal.md

This file was deleted.

1 change: 0 additions & 1 deletion changes/3902.removal.md

This file was deleted.

1 change: 0 additions & 1 deletion changes/3903.removal.md

This file was deleted.

1 change: 0 additions & 1 deletion changes/3920.bugfix.md

This file was deleted.

58 changes: 57 additions & 1 deletion docs/release-notes.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,62 @@

<!-- towncrier release notes start -->

## 3.2.0 (2026-04-30)

### Features

- Adds a new in-memory storage backend called `ManagedMemoryStore`. Instances of `ManagedMemoryStore`
function similarly to `MemoryStore`, but instances of `ManagedMemoryStore` can be constructed from
a URL like `memory://store`. ([#3679](https://github.com/zarr-developers/zarr-python/issues/3679))
- Added `array.read_missing_chunks` configuration option. When set to `False`, reading missing chunks raises a `ChunkNotFoundError` instead of filling them with the array's fill value. ([#3748](https://github.com/zarr-developers/zarr-python/issues/3748))
- Added `Struct` class (subclass of `Structured`) implementing the zarr-extensions `struct` dtype spec. Uses object-style field format and dict fill values. Legacy `Structured` remains available for backward compatibility. ([#3781](https://github.com/zarr-developers/zarr-python/issues/3781))
- Add support for rectilinear (variable-sized) chunk grids. This feature is experimental and
must be explicitly enabled via `zarr.config.set({'array.rectilinear_chunks': True})`.

Rectilinear chunks can be used through:

- **Creating arrays**: Pass nested sequences (e.g., `[[10, 20, 30], [50, 50]]`) to `chunks`
in `zarr.create_array`, `zarr.from_array`, `zarr.zeros`, `zarr.ones`, `zarr.full`,
`zarr.open`, and related functions, or to `chunk_shape` in `zarr.create`.
- **Opening existing arrays**: Arrays stored with the `rectilinear` chunk grid are read
transparently via `zarr.open` and `zarr.open_array`.
- **Rectilinear sharding**: Shard boundaries can be rectilinear while inner chunks remain regular.

**Breaking change**: The `validate` method on `BaseCodec` and `CodecPipeline` now receives
a `ChunkGridMetadata` instance instead of a `ChunkGrid` instance for the `chunk_grid`
parameter. Third-party codecs that override `validate` and inspect the chunk grid will need to
update their type annotations. No known downstream packages were using this parameter. ([#3802](https://github.com/zarr-developers/zarr-python/issues/3802))
- Add `cast_value` and `scale_offset` codecs. ([#3874](https://github.com/zarr-developers/zarr-python/issues/3874))

### Bugfixes

- Fix `SyncError` raised when assigning a `zarr.Array` as the value in a `__setitem__` call (e.g. `dst[:] = src` where `src` is a zarr array). The source array is now converted to a NumPy array before entering the async codec pipeline. ([#3611](https://github.com/zarr-developers/zarr-python/issues/3611))
- Fix an issue that prevents the correct parsing of special NumPy `uint32` dtypes resulting e.g.
from bit wise operations on `uint32` arrays on Windows. ([#3797](https://github.com/zarr-developers/zarr-python/issues/3797))
- Fix `ZipStore.list()`, `list_dir()`, and `exists()` to auto-open the zip file when called before `open()`, consistent with the existing behavior of `get()` and `set()`. ([#3846](https://github.com/zarr-developers/zarr-python/issues/3846))
- Fix handling of `NaT` default fill values for `datetime64` and `timedelta64` data types. Equality checks now use `numpy.isnat` so that the default fill value compares correctly against `NaT`. ([#3863](https://github.com/zarr-developers/zarr-python/issues/3863))
- Use the unit associated with the `Datetime64` data type when creating the default `Nat` scalar value. ([#3920](https://github.com/zarr-developers/zarr-python/issues/3920))

### Improved Documentation

- Document removal of `zarr.storage.init_group` in v3 migration guide, with replacement using `zarr.open_group`/`zarr.create_group`. ([#2720](https://github.com/zarr-developers/zarr-python/issues/2720))
- Document the `threading.max_workers` configuration option in the performance guide. ([#3492](https://github.com/zarr-developers/zarr-python/issues/3492))
- Corrects the type annotation reported for the `batch_info` parameter in the `CodecPipeline.write`
method docstring. ([#3836](https://github.com/zarr-developers/zarr-python/issues/3836))
- Remove result="ansi" from code blocks in the user guide that were causing empty output cells in the rendered documentation. ([#3845](https://github.com/zarr-developers/zarr-python/issues/3845))

### Deprecations and Removals

- Remove deprecated `zarr.convenience` and `zarr.creation` modules. ([#3900](https://github.com/zarr-developers/zarr-python/issues/3900))
- Remove the deprecated `zarr_version` parameter from several functions and methods. That parameter is replaced with `zarr_format`. ([#3901](https://github.com/zarr-developers/zarr-python/issues/3901))
- Remove deprecated `Group` methods `array`, `require_dataset`, and `create_dataset`. ([#3902](https://github.com/zarr-developers/zarr-python/issues/3902))
- Remove deprecated `AsyncArray.create` and `Array.create` methods. ([#3903](https://github.com/zarr-developers/zarr-python/issues/3903))

### Misc

- [#3546](https://github.com/zarr-developers/zarr-python/issues/3546), [#3793](https://github.com/zarr-developers/zarr-python/issues/3793), [#3800](https://github.com/zarr-developers/zarr-python/issues/3800), [#3828](https://github.com/zarr-developers/zarr-python/issues/3828), [#3830](https://github.com/zarr-developers/zarr-python/issues/3830), [#3833](https://github.com/zarr-developers/zarr-python/issues/3833), [#3837](https://github.com/zarr-developers/zarr-python/issues/3837), [#3897](https://github.com/zarr-developers/zarr-python/issues/3897)


## 3.1.6 (2026-03-19)

### Features
Expand All @@ -17,7 +73,7 @@
- Correct the target bytes number for auto-chunking when auto-sharding. ([#3603](https://github.com/zarr-developers/zarr-python/issues/3603))
- Fixed a bug in the sharding codec that prevented nested shard reads in certain cases. ([#3655](https://github.com/zarr-developers/zarr-python/issues/3655))
- Fix obstore `_transform_list_dir` implementation to correctly relativize paths (removing `lstrip` usage). ([#3657](https://github.com/zarr-developers/zarr-python/issues/3657))
- Raise error when trying to encode :class:`numpy.dtypes.StringDType` with `na_object` set. ([#3695](https://github.com/zarr-developers/zarr-python/issues/3695))
- Raise error when trying to encode `numpy.dtypes.StringDType` with `na_object` set. ([#3695](https://github.com/zarr-developers/zarr-python/issues/3695))
- `CacheStore`, `LoggingStore` and `LatencyStore` now support with_read_only. ([#3700](https://github.com/zarr-developers/zarr-python/issues/3700))
- Skip chunk coordinate enumeration in resize when the array is only growing, avoiding unbounded memory usage for large arrays. ([#3702](https://github.com/zarr-developers/zarr-python/issues/3702))
- Fix a performance bug in morton curve generation. ([#3705](https://github.com/zarr-developers/zarr-python/issues/3705))
Expand Down
Loading