Skip to content

Parity with jRegTab 0.7.1: CONCAT/JOIN product, named keys, diagnostics, provider index, zero-width subrows; CLI runner; 0.7.1 - #10

Merged
shigarov merged 1 commit into
mainfrom
feature/jregtab-0.7.1-parity
Sep 8, 2026
Merged

shigarov merged 1 commit into
mainfrom
feature/jregtab-0.7.1-parity

Conversation

@shigarov

@shigarov shigarov commented Sep 8, 2026

Copy link
Copy Markdown
Contributor

Summary

  • JOIN(K) becomes the record product, the former folding operation is CONCAT(K) (no dedup, checked preconditions); multi-valued rec, sets J/C; Diagnostic, TableInterpreter.with_strict_preconditions() / .diagnostics()
  • RecordKey: key positions and/or attribute names (CONCAT(0, 1, 'A', 'B'), JOIN('k')), canonical serializer form
  • "REC missing?" diagnostics for explicit CONCAT/JOIN (ActionInst.inherited)
  • zero-width subrows/subtables match the empty sequence; {0}/{1} accepted
  • spatial ItemIndex + CandidateScope for cell-derived providers (linear in the number of cells), pinned by a randomized equivalence test against the full-scan reference
  • python -m pyregtab.runner — drop-in counterpart of the regtab-runner jar of regtab-eval-on-atbench
  • conformance corpus + grammar re-pinned to jRegTab v0.7.1; docs, README; version 0.7.1

Plan: plans/JREGTAB_0_7_1_PARITY.md.

Test plan

  • cargo test (both feature configurations) — 45 passed; clippy -D warnings clean
  • pytest tests — 1981 passed (task corpus, conformance positive/negative/semantic, DSL parity, new tests/test_join_concat.py)
  • mkdocs build --strict, tools/check_grammar_sync.py
  • regtab-eval-on-atbench: all 244 solutions byte-identical between the jRegTab 0.7.1 runner and python -m pyregtab.runner

🤖 Generated with Claude Code

…cs, provider index, zero-width subrows; CLI runner; release 0.7.1

Port of the upstream plans 0.5.2-0.7.1:
- JOIN(K) is the record product (cross product for K = {}, equi-join on K),
  the folding operation is CONCAT(K) without dedup and with checked
  preconditions; rec is multi-valued, joined-away (J) and concatenated-away
  (C) anchors; Diagnostic + TableInterpreter.with_strict_preconditions()
- RecordKey: key positions and/or attribute names, CONCAT(0, 1, 'A', 'B'),
  JOIN('k'), canonical form in the serializer
- "anchor has no record - REC missing?" diagnostics for explicit actions
  (ActionInst.inherited)
- zero-width subrows/subtables match the empty sequence, {0}/{1} accepted,
  out-of-range integer literals are compile errors with a position
- spatial ItemIndex + CandidateScope: providers scan the anchor's row, column,
  cell, row range or subtable instead of the whole item set (linear in the
  number of cells); randomized equivalence test against the full-scan
  reference; FxHash working state
- python -m pyregtab.runner: drop-in counterpart of the regtab-runner jar of
  regtab-eval-on-atbench (byte-identical output.csv on all 244 solutions)
- conformance corpus and grammar re-pinned to v0.7.1; docs and README updated

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@shigarov
shigarov merged commit 00e75e8 into main Sep 8, 2026
8 checks passed
@shigarov
shigarov deleted the feature/jregtab-0.7.1-parity branch September 8, 2026 04:40
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant