0.85.0¶
Released 2026-08-21 — GitHub Release
Changes¶
⚠️ Breaks¶
feat(array): builders skip child canonicalization and append nested values in bulk [builders-child-stack] (#9064) @robert3005
Remove dtype coercion logic (#9456) @robert3005
Store
Normalizedvalidity on the array instead of in its children (#9202) @connortsui20Rebuild the Python runtime after fork (#9376) @robert3005
Deprecate all non ArrowSession DType imports and exports (#8918) @robert3005
refactor: rename vortex-geo to vortex-spatial (#9284) @HarukiMoriarty
✨ Features¶
WasmRuntime supports non wasm-bindgen environments (#9512) @robert3005
Support nullary RowFn execution (#9469) @connortsui20
Implement
RowFnbatch execution (#9450) @connortsui20Compare Vortex GPU decompression against a cuDF Parquet read (#9147) @joseph-isaacs
Implement RowFn row execution (#9353) @connortsui20
Add CUDA decompression kernels for OnPair (#8920) @robert3005
Add plan optimizer rules and push expressions (#9196) @joseph-isaacs
Expression constructors in python accept generators as an argument (#9410) @robert3005
feat: add
read_rangestoVortexReadAt(#9384) @joseph-isaacsDefine
RowFnandRowVisitor(#9386) @connortsui20Type edition memberships with a component kind (#9340) @joseph-isaacs
Expand the Python expression API (#9375) @robert3005
Benchmark SIMD kernels per instruction set on CodSpeed (#9366) @joseph-isaacs
feat(vortex-spatial): add convex hull scalar function (#9219) @HarukiMoriarty
feat(vortex-spatial): add collect scalar function (#9218) @HarukiMoriarty
Add layout scan physical plan model (#9142) @joseph-isaacs
Don’t store min/max_is_truncated in zone maps for non-string columns (#9206) @myrrc
Resolve every Java-binding URL through the vortex-cloud registry, adding hf:// (#9273) @robert3005
feat(vortex-spatial): add length scalar function (#9290) @HarukiMoriarty
feat(vortex-spatial): add area scalar function (#9203) @HarukiMoriarty
feat(vortex-spatial): add make-line scalar function (#9201) @HarukiMoriarty
feat(vortex-array): execute primitive interleave arrays (#9291) @HarukiMoriarty
Support casting to
DecimalinPrimitiveCastKernel(#9288) @mhk197
🚀 Performance¶
Execute owned RowFn outputs over valid rows (#9500) @connortsui20
perf: Stop comparing dtypes directly in BoundExpression::with_children and delegate to return_dtype (#9479) @robert3005
Trim runtime of benchmarks to be below 1ms guidance (#9460) @robert3005
perf: avoid rebuilding untouched nodes during expression rewrites (#9445) @robert3005
Propagate slice bounds into onpair gpu decoding (#9457) @robert3005
Use
Fnfor out-of-place lane kernels (#9419) @connortsui20Preserve selection in the presence of a row range (#9382) @gatesn
Reduce number of clones and drops in expression optimisation logic (#9378) @robert3005
Materialize list offsets once in list_view_from_list (#9299) @connortsui20
perf(sequence): build single-match bitmap directly (#9262) @tomatotomata
perf: allow cross-crate inlining of BitBuffer accessors (#9285) @connortsui20
perf: Avoid redundant mask slices (#9268) @joseph-isaacs
🐛 Bug Fixes¶
19 changes
Handle::spawn_nested doesn’t need to propagate handle to session (#9527) @robert3005
Make the default session include default encodings on wasm32 (#9509) @V0ldek
Correctly codify what’s core and stable in editions (#9478) @robert3005
Fix build for wasm32-unknown-unknown without bindgen (#9480) @robert3005
fix(jni): rebase array offsets before handing batches to Java (#9466) @mprammer
Validate pco metadata when decompressing (#9444) @robert3005
Fix empty array validity predicates (#9417) @connortsui20
fix: stop percent-encoding object keys on the way to the request (#9441) @robert3005
fix: honor Kleene
ANDsemantics forBetweennull bounds (#9404) @connortsui20Fix exponential stats rewrite for nested OR predicates (#9408) @robert3005
Validate names and dtypes equal length on struct flatbuffer parse (#9362) @myrrc
fix(spark): report the written file size in the commit message (#9325) @jackylee-ch
Implement compare for map types (#9317) @robert3005
Revert “SQL style null-on-empty semantics for Sum and Mean” (#9324) @joseph-isaacs
SQL style null-on-empty semantics for Sum and Mean (#9113) @mhk197
📖 Documentation¶
Add docs about object evolution in editions (#9364) @robert3005
🧰 Maintenance¶
44 changes
adjustments to the PR template (#9536) @connortsui20
Update dependency pip to v26.2 [SECURITY] (#9533) @renovate[bot]
Update PR template (#9531) @connortsui20
Fuzzer uses latest core edition (#9525) @robert3005
Replace
ScalarFnVTable::is_falliblewithis_infallible(#9511) @connortsui20Update h2 crate beyond the rustsec vulnerability (#9506) @robert3005
Simplify
RowFnexecution contracts (#9496) @connortsui20Remove scalar function factory (#9499) @connortsui20
Update dependency datasets to v5.0.1 [SECURITY] (#9493) @renovate[bot]
test(jni): characterize ScanOptions validation and write summary values (#9453) @jackylee-ch
bench: add zone map pruning benchmark (#9439) @robert3005
Remove Clone requirement from balanced reductions (#9442) @robert3005
Deduplicate trusted-length buffer construction without losing vectorization (#9467) @connortsui20
Deduplicate BitBuffer set-index visitors (#9461) @connortsui20
Rename the
preconditionhelpers toshort_circuit(#9406) @connortsui20Remove the unused
StrictComparison::to_compare_operator(#9405) @connortsui20test(spark): characterize SparkPredicateToVortexExpression conversion (#9452) @jackylee-ch
test(jni): assert the Java and Rust expression tag tables agree (#9454) @jackylee-ch
Lock file maintenance (#9425) @renovate[bot]
Deprecate FromArrowArray in favour of ArrowSession array imports (#8927) @robert3005
Remove 2 deprecated functions from Expression (#9379) @AdamGS
Harden indexed lane sources (#9358) @connortsui20
fix(spark): name the Vortex files when a read fails (#9326) @jackylee-ch
MSRV check and policy documentation (#9356) @robert3005
Update Rust crate serial_test to v4 (#9313) @renovate[bot]
fix(spark): keep the cause when a path cannot be loaded as a table (#9330) @jackylee-ch
Update Swatinem/rust-cache digest to 6323deb (#9308) @renovate[bot]
fix(spark): correct the CTAS claim on VortexSessionCatalog.createTable (#9332) @jackylee-ch
test(spark): characterize partition transform resolution (#9323) @jackylee-ch
Lock file maintenance (#9316) @renovate[bot]
Update lance benchmark dependencies (major) (#9312) @renovate[bot]
Update actions/checkout digest to 3d3c42e (#9300) @renovate[bot]
Update actions/setup-java digest to b6effb0 (#9301) @renovate[bot]
Update anthropics/claude-code-action digest to 6b082c4 (#9302) @renovate[bot]
Update CodSpeedHQ/action digest to 4296e51 (#9303) @renovate[bot]
Update dorny/paths-filter digest to ceb8a2b (#9304) @renovate[bot]
Update dtolnay/rust-toolchain digest to 4360b52 (#9305) @renovate[bot]
Update gradle/actions digest to 9c97196 (#9306) @renovate[bot]
Update pypa/gh-action-pypi-publish digest to dc37677 (#9307) @renovate[bot]
Update taiki-e/install-action digest to 7f4eb89 (#9309) @renovate[bot]
Update actions/stale action to v11 (#9310) @renovate[bot]
Share primitive binary operand decoding (#9295) @connortsui20