Releases: SpaceCell/minarrow
Release list
minarrow v0.16.0
0.16.0 - 2026-07-16
This version completes Python ecosystem compatibility with DLPack support for landing data (or ChunkedNdArray) data in Rust
and bridging to Python for AI/ML and back.
Moving forward we will aim to minimise breaking changes and stabilise to a 1.0 version in the coming month(s). Additionally, include a Stable Rust build.
The new NdArray, XArray and SuperNdArray may however see breaking changes before then until they have had time for production use.
Added
NdArray, XArray and DLPack Feature:
NdArrayn-dimensional dense array (ndarrayfeature) overBuffer<T>,
generic over f32/f64, with NaN null semantics,NdArrayVzero-copy views,
transpose and axis permutation, and Table/Matrix/Array interop.SuperNdArraychunked n-dimensional array withSuperNdArrayV
chunk-spanning views and rechunking.XArraylabelled n-dimensional array (xarrayfeature) with named
dimensions, coordinate selection viaat/between/nearest, and owned,
view, or chunked storage behind one type.- DLPack tensor interchange (
dlpackfeature) over the legacy and 1.x
versioned ABIs for zero-copy sharing with PyTorch, JAX, and TensorFlow. AxisSelectiontrait for.s()axis slicing, withNdArrayVT,
SuperNdArrayVT, andXArrayVTview tuple aliases.- Broadcast kernels for
NdArray,SuperNdArray, andXArray, plus
Valuevariants, conversions, and concatenation for the new types. NdArrayin minarrow-py with the DLPack protocol -__dlpack__,
from_dlpack, and named bridges to NumPy, PyTorch, JAX, TensorFlow,
and CuPy.PyNdArrayin minarrow-pyo3 (ndarrayfeature) for Rust extensions
bridging tensors to Python, with the DLPack capsule glue hosted in
itsffi::dlpackand shared by minarrow-py.
Minor Feature Additions
- At
value_attoArrayandArrayVfor (opt-in) normalised equality checking. - Added bitmask-driven gather to Array, Table and their view variants.
- Added default SIMD chipset behaviour.
- Added bitwise kernels.
- Added default display trait impl to
Scalar. - Added
LBuffer::freeze(). - Added
NdArrayn-dimensional array with views and chunked variants. - Added
XArraylabelled n-dimensional array. - Added axis selection, broadcasting, and
Valuesupport for the n-dimensional types. - Added DLPack FFI for zero-copy PyTorch, JAX, and TensorFlow interchange, with
NdArrayin minarrow-py and minarrow-pyo3. - Added
get,get_unchecked,get_strandget_str_uncheckedmethods toArray - Added bitmask gather to Array, Table and their view variants.
Bugfixes
- Fixed a kernel branching issue in the arithmetic SIMD paths.
- Fixed out-of-range categorical codes to resolve to the empty string.
- Fixed
StringArraylength reporting the byte length whenMaskedArraywas not imported. - Fixed null handling bug on String and Categorical set_str method.
Modified
-
Bumped pyo3 to 0.29.
-
Normalised
hash_element_atso NaN maps to a dummy/sentinel value -
Added
value_eqmethod toArrayandArrayVwhere NaN == NaN, -0.0 == 0.0, Null == Null etc. -
Normalised equality checking for
Scalar-0.0 == 0.0 and NaN == NaN.
Note: the above three only affect users opting into the methods and/orScalarabstraction.
For users wanting IEEE compatibility for floats usingmyarr.clone().num().f64()gets to aFloatArrayzero-copy.
Minarrow V0.15
Minarrow 0.15.0 accompanies the major release of Minarrow Python.
Added
- _into Datetime kernel variants for efficient non-allocations.
- _into Bitmask kernel variants for efficient non-allocations.
- UnsafeMut utility Buffer for handling cross-thread bitpacked writes.
Changed
- Improved name construction ergonomics.
Minarrow V0.14.0
- Added _into mutable output buffer datetime variants supporting efficient parallelism.
- Added TimePeriod enum consistency for datetime periods with automatic deref on string constituents i.e., week becomes TimePeriod::Week at the call-site.
- Fixed BitmaskV lifetime.
- Fixed BooleanArray length visibility.
Minarrow 0.13.0
minarrow-pyo3 0.3.0
Changed
- Bumped
minarrowdependency from0.10.1to0.11.0.
Removed
- Unused nightly feature gates (
allocator_api,slice_ptr_get,
portable_simd) from the crate root. The underlying allocator-aware types
are re-exported fromminarrow, so the gates are not required at this
crate's call sites.
minarrow 0.11.0
[0.11.0] - 2026-05-15
Added
- arrow-rs / polars import bridges (#70): symmetric
from_apache_arrow/
from_polarsacrossArray,FieldArray,Table,SuperArray, and
SuperTable, each with atry_*sibling returningResult<_, MinarrowError>.
AddsFrom<&Series>,From<&RecordBatch>,From<&DataFrame>, and
From<&[RecordBatch]>for.into()ergonomics. - New feature-gated bridge modules
src/ffi/arrow_rs.rs(cast_arrow) and
src/ffi/polars.rs(cast_polars) centralising the export / import pairs (#70). MinarrowError::BridgeErrorvariant carrying arrow-rs / polars FFI failures,
with feature-gatedFromimpls forArrowErrorandPolarsError(#70).- Matrix: strided LAPACK matrix getters, improved interoperability, and
improved docs (#59, #62). - Cross-tabulate string kernel.
has_nullsaccessor (#63).with_capacityforCategoricalArray<T>(#67).- Filled missing trait impls:
SuperTableFrom,TryFrom<Value>gaps,
From<BooleanArrayV>forValue, plus otherFromimpls (#67). Vec64arm for thefa!macro.- Zero-copy
to_arrayescape path. - Minimal
logdependency.
Changed
- View -> owned conversions take a fast path when the view spans its full
backing storage (offset 0, length matches the backing array): skips
slice_cloneand returns anArcclone of the underlying allocation (#80). - Polars
Array/FieldArray/Tablefrom_polarsnow route through
SuperArray::from_polars/SuperTable::from_polars, correctly handling
multi-chunkedSeries/DataFrameinputs (#76, #77). - Bumped all dependencies to latest semver (#68).
- Breaking: renamed
SuperArray::to_apache_arrow_chunksand
SuperTable::to_apache_arrow_batchestoto_apache_arrow(#70).
Removed
- Breaking: removed
Array::to_apache_arrow_with_fieldand
Array::to_polars_with_field. Wrap in aFieldArrayand call itsto_*()
method when an explicitFieldis needed (#70).
Fixed
- Per-call
Boxleak in theto_*export paths —ArrowArray/ArrowSchema
heap wrappers were not freed afterread()(#70). - Categorical pandas
-1null sentinel handling (#69). - Zero-sized shared buffer checks: round-trips through
SharedBufferfor
zero-row columns no longer panic on alignment assertions (#73). - Polars default features (#77).
- Default features and the test harness; stale ref in benches.
- Pinned the toolchain via
rust-toolchain.tomlto work around an upstream
issue.