awkward
Nested variable-length arrays for analysis
Awkward Array rewrote its kernels — 5x faster list reductions, and different layouts than before.
◆Recent moves
- 14d ago
2.12.0: overflow-safe statistics and CUDA argsort
Rewrites var, std, moment, mean, covar and corr as fused two-pass sum-of-squares reducers so they stay overflow-safe and numerically stable — the natural follow-on to a release that rewrote the kernels for speed. argsort arrives on the CUDA backend, and native string lowering for Numba fixes a silent data corruption in that path.
View source ↗ - 22d ago
2.11.0: a lazy IR scheduling layer and saner parquet row-group defaults
Adds a lazy IR scheduling layer — infrastructure rather than user-facing capability, but the kind that determines what optimizations are possible later. The parquet default row group size is corrected to match pyarrow's, which had been producing very large groups, and transient attrs no longer leak into written files.
View source ↗ - 1mo ago
2.10.0: kernels rewritten, list reductions about 5x faster
⚡ SPARKThe payoff release for a year of kernel migration: list reductions run about 5x faster on average and over 10x on long lists, with both the CPU and GPU kernel sets rewritten. The notes are explicit that floating-point results may differ and internal layouts have changed — an unusually direct statement that the compute layer is private and was reshaped accordingly.
View source ↗ - 2mo ago
2.9.1: offsets-based reducers and big-endian support
The staging release for the kernel rewrite — reducer kernels start taking offsets instead of parents, reducers are reimplemented on cccl, and parents allocation goes lazy, all described in the notes as precursors to removing parents entirely. Big-endian support is improved and tested, and byteorder is now carried through pickling.
View source ↗ - 6mo ago
Version 2.9.0
A cleanup cut: Python 3.9 and PyPy support dropped, the old VirtualArray class deleted, and a handful of buffer and byteorder fixes. Nothing new for users, but it narrows the support matrix ahead of the kernel work.
View source ↗ - 6mo ago
2.8.12: sort, argmax and argmin arrive on the CUDA backend
GPU coverage widens with ak.sort, and argmax and argmin implemented via CCCL, while ak.combinations gets faster on GPU by computing output list indexes with searchsorted. Named-axis handling also becomes thread-safe, with multi-threaded testing added to CI.
View source ↗