Skip to content

Commit b0f6f49

Browse files
dfa1claude
andcommitted
chore: finalize CHANGELOG for 0.12.2 release
A prior release:prepare attempt on 2026-07-10 aborted at the check-poms phase (pom.xml stayed 0.12.2-SNAPSHOT, no v0.12.2 tag was ever cut) but left a drafted 0.12.2 section plus a stray empty Unreleased header. Five more fix commits landed on top with their own Unreleased entries. This merges both batches into a single 0.12.2 section, drops the orphaned empty header, and updates the release date to today. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
1 parent f1ad890 commit b0f6f49

1 file changed

Lines changed: 24 additions & 24 deletions

File tree

CHANGELOG.md

Lines changed: 24 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -7,30 +7,29 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
77

88
## [Unreleased]
99

10-
### Added
11-
12-
- `CsvExporter` now renders `FixedSizeList` and `List` columns as JSON array cells (`[v0,v1,...]`), matching the same element-rendering rules used for nested struct fields. Fixes export of Raincloud slugs with vector or list columns (e.g. `glove-*`, `osm-germany-relations`).
13-
- `VortexWriter` now encodes `vortex.list` columns by default (both flat and cascade paths). Previously only `vortex.fixed_size_list` was registered; `DType.List` columns threw at write time unless a custom registry was supplied.
14-
15-
### Fixed
10+
## [0.12.2] — 2026-07-12
11+
12+
**Registry cleanup, schema fidelity, and list-column support** are the three themes of this
13+
release. `ReadRegistry` and `WriteRegistry` are now builder-only (matching `LayoutRegistry`),
14+
replacing `ServiceLoader` discovery with explicit `registerDefaults()` calls — registration is now
15+
visible at the call site instead of hidden in `META-INF/services` files. The `fbs-gen` code
16+
generator now strips trailing underscores from schema type names before prefixing with `Fbs`,
17+
keeping generated Java identifiers clean (`FbsStruct_``FbsStruct`) while staying wire-identical
18+
to the upstream FlatBuffers schema. `List`/`FixedSizeList` columns gain full round-trip support:
19+
`VortexWriter` now encodes `vortex.list` by default, `CsvExporter` renders both as JSON array cells
20+
at any offset width, and `ScanIterator` can slice a shared list array whose covering flat chunk
21+
spans several scan windows. Nullable `Utf8`/`Binary` columns now compress through the full cascade
22+
instead of falling back to raw `vortex.varbin`, cutting file size 10–47× on the string-heavy
23+
Raincloud corpus. Several correctness fixes land too: blank column names (produced by real
24+
Raincloud corpus files) are now accepted on both paths; `EncodingId`/`LayoutId` reject control
25+
characters; unsigned Parquet columns compare correctly; and six decoders receive tighter validation
26+
against malformed input (`ConstantEncodingDecoder`, `AlpRdEncodingDecoder`, `SparseEncodingDecoder`,
27+
`DateTimePartsArrays`, `VarBinArray.DictMode`, `ScanIterator`).
1628

17-
- Nullable Utf8/Binary columns are now compressed through the full cascade instead of stored as raw `vortex.varbin`. `MaskedEncodingEncoder` previously encoded its non-null values with a fixed first-match encoder (primitive/varbin), so a nullable low-cardinality string column never reached Dict or FSST — producing files 10–47× larger than the Rust reference on the string-heavy Raincloud corpus (e.g. `uci-mushroom` 22×, `uci-online-retail-ii` 25×). The masked values now run through the same `CascadingCompressor` as dense columns, dropping those ratios to ~2–3×. ([#258](https://github.com/dfa1/vortex-java/issues/258))
18-
- `ScanIterator` can now slice a shared `ListArray`/`FixedSizeListArray` whose covering flat chunk spans several scan windows (misaligned per-column chunk grids). Previously any scan over such a column threw `VortexException("scan: cannot slice shared array of type ...")` — a real reading gap, not only an export-side one. ([#265](https://github.com/dfa1/vortex-java/issues/265))
19-
- `CsvExporter` now reads `vortex.list` offsets of any integer width (`I8`/`U8`/`I16`/`U16`, matching `VarBinArray`'s offsets), not only `I32`/`I64`. A narrower-offset list column (e.g. Raincloud's `osm-germany-relations`, whose offsets are `I16`) previously threw `VortexException("unexpected list offsets type: ...")` on export. ([#263](https://github.com/dfa1/vortex-java/issues/263))
29+
### Added
2030

21-
## [0.12.2] — 2026-07-10
22-
23-
**Registry cleanup and schema fidelity** are the two themes of this release. `ReadRegistry` and
24-
`WriteRegistry` are now builder-only (matching `LayoutRegistry`), replacing `ServiceLoader`
25-
discovery with explicit `registerDefaults()` calls — registration is now visible at the call site
26-
instead of hidden in `META-INF/services` files. The `fbs-gen` code generator now strips trailing
27-
underscores from schema type names before prefixing with `Fbs`, keeping generated Java identifiers
28-
clean (`FbsStruct_``FbsStruct`) while staying wire-identical to the upstream FlatBuffers schema.
29-
Several correctness fixes land too: blank column names (produced by real Raincloud corpus files)
30-
are now accepted on both paths; `EncodingId`/`LayoutId` reject control characters; unsigned
31-
Parquet columns compare correctly; and six decoders receive tighter validation against malformed
32-
input (`ConstantEncodingDecoder`, `AlpRdEncodingDecoder`, `SparseEncodingDecoder`,
33-
`DateTimePartsArrays`, `VarBinArray.DictMode`, `ScanIterator`).
31+
- `CsvExporter` now renders `FixedSizeList` and `List` columns as JSON array cells (`[v0,v1,...]`), matching the same element-rendering rules used for nested struct fields. Fixes export of Raincloud slugs with vector or list columns (e.g. `glove-*`, `osm-germany-relations`). ([#257](https://github.com/dfa1/vortex-java/issues/257))
32+
- `VortexWriter` now encodes `vortex.list` columns by default (both flat and cascade paths). Previously only `vortex.fixed_size_list` was registered; `DType.List` columns threw at write time unless a custom registry was supplied. ([#257](https://github.com/dfa1/vortex-java/issues/257))
3433

3534
### Changed
3635

@@ -52,8 +51,9 @@ input (`ConstantEncodingDecoder`, `AlpRdEncodingDecoder`, `SparseEncodingDecoder
5251
- `RaincloudConformanceIntegrationTest` oracle now formats `INT32`/`INT64` Parquet columns with a `UINT_32`/`UINT_64` logical-type annotation using `Integer.toUnsignedString`/`Long.toUnsignedString`, matching the unsigned representation that Vortex stores as `U32`/`U64`; previously the Parquet signed interpretation diverged for values above `Integer.MAX_VALUE` (e.g. `total_boosters` in the covid-world-vaccination-progress corpus). ([#253](https://github.com/dfa1/vortex-java/issues/253))
5352
- `RaincloudConformanceIntegrationTest` now runs the Parquet oracle and vortex-java export in parallel via virtual threads connected by `PipedWriter`/`PipedReader`, comparing line-by-line without temp files; previously both CSV streams were written to disk and then compared, causing OOM for large corpus slugs (e.g. bi-bimbo with 74 M rows) and doubling wall time. (internal)
5453
- `BoolEncodingDecoder` now handles nullable `vortex.bool` columns: when the encoding node has one child, it is decoded as a validity bitmask and the values array is wrapped in a `MaskedArray`; previously the validity child was silently ignored and null rows were decoded as `false`, causing silent corruption in any corpus file with a nullable boolean column (e.g. bi-eixo `st_extemporaneo_matricula`). (internal)
55-
56-
## [Unreleased]
54+
- Nullable Utf8/Binary columns are now compressed through the full cascade instead of stored as raw `vortex.varbin`. `MaskedEncodingEncoder` previously encoded its non-null values with a fixed first-match encoder (primitive/varbin), so a nullable low-cardinality string column never reached Dict or FSST — producing files 10–47× larger than the Rust reference on the string-heavy Raincloud corpus (e.g. `uci-mushroom` 22×, `uci-online-retail-ii` 25×). The masked values now run through the same `CascadingCompressor` as dense columns, dropping those ratios to ~2–3×. ([#258](https://github.com/dfa1/vortex-java/issues/258))
55+
- `ScanIterator` can now slice a shared `ListArray`/`FixedSizeListArray` whose covering flat chunk spans several scan windows (misaligned per-column chunk grids). Previously any scan over such a column threw `VortexException("scan: cannot slice shared array of type ...")` — a real reading gap, not only an export-side one. ([#265](https://github.com/dfa1/vortex-java/issues/265))
56+
- `CsvExporter` now reads `vortex.list` offsets of any integer width (`I8`/`U8`/`I16`/`U16`, matching `VarBinArray`'s offsets), not only `I32`/`I64`. A narrower-offset list column (e.g. Raincloud's `osm-germany-relations`, whose offsets are `I16`) previously threw `VortexException("unexpected list offsets type: ...")` on export. ([#263](https://github.com/dfa1/vortex-java/issues/263))
5757

5858
## [0.12.1] — 2026-07-08
5959

0 commit comments

Comments
 (0)