0.57.0#
Released 2026-01-06 — GitHub Release
Changes#
⚠️ Breaks#
Do not inline vortex_array into vortex:: namespace (#5584) @gatesn
chore[vortex-array]: remove SerdeVTable (#5387) @joseph-isaacs
feat[vortex-expr]: add expr rewrite rules (#5348) @joseph-isaacs
✨ Features#
feat: teach TemporalMetadata about its relationship to DTypes (#5864) @danking
Introduce extendable access plan for DF scans (#5855) @AdamGS
feat[array]: stats + validity in display array (#5799) @joseph-isaacs
deterministic encoding ordering (#5770) @onursatici
feat[fixed-size-list]: impl repeat and slice (#5751) @joseph-isaacs
feat[compute]: compare decimal and varbin (#5757) @joseph-isaacs
feat[datafusion]: Support DataFusion
PartitionedFileextensions for external index (#5556) @haohuaijinperf[ci]: stopped instances (#5753) @joseph-isaacs
Feature: makes the decompressor and compressor methods public (#5752) @connortsui20
Feature: add fused bitpack filter kernel (#5741) @connortsui20
feat[array]: duckdb executor (#5737) @joseph-isaacs
Feature: add primitive casting (#5718) @connortsui20
Feature: add some
Castinfrastructure (#5708) @connortsui20feat[array]: dynamic expr execute (#5714) @joseph-isaacs
Feature: add
append_array_as_listmethods to the list arrays (#5707) @connortsui20Feature: implement
DictArraybatched execute (#5686) @connortsui20feat[array]: list contains scalar (#5713) @joseph-isaacs
feat[vector]: Eq (#5681) @joseph-isaacs
Feature: add zero and null constructors for scalars (#5705) @connortsui20
Feature: batch execute for
DeltaArray(#5667) @connortsui20feat[vector]: slice varbinview (#5697) @joseph-isaacs
Feature: add
takefor the view vectors (#5682) @connortsui20Feature: Implement
takeon more vectors + stubs (#5653) @connortsui20feature: add
__version__attribute to Python package (#5641) @d33bsFeature: add
takefor primitive and bool vectors (#5540) @connortsui20vx layout display (#5650) @joseph-isaacs
Feature: added properties to VortexScanner (#5500) @sherlockbeard
Feature: add total read size counter (#5600) @harryscholes
feat[scalar_fn]: binary ops (#5617) @joseph-isaacs
feat[scalar_fn]:
is_null(#5601) @joseph-isaacsfeat[buffer]: use BufferHandle in more places (#5567) @joseph-isaacs
feat[gpu]: use BufferHandle to the array vtable build (#5565) @joseph-isaacs
feat[vortex-expr]:
is_fallibleanalysis (#5546) @joseph-isaacsFeature: add
takecompute for slices (#5537) @connortsui20feat[vortex-expr]:
is_fallibleexpression analysis (#5531) @joseph-isaacsfeat[vortex-expr]: add a
is_null_sensitiveexpression analysis (#5528) @joseph-isaacsFeature: add a take compute trait (#5503) @connortsui20
Feature: add impl owned filter impls (#5493) @connortsui20
Feature: add filter impl for
FixedSizeListVector(#5494) @connortsui20Revert “Revert “chore[ci]: add windows test to CI (#5439)”” (#5486) @joseph-isaacs
feature: Support std_file on windows as it’s used by cxx bindings (#5450) @robert3005
Feature: implement bitpacking batch execute (#5446) @connortsui20
feat[vortex-array]: added debug to expr/array reduce rules (#5442) @joseph-isaacs
feat[vortex-array] add an array session rule registry (#5414) @joseph-isaacs
Feature: add
spare_capacity_muttoPVectorMut(#5287) @connortsui20feat[vortex-array]: expr array that represents lazy computation (#5400) @joseph-isaacs
feat[vortex-expr]:
reduce_parenthas typed parent (#5398) @joseph-isaacsfeat[vortex-expr]: add expr rewrite rules (#5348) @joseph-isaacs
feat[vortex-expr]: better debug print (#5374) @joseph-isaacs
🚀 Performance#
performance[vortex-array]: don’t call is_valid to count bytes in varbinview (#5814) @asubiotto
perf[array]: extension pushdown filter + constant (#5794) @joseph-isaacs
perf[expr]: between not fallible (#5798) @joseph-isaacs
perf[dtp]: push down compare over dtp constant second subsecond (#5793) @joseph-isaacs
perf[date-time-parts]: compressor handle constant and pushdown rules (#5778) @joseph-isaacs
perf[duckdb]: dont push down pack & dedup filters for ddb (#5773) @joseph-isaacs
ci: use windows-x64 pool for Windows tests (#5756) @joseph-isaacs
feat[duckdb]: optimize array (#5738) @joseph-isaacs
Perf: optimize
take_scalar(#5723) @connortsui20Perf: Optimized bool take (#5701) @connortsui20
perf[array]: Constant kernel filter pushdown (#5698) @joseph-isaacs
perf[array]: with_children vtable function (#5694) @joseph-isaacs
perf[ci]: speed up ci MORE (#5576) @joseph-isaacs
perf(ci): skip rust-cache on runs-on runners with S3 sccache (#5570) @joseph-isaacs
chunked array zip (#5530) @onursatici
varbinview zip kernel (#5526) @onursatici
chore[vortex-dict]: numeric pushdown & clean up the dict ctor (#5438) @joseph-isaacs
Handwritten pipeline benchmark and analysis (#5408) @connortsui20
Fix: incorrect offset for nulls + don’t chunk elements (#5423) @connortsui20
perf[dict]: all_values_referenced to allow pushdown optimisation. (#5416) @joseph-isaacs
perf[vortex-expr]: replace can stop looking at subtree if it finds a match (#5405) @joseph-isaacs
fix: performance regression for filtering ListView (#5390) @a10y
fix[vortex-dict]: faster min_max for dict array (#5288) @joseph-isaacs
🐛 Bug Fixes#
81 changes
fix: enable all features for vortex-mask docsrs and enable serde-derive when serde is enabled (#5871) @robert3005
fix[array]: correct the handling of to_arrow execution and struct casting (#5867) @joseph-isaacs
fix[ci]: pin maturin due to fix upstream error (#5868) @joseph-isaacs
fix: int compressor mul overflow bp (#5854) @joseph-isaacs
Fix: IPC
AsyncMessageReaderdoes not handle partial reads (#5758) @connortsui20Fix: incorrect child vector size in duckdb list array import (#5740) @connortsui20
Fix: bring back lance compression benchmark (#5840) @connortsui20
Fix: don’t fail on missing lance for datafusion (#5841) @connortsui20
Fix: CI sql script (#5838) @connortsui20
Fix: CI SQL Remote (#5836) @connortsui20
Fix: finally fix CI (#5835) @connortsui20
Fix: actually actually fix CI (#5830) @connortsui20
Fix: benchmark name for
bench.yml(#5828) @connortsui20Fix: remove lance feature from vortex-bench CI (#5823) @connortsui20
Fix: decimal cast error message (#5821) @connortsui20
Fix: support widening of
ListViewVectoroffsets and sizes (#5796) @connortsui20perf[layout]: apply then filter (#5788) @joseph-isaacs
perf[date-time-parts]: compressor handle constant and pushdown rules p2 (#5786) @joseph-isaacs
fix: disable noisy btrblocks micro-benchmarks on codspeed (#5782) @0ax1
fix[duckdb]: no
to_structin exporter (#5750) @joseph-isaacsFix: remove memory limit on fuzzers (#5763) @connortsui20
Fix:
ListArraytakeincorrect validity (#5762) @connortsui20fix[layout]: soundness note on values eval (#5747) @joseph-isaacs
fix[duckdb]: remove validity mask from vector export (#5739) @joseph-isaacs
fix:
Buffersliceend does not need to be aligned (#5734) @0ax1Disable GHArchive benchmarks to unblock perf reference in CI (#5729) @AdamGS
feat[array]: fixup operator stuff (#5711) @joseph-isaacs
Avoid taking write lock on VortexSession::get (#5688) @gatesn
Fix: claude action concurrency group (#5680) @connortsui20
Temp fix: Make
takebound byCopyinstead ofNativePType(#5666) @connortsui20Fix: add
RUSTFLAGS="--cfg vortex_nightly"to all nightly tests (#5655) @connortsui20Fix: portable SIMD
takeimplementation (#5654) @connortsui20Feature: added properties to VortexScanner (#5500) @sherlockbeard
fix[vortex-array]: fix take on varbinviews with NULL indices (#5626) @asubiotto
fix: don’t bench
slice_arrow_bufferon codspeed (#5578) @0ax1fix: Decimal sum doesn’t panic but returns null on overflow (#5564) @robert3005
fix[dict]: min_max must not be null (#5560) @joseph-isaacs
fix[display]: escape strings (#5551) @joseph-isaacs
Fix: Schema projection order mismatch from table/file schema (#5541) @brancz
fix: remove print (#5547) @joseph-isaacs
fix: assert_arrays_eq macro reexports format function to hide itertools dep (#5543) @robert3005
fix[mask]: intersect_by_rank and bit to arrow (#5545) @joseph-isaacs
fix: Restore fast constant sum behaviour, don’t fuzz floating point sum compute function (#5527) @robert3005
Fix: ConstantArray float sum behaves the same way as primitive array (#5513) @robert3005
Fix: this may have been a merge conflict (#5510) @connortsui20
fix[dict]: not (filter/take) set_all_values_referenced (#5496) @joseph-isaacs
fix: Sum from stats has to account for accumulator (#5445) @robert3005
Revert “chore[ci]: add windows test to CI (#5439)” (#5449) @0ax1
Fix: remove unreachable cases in bitpack patches (#5444) @connortsui20
fix: FFI returns a string/binary instead of requiring the caller to guess the necessary memory (#5433) @robert3005
Fix: Correctly handle inconsistent file and table schema order in vortex-datafusion (#5436) @brancz
Fix: incorrect offset for nulls + don’t chunk elements (#5423) @connortsui20
fix[ci]: use run_id in the s3 benchmark runs (#5421) @joseph-isaacs
fix: add missing dependency: typing-extensions (#5420) @danking
fix: vx_struct_fields_field_dtype takes usize instead of u64 (#5396) @robert3005
fix[vortex-array]: correct convert to arrow from vortex (#5378) @joseph-isaacs
Use the specified concurrency value when reading from a ObjectStoreIoSource (#5371) @nrc
📖 Documentation#
Docs: Fix outdated docs (#5777) @connortsui20
Feature: makes the decompressor and compressor methods public (#5752) @connortsui20
Chore: allow searching subcrates in vortex rustdoc (#5612) @connortsui20
Docs: document
chunk_offsetsinPatches(#5429) @connortsui20
🧰 Maintenance#
127 changes
Try and minimize cache size by using cargo sweep (#5858) @AdamGS
chore: clean up ci caching (#5774) @joseph-isaacs
Update all patch updates (#5831) @renovate[bot]
chore: Update contribution llm (#5852) @joseph-isaacs
Update CodSpeedHQ/action digest to dbda711 (#5849) @renovate[bot]
Update crate-ci/typos action to v1.41.0 (#5850) @renovate[bot]
Update Rust crate tracing to v0.1.44 (#5833) @renovate[bot]
Update dependency org.immutables:value to v2.12.0 (#5834) @renovate[bot]
Update dependency ch.qos.logback:logback-classic to v1.5.23 (#5832) @renovate[bot]
Fix: Removes vortex_unwrap completely in favor of vortex_expect (#5805) @Pratham1812
Update CodSpeedHQ/action digest to 972e343 (#5808) @renovate[bot]
Update all patch updates (#5809) @renovate[bot]
Move reduce / reduce_parent into pub(crate) DynVTable (#5735) @gatesn
Update dependency ch.qos.logback:logback-classic to v1.5.22 (#5727) @renovate[bot]
Update all patch updates (#5726) @renovate[bot]
Use datum compute for binary logical operators (#5719) @gatesn
Chore: Update lints for 1.91 but don’t actually change versions (#5706) @connortsui20
Chore: use
is_nullinstead ofis_invalidfor scalars (#5703) @connortsui20Chore: Add all logical bool implementations + refactor (#5669) @connortsui20
Centralize all logging to
tracinginstead oflog(#5670) @AdamGSUpdate Rust crate wasm-bindgen-futures to v0.4.56 (#5594) @renovate[bot]
Touch up some benchmarking code and clean up dependencies (#5665) @AdamGS
Chore: optimize CI with concurrency groups (#5659) @connortsui20
Enable CI when PR targets non-develop branch (#5649) @gatesn
fix(deps): update protobuf monorepo to v4.33.2 (#5644) @renovate[bot]
chore(deps): update all patch updates (#5643) @renovate[bot]
ci: add runs-on.yml that points to prebuilt AMI (#5620) @a10y
ci: add cache-suffix to isolate sanitizer build cache (#5604) @joseph-isaacs
feat[fuzz]: add WASM fuzzer support for wasmfuzz (#5575) @joseph-isaacs
chore(deps): update crate-ci/typos action to v1.40.0 (#5596) @renovate[bot]
chore(deps): update tokio-tracing monorepo (#5595) @renovate[bot]
chore(deps): update all patch updates (#5593) @renovate[bot]
chore[ci]: bump codspeed runner (#5579) @joseph-isaacs
chore: speed up taplo format (#5569) @robert3005
chore: Remove codspeed warning about deprecated mode (#5562) @robert3005
Chore: use item imports in bench-vortex (#5554) @connortsui20
Chore: check taplo formatting in pre-commit (#5549) @connortsui20
chore[*]: prefer
#[expect(..)]over#[allow(..)]p2 (#5533) @joseph-isaacschore[*]: prefer
#[expect(..)]over#[allow(..)](#5498) @joseph-isaacschore[ffi]: remove header gen warning not nightly (#5529) @joseph-isaacs
varbinview zip bench (#5518) @onursatici
chore: apply imports_granularity = “Item” everywhere expect bench-vortex (#5521) @joseph-isaacs
chore: fix error message for unwrap_scalar (#5515) @xumingming
Chore: remove unstable pipeline benchmark (#5512) @connortsui20
Expression execution to be passed input vectors (#5507) @gatesn
Chore: Use full item paths for every import is
vortex-vector(#5509) @connortsui20Chore: Fully qualify imported items (#5504) @connortsui20
Chore: Even more stable benchmarks (#5506) @connortsui20
Chore: make pipeline benchmarks less susceptible to noise (#5502) @connortsui20
Chore: refactor dict module (#5501) @connortsui20
chore: minimize
with_inputswork for benchmarks (#5492) @0ax1chore[dbp]: remove useless_conversion (#5487) @joseph-isaacs
Update Rust crate pyo3 to 0.27.0 (#5478) @renovate[bot]
Update Rust crate goldenfile to v1.9.1 (#5474) @renovate[bot]
Update Rust crate tokio to v1.48.0 (#5480) @renovate[bot]
Update Rust crate insta to v1.44.1 (#5475) @renovate[bot]
Update all patch updates (#5470) @renovate[bot]
Update Rust crate noodles-bgzf to 0.44.0 (#5476) @renovate[bot]
Update protobuf monorepo to v4.33.1 (#5472) @renovate[bot]
Update Rust crate cudarc to 0.18.0 (#5473) @renovate[bot]
Update plugin com.diffplug.spotless to v8.1.0 (#5471) @renovate[bot]
Update Rust crate lance to 0.39.0 (#5466) @renovate[bot]
Update actions/checkout action to v6 (#5468) @renovate[bot]
Update actions/download-artifact action to v6 (#5469) @renovate[bot]
Update CodSpeedHQ/action digest to 346a2d8 (#5463) @renovate[bot]
Update GitHub Artifact Actions to v5 (major) (#5464) @renovate[bot]
Update Rust crate dyn-hash to v1 (#5465) @renovate[bot]
Introduces a new set of issue/discussion templates (#5456) @gatesn
Chore: make apply patches its own method (#5458) @connortsui20
Chore: refactor
rlemodule (#5455) @connortsui20Chore: refactor
deltamodule (#5452) @connortsui20Chore: refactor
formodule (#5451) @connortsui20chore[ci]: add windows test to CI (#5439) @joseph-isaacs
chore: Shard codspeed into 8 runs (#5440) @robert3005
feat[vortex-array] chunked array has owned chunk_offsets child (#5426) @joseph-isaacs
Chore: add set functions to mask mut (#5432) @connortsui20
Chore: rename apply patches (#5430) @connortsui20
Chore: rename unpack functions (#5428) @connortsui20
Chore: Use
MaybeUninitinstead ofUninitRangefor bit unpacking (#5427) @connortsui20chore[ci]: unify the benchmark table analysis thresholds (#5413) @joseph-isaacs
chore[vortex-array]: remove unused experimental
computearrays (#5404) @joseph-isaacschore[vortex-array]: clean up doc str (#5403) @joseph-isaacs
chore[vortex-expr]: allow
Arced ref to the rewrite rule (#5401) @joseph-isaacschore[vortex-array]: remove ser/de type constraint from Metadata (#5397) @joseph-isaacs
chore[vortex-array]: rename
reduce_children->reduce(#5375) @joseph-isaacschore[vortex-array]: remove SerdeVTable (#5387) @joseph-isaacs
chore: better expression error messages on failure (#5392) @danking
chore: suggest using a cast for float-float and int-int comparisons (#5393) @danking
Revert “chore[vortex-gpu]: remove vortex-gpu” (#5384) @joseph-isaacs
chore(deps): update codspeedhq/action digest to 6a8e2b8 (#5138) @renovate[bot]
chore[vortex-gpu]: remove vortex-gpu (#5376) @joseph-isaacs
chore: Fix compilation of benchmarks if gpu_unstable is not enabled (#5370) @robert3005
chore: gpu_bitunpack bench is behind cfg flag (#5369) @robert3005