0.86.0
Changes
⚠️ Breaks
- Use VortexError in editions (#9833) @robert3005
- Remove the unstable encodings feature (#9710) @robert3005
- Replace normalized encoding with explicit normalization (#9767) @connortsui20
- vortex-file: open_cached uses an explicit cache key (#9733) @myrrc
- feat: require Send on VortexWrite and its futures (#9648) @claude[bot]
- Add physical parameters to OutputSink (#9585) @connortsui20
- Let a row dispatch declare a runtime output dtype (#9581) @connortsui20
✨ Features
- Add tensor row inputs for RowFn (#9776) @connortsui20
- duckdb: vortex_version() macro (#9787) @myrrc
- feat(btrblocks): compress binary arrays with VarBin offsets and FSST (#9576) @joseph-isaacs
- refactor(array): propagate allocators through builders (#9670) @gatesn
- feat: CMake integration for
vortex-ffi&vortex-cpp(#9774) @0ax1 - Split SplitBy::Layout into Layout and LayoutSubSplitting variants (#9043) @robert3005
- Assert logical and physical plans for TPC-H SLT tests (#9789) @AdamGS
- feat(ci): build and bundle Windows artifacts for the Java and Python bindings (#9739) @robert3005
- cache DTypes parsed from flatbuffers (#9765) @myrrc
- Support runend canonicalization for lists (#9708) @danking
- Bloom filter implementation (#9398) @joacoc
- refactor(array): use buffer allocator in execution context (#9669) @gatesn
- feat(buffer): add allocator-backed storage (#9668) @gatesn
- Add
Utf8types forRowFn(#9715) @connortsui20 - Add mechamism to lock edition definition and how to evolve objects in editions (#9660) @robert3005
- duckdb: propagate per-file "partition" stats (#9639) @myrrc
- feat(duckdb): report per-file column statistics from the vortex COPY writer (#9471) @moshap-firebolt
- feat(ffi): add vx_scalar_new_extension for extension-typed literals (#9691) @balicat
- Support run-end canonicalize for decimals (#9707) @danking
- Support canonicalising decimal RunEnd arrays (#9665) @onursatici
- Add filter-and-scatter RowFn execution (#9521) @connortsui20
- feat(cuda): add a FastLanes delta decode kernel (#9535) @joseph-isaacs
- duckdb: support hive partitioning and 'filename' column (#9540) @myrrc
🚀 Performance
- Pushdown filter through scalar function regardless of number of children (#9830) @robert3005
- FileSystem for local reads (#9773) @myrrc
- perf(onpair): speed up compression with onpair 0.2.1 and row training (#9806) @gargiulofrancesco
- Change DateTimeParts to i32 (#9796) @myrrc
- perf(datafusion): Only wrap stream in prunable stream when predicate can still change (#9788) @AdamGS
- Push get_item through wrapper arrays (#9719) @danking
- Avoid materializing constant structs for select (#9718) @danking
- Avoid row index canonicalization for trivial masks (#9717) @danking
- perf(fastlanes): borrow unpack inputs (#9731) @gatesn
- perf(buffer): store alignment exponents (#9730) @gatesn
- Avoid materializing constant structs for get_item (#9716) @danking
- Trim constant-operand cases from scalar function benchmarks (#9696) @connortsui20
- Decode RowFn constants directly (#9680) @connortsui20
- Pack Boolean RowFn output directly (#9626) @connortsui20
- Conditionally slice elements to selected index bounds before filtering wide list arrays (#9679) @mhk197
- Avoid iterative drop for shallow expression trees (#9657) @robert3005
- Better fixed-width buffer filtering (#8723) @robert3005
- Use indexed sources for fallible constant rows (#9629) @connortsui20
- Map constant RowFn inputs directly (#9628) @connortsui20
- Build packed boolean output (#9620) @connortsui20
- Avoid single-chunk grouped accumulator states (#9597) @mhk197
- refactor(vortex-spatial): execute distance with RowFn (#9616) @HarukiMoriarty
- Measure numeric arithmetic and comparison benchmarks per CPU feature (#9599) @connortsui20
- Benchmark primitive comparison across CPU features (#9598) @connortsui20
- duckdb: MultiFileReader interface (#9383) @myrrc
- Use dense retry for nullable row functions (#9517) @connortsui20
🐛 Bug Fixes
17 changes
- Fix DuckDB scans over Vortex being merged or stalling (#9803) @joseph-isaacs
- fix(cloud): parse OpenDAL boolean properties the way object_store does (#9782) @jackylee-ch
- Fix: Use arrow's casting logic to cast file stats when reporting them to DF (#9818) @AdamGS
- fix(bench): clamp producer values to signed database bounds (#9800) @connortsui20
- fix(buffer): reject ZSTs and address allocator review comments (#9807) @gatesn
- fix(vx): stop advertising --json on 'vx tree array' (#9780) @jackylee-ch
- Support unsigned sequence in the DuckDB exporter (#9720) @danking
- fix(dict): cap max_dict_bytes at the u32 range BinaryView addresses (#9690) @mnshdw
- fix(dict): clear encoder state in DictEncoder::reset (#9693) @mnshdw
- bench: run the full compress suite under
--gpu-decompress(#9399) @joseph-isaacs - duckdb: forbid aggregations and filter pushdowns over virtual columns (#9238) @myrrc
- fix: update the delta snapshot (#9608) @rapour
- feat: sequence cast compute (#8403) @siddarth2810
- fix: price delta's bases and tail padding in its compression estimate (#9602) @rapour
- fix: pad delta remainder with last value (#9557) @rapour
- fix: stabilize conjunct selectivity (#9543) @joseph-isaacs
- Carry partial RowFn validity with MaskValues (#9534) @connortsui20
📖 Documentation
8 changes
- Comprehensive security policy and vulnerability reporting process (#9747) @joseph-isaacs
- docs(vortex-layout): mark the bloom filter aggregate as unstable (#9753) @connortsui20
- Clarify Boolean collection code generation (#9676) @connortsui20
- docs(vortex-spatial): add crate overview (#9683) @HarukiMoriarty
- Clarify
RowFninfallibility documentation (#9618) @connortsui20 - docs(java): replace the Java API example that no longer compiles (#9635) @jackylee-ch
- docs: filter pushdown is connected, not future work (#9637) @jackylee-ch
- duckdb: add release docs (#9575) @myrrc
🧰 Maintenance
38 changes
- Align AGENTS.md instructions with rest of guidance in the repo (#9826) @robert3005
- Fix onpair btrblocks golden snapshot (#9835) @robert3005
- Fix python formatting after typechecker change (#9828) @robert3005
- duckdb: don't optimize_recursive() before exporting chunks (#9795) @myrrc
- Replace basedpyright with ty for Python type checking (#9546) @robert3005
- Fix deprecation warning in btrblocks varbin scheme (#9819) @robert3005
- bench: track small u8 dictionary take (#9566) @joseph-isaacs
- Replace filter-and-scatter RowFn fallback with filtered valid-row execution (#9645) @robert3005
- Adds clickbench logical & physical plans (#9794) @joseph-isaacs
- Update alp to 0.0.4 (#9793) @robert3005
- Switch wasmer setup to setup-wasmer and pin version to 7.4.0 (#9786) @robert3005
- Fix path WORK_DIR path normalization in SLT tests (#9790) @AdamGS
- Lock file maintenance (#9563) @renovate[bot]
- Update rui314/setup-mold digest to 7e4f20a (#9560) @renovate[bot]
- Update taiki-e/install-action digest to d438492 (#9561) @renovate[bot]
- Lock file maintenance (#9139) @renovate[bot]
- Reuse compression/decompression results in compression benchmarks (#9744) @robert3005
- ci: configure RunsOn volume sizes (#9772) @robert3005
- Move benchmark machines to c8gd.metal-24xl (#9761) @robert3005
- Return the lazy filtered row index array directly (#9760) @robert3005
- refactor(decimal): dispatch numeric kernels on one storage width (#9756) @mhk197
- chore: deny clippy::inline_always at the workspace level (#9726) @joseph-isaacs
- nit: go directly from alignment to usize (#9666) @danking
- docs(spark): refresh the user guide against the shipped connector (#9607) @jackylee-ch
- docs(vx): state which inspection commands support --json (#9638) @jackylee-ch
- Add list filter benchmark (#9686) @mhk197
- Use
SumV2inlist_sum(#9621) @mhk197 - fix(policy): update policy to match the new claude and codex bot ids (#9650) @robert3005
- refactor(vortex-spatial): execute geo kernels with RowFn (#9623) @HarukiMoriarty
- Upgrade fastlanes to 0.7.0 (#9641) @robert3005
- Bump Datafusion to 55 (#9334) @AdamGS
- refactor(runend): clarify filter implementation (#9633) @connortsui20
- refactor(dict): clarify compute invariants (#9632) @connortsui20
- refactor: simplify array optimizer (#9634) @connortsui20
- Add
sum_v2with SQL empty-input semantics (#9590) @mhk197 - Update anthropics/claude-code-action digest to 16b3b31 (#9559) @renovate[bot]
- Extend MaskValuesRef to filter execution (#9542) @connortsui20
- Upgrade toolchain to 1.98.0 (#9539) @robert3005