diff --git a/adr/0002-pluggable-dtype-layout-compute.md b/adr/0002-pluggable-dtype-layout-compute.md index c4963b162..70437547b 100644 --- a/adr/0002-pluggable-dtype-layout-compute.md +++ b/adr/0002-pluggable-dtype-layout-compute.md @@ -5,6 +5,15 @@ - **Deciders:** project maintainer - **Related:** [ADR 0001 — Split read and write runtimes](0001-split-read-and-write-runtimes.md) +> **Update (2026-10-20):** the "Java status today" table below predates several changes. +> Encodings are registered on the builder-only `ReadRegistry`/`WriteRegistry`, with no +> `ServiceLoader` and no auto-discovery (as in Rust). Layout decoding is pluggable through +> `LayoutRegistry` (unknown layouts always fail, no allow-unknown). `DType` is still sealed and +> extensible only through `DType.Extension` with a registered `ExtensionDecoder`/`ExtensionEncoder` +> (the Rust `ExtVTable` model). A compute layer now exists in `reader.compute` +> (ADR 0013, ADR 0019) but has no registration SPI. Of this ADR's decision, "keep `DType` sealed" +> and "no compute SPI" still hold; "keep `Layout` sealed" no longer does. + ## Context The Rust reference implementation diff --git a/adr/0005-vector-api-adoption.md b/adr/0005-vector-api-adoption.md index b8a1597ba..f348b3bea 100644 --- a/adr/0005-vector-api-adoption.md +++ b/adr/0005-vector-api-adoption.md @@ -5,6 +5,15 @@ - **Deciders:** project maintainer - **Related:** [CLAUDE.md §Memory model — Hot-loop rule](../CLAUDE.md) +> **Update (2026-10-20):** the Vector API was adopted regardless of condition 1 (PR #524). The +> kernels shared by reader and writer sit behind `SimdOperations` in `core.simd`, with +> `AutoVectorizedSimdOperations` (C2-shaped loops, the default) and `VectorApiSimdOperations` +> (opt-in via `--add-modules jdk.incubator.vector`); `SimdOperationsSupport#preferred()` picks one. +> Both give Rust-parity results, `scripts/simd-benchmark.sh` (also a CI job) measures the +> speedups, and the module's incubating status is the only reason it is opt-in. This is +> Strategy A by module detection, not the rejected Strategy B (`DecodeContext` flag). The +> decision text below is kept as written for the record. + ## Context Two TODO items describe Vector API adoption: diff --git a/adr/0018-calcite-sql-adapter.md b/adr/0018-calcite-sql-adapter.md index e1d26a80e..2ef2edd65 100644 --- a/adr/0018-calcite-sql-adapter.md +++ b/adr/0018-calcite-sql-adapter.md @@ -11,6 +11,15 @@ [ADR 0016 — vortex-arrow bridge](0016-vortex-arrow-bridge.md), [ADR 0005 — Vector API adoption](0005-vector-api-adoption.md) +> **Update (2026-10-20):** the adapter has grown past the phases recorded here, so treat +> "not yet" and "still scans for now" below as dated. It now also pushes down `ORDER BY` and +> `ORDER BY ... LIMIT` (`VortexSortPushDownRule`), `GROUP BY` on dictionary-encoded string, +> boolean and integer columns (`Compute.groupedAggregate`), `COUNT(DISTINCT)`, `SELECT DISTINCT` +> and `LIKE 'prefix%'`, reports table row counts to the planner, and exposes a directory of +> `.vortex` files as tables (`VortexCalcite.connect(Path)`, `VortexSchemaFactory`). The +> `jdbc-driver` module wraps that as a `jdbc:vortex: