Repository navigation
Closed
1 / 11 of 1 issue completedLabels
epicPublic roadmap umbrella for a major initiative, with work tracked in sub-issues.Public roadmap umbrella for a major initiative, with work tracked in sub-issues.featureA feature requestA feature request
Description
Tracking Issue: Fixed-Size List Arrays
This is a tracking issue for adding fixed-size list arrays to Vortex.
The main difference between lists and fixed-size lists is that fixed-size lists do not need to store an offsets buffer, since we are able to use the predictable stride pattern to jump to data. This allows us to more efficiently store data with known size (like matrices or tensors) as well as compute more efficiently with SIMD.
Public API
pub enum DType {
/// A logical fixed-size list type.
///
/// This is parameterized by a `DType` that represents the element type of the inner lists, as
/// well as a `u32` size that determines the fixed length of each `FixedSizeList` scalar.
FixedSizeList(Arc<DType>, u32, Nullability),
}
#[cfg(not(target_arch = "wasm32"))]
const_assert_eq!(size_of::<DType>(), 16);
#[cfg(target_arch = "wasm32")]
const_assert_eq!(size_of::<DType>(), 12); // Increase size to 12 bytes because of the `u32` field.Prior Art
- Apache Arrow Fixed-Size List Overview: https://arrow.apache.org/docs/format/Intro.html#fixed-size-list
- Apache Arrow Fixed-Size List Layout: https://arrow.apache.org/docs/format/Columnar.html#fixed-size-list-layout
- Apache Arrow Variable-Size List Layout: https://arrow.apache.org/docs/format/Columnar.html#variable-size-list-layout
- Apache Arrow Fixed-shape Tensor: https://arrow.apache.org/docs/format/CanonicalExtensions.html#fixed-shape-tensor
- Arrow Rust
FixedSizeListArray: https://docs.rs/arrow/latest/arrow/array/struct.FixedSizeListArray.html pyarrow.FixedSizeListType: https://arrow.apache.org/docs/python/generated/pyarrow.FixedSizeListType.html- DuckDB Array Type (the same as fixed-size list): https://duckdb.org/docs/stable/sql/data_types/array.html
- Adding a new variant (
DType::Decimal) to Vortex: feat: Decimal types #3058 - Conversion to numpy array potential optimizations: https://github.com/apache/arrow/issues/ 35622 (so we don't ping that issue)
Steps / History
- Feature: Add
DType::FixedSizeListvariant #4371 - Feature: Add
FixedSizeListsupport invortex-scalar#4380 - Feature:
FixedSizeListinfrastructure #4385 - Feature: Add
FixedSizeListArrayandFixedSizeListVTable#4405 - Feature: Add
FixedSizeListBuilder#4428 - Feature: Implement Compute Functions for
FixedSizeListArray#4495 - Feature: Add
FixedSizeListfuzzing support #4541 - Feature: Implementation of
ConstantArrayandSparseArraycanonicalize forFixedSizeList#4545 - Feature: Add DuckDB conversion for fixed-size lists / ARRAY type #4590
- Chore: Add missing
FixedSizeListEncoding#4592 - Chore: Add no-op
IsSortedandMinMaxcompute kernels forFixedSizeListVTable#4601 - Fix:
FixedSizeListDuckDB exporter bug #4610 - Feature: Implement
FixedSizeListinPyVortexbindings #4618
Unresolved Questions
- Is it okay to increase the size of
DTypeto 12 bytes on WASM (instead of the previous size of 8)? Or instead have anFixedListElementTypethatArcs both theDTypeand theu32size? If we do that thenListshould also be changed - Is
u32the correct type to use here (Arrow usesi32for Java)
Metadata
Metadata
Assignees
Labels
epicPublic roadmap umbrella for a major initiative, with work tracked in sub-issues.Public roadmap umbrella for a major initiative, with work tracked in sub-issues.featureA feature requestA feature request
Activity
lwwmanning commentedon Aug 27, 2025
FixedSizedList doesn't actually increase DType size (which was already 16 and remains 16)
robert3005 commentedon Aug 27, 2025
It has increased it for wasm from 8 to 12. Though don’t think it matters
Feature: Add `FixedSizeListArray` and `FixedSizeListVTable` (#4405)
Feature: Add `FixedSizeList` fuzzing support (#4541)
Feature: Implementation of `ConstantArray` and `SparseArray` canonica…
Chore: Add missing `FixedSizeListEncoding` (#4592)
Feature: Add DuckDB conversion for fixed-size lists / ARRAY type (#4590)
Chore: Add no-op `IsSorted` and `MinMax` compute kernels for `FixedSi…
Feature: Implement `FixedSizeList` in `PyVortex` bindings (#4618)
Fix: `FixedSizeList` DuckDB exporter bug (#4610)
FixedSizeList#4979