Skip to content
Merged
Show file tree
Hide file tree
Changes from all 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.

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

<!-- 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 +74,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