v0.7.2
CLI usability + reader robustness on real-world files (NYC Yellow Taxi).
Added
- CLI
view <file>— scrollable Excel-like grid TUI. Streams rows on demand via a newLazyGridSource(one live chunk at a time, formats only the visible window). Title bar showschunk K/N. Quit withq/Esc. - CLI
exportwrites to a derived<name>.csvnext to the input file by default, with a stderr progress bar mirroring the import flow. Useexport <file.vortex> -to stream to stdout, orexport <file.vortex> out.csvfor an explicit path. - Reader
ScanIterator.chunkRowCounts()— returns per-chunk row counts by walking the layout tree, no value decode. Used by theviewTUI to plan navigation. - Lazy
vortex.decimaldecode via newLazyDecimalArrayrecord — zero-copy mmap slice + per-rowBigDecimalmaterialisation. Replaces theGenericArraywrapper. - 7
Offset*Arrayrecords (Long / Int / Short / Byte / Double / Float / Bool) +VarBinArray.SlicedModefor offset-based slicing of pre-decoded shared arrays.
Fixed
- Per-column chunking alignment. Files where one column has 1 mega-flat and another has N small flats (e.g. NYC Yellow Taxi 2024-01: 2.96M-row VendorID next to 23 × 131072-row datetime flats) now decode the wide column once into a
sharedArenaand slice it per chunk viaOffset*Array. Previously the scan iterator emitted a single chunk whose datetime columns were the first 131072 rows only — silently dropping 95.6 % of the file. FrameOfReferenceEncodingDecodernow uses the arena variant ofArraySegments.of, so lazy children (e.g.LazyRunEndLongArray) materialise instead of throwing "no primary segment".
Docs
- Compatibility table refreshed:
constant,varbinview,alprd,datetimeparts,decimal_byte_parts,decimalnow reflect their shipped Lazy shape; container encodings (list/listview/fixed_size_list) marked Lazy (inherit child shape);patchedpinned Materialized with reasoning. - New ADR 0013 — policy for dropping Materialized fallbacks once Lazy ships.
Maven Central: io.github.dfa1.vortex:vortex-reader:0.7.2 (and vortex-writer, vortex-cli, etc.).