test(compat): add a map.vortex backward-compatibility fixture - #9463
test(compat): add a map.vortex backward-compatibility fixture#9463mprammer wants to merge 1 commit into
Conversation
`vortex.map` froze into core2026.08.0 at 0.84.0 with no fixture, so nothing pins the map layout for future readers. Covers unsorted and sorted keys, duplicate keys, empty rows, and a null map distinct from an empty one. Co-Authored-By: Claude <noreply@anthropic.com> Signed-off-by: mprammer <martin@spiraldb.com>
Merging this PR will degrade performance by 16.08%
|
| Mode | Benchmark | BASE |
HEAD |
Efficiency | |
|---|---|---|---|---|---|
| ❌ | Simulation | decompress[u64, (10000, 4)] |
310.2 µs | 401.6 µs | -22.75% |
| ❌ | Simulation | cold_misaligned[(64, 256)] |
4.4 ms | 5 ms | -12.78% |
| ❌ | WallTime | words_gather_scalar[65536] |
8.3 µs | 9.4 µs | -12.28% |
Tip
Investigate this regression by commenting @codspeedbot fix this regression on this PR, or directly use the CodSpeed MCP with your agent.
Comparing mp/compat-fixture-map (365b8dd) with develop (004e512)
Footnotes
-
89 benchmarks were skipped, so the baseline results were used instead. If they were deleted from the codebase, click here and archive them to remove them from the performance reports. ↩
Rationale for this change
vortex.mapjoined the frozencore2026.08.0edition at Vortex 0.84.0, which makes its layout a backward-compatibility promise, but the compat fixture suite has no map file — nothing pins how a map is written, so the weeklycompat-validationrun has nothing to check and a future reader change could silently break every map file written today. The gap isn't map-specific:vortex.masked(frozen since 0.54.0) andvortex.variant(frozen since 0.65.0) also have no fixtures, and I'll send those separately.What changes are included in this PR?
One new fixture,
map.vortex, in the synthetic array set. It carries amap<i32, utf8?>withkeys_sorted = falseincluding an empty row and a row that repeats a key, since duplicate keys are representable and have to survive in order rather than being deduplicated; amap<utf8, i64>withkeys_sorted = true; and a nullablemap<i32, utf8?>that keeps a null map distinct from an empty one and holds a present key with a null value. The existingroundtrip_fixtures_to_bytestest picks the fixture up automatically, andvortex-compat generatefollowed bycheck --mode exactpasses on all 36 fixtures. Worth flagging for review thatbuild()is immutable once published, so this content can be added to later but not amended — the cases are the part to scrutinise.🤖 Generated with Claude Code