Major Changes
-
This release delivers the first phase of a performance overhaul in the commit phase.
Staged writes are now hashed, deduplicated, and written to disk fully in Cython
through theStagedChangesArraybackend. The creation of the virtual datasets at the
end of commit is still using the legacy path and will be migrated in a future release.
delete_versions()also temporarily remains on the old, slow code path.In short, this translates to:
- No changes to the user-facing API
- Major speed-ups (up to 40%) when committing a large number of small chunks
- Major speed-ups (up to 40%) when committing string datasets with prevalently very
short strings, regardless of chunk size - No material speed-ups (for now) when only a small portion of a dataset changes
-
Sped up hot loops of many small
__setitem__/__getitem__calls on
InMemoryDatasetandInMemorySparseDataset. -
Sped up the use case where a user first completely overwrites the contents of a
dataset with a single__setitem__call and then callsresize()to enlarge it.
Minor Changes
- Removed the
ENABLE_CHUNK_REUSE_VALIDATIONenvironment variable. Its function is now
served by a much more thorough corpus of unit tests. - Scalar (0-d) datasets are now explicitly unsupported and raise
NotImplementedError
on creation/access instead of failing obscurely downstream. - Fixed a data leak in
delete_versions(): edge (corner) chunks rewritten after version
deletion could leave padding filled with data from the deleted versions instead of the
fill value. - Fixed bug where datasets with variable-length string dtype would, in certain cases,
end up with the default fillvalue set to integer0instead of an empty string. - Fixed a deadlock on Python <3.12 between
InMemoryDataset.staged_changesand h5py's
global lock. - Fixed
get_version_by_timestamp()failures on Windows caused by low filesystem
timestamp precision. - Added a build-time requirement for a C++ compiler (g++ / clang++).
- Added support for Cython 3.2.6 and 3.3.
Developers-only Changes
- Extensive improvements to the ASV benchmark coverage
- Added
asv-comparetool to produce side-by-side benchmarks between versions - Added AGENTS.md and development guidelines for AI-assisted contributions