v0.22.0 — roadmap checkpoint release
Roadmap checkpoint release after the v0.21 engine cut. This release lands the
first four campaign buckets after v0.21.0: the runtime/recovery foundation,
the external lex-state election ledger, broad precise ExternalLexStates
coverage, and the Cobol large-table/recovery cleanup. It does not claim that
all grammar tiers are parity-clean yet; the remaining tier-IV rows stay visible
and classified for the next campaign waves. It also does not claim universal
near-C parser performance across the registry yet; v0.22.0 publishes the
perf-scan scaffold and targeted wins while the broader wave-3 ratchet remains
tracked for the next release line.
Added
cgo_harness/perf_scan: a nightly Go-vs-C scoring harness and CI proposal
for tracking full-parse and incremental parser performance without mixing
correctness and performance gates.- External lex-state election ledger for all 206 tracked grammars
(cgo_harness/tier_scan/external_lex_elections.{md,json}), including the
default-elected, staged, missing-ELS, and no-scanner categories used by the
C-recovery rollout. - Precise ExternalLexStates tables for a broad set of external-scanner
grammars, with JavaScript and Cobol kept staged behind their explicit
opt-in policies until their defaults are separately certified. - Release-tier scan documentation and generation support. Tier publication is
staged in-tree, but the zero-IV release block is intentionally not enabled
for this checkpoint release.
Changed
- Runtime conflict handling now centralizes C's repetition-skip dispatch rule
behind the shared conflict-policy path, leaving only languages with
measured recovery-shape hazards on explicit opt-outs or scoped handlers. - External scanner symbol binding now uses positional table metadata instead
of brittle name-only assumptions, reducing stale-table failure modes across
generated blobs. - C# namespace recovery and forest/retry paths avoid redundant large-span
work, keeping the boundedness tests focused on parser behavior instead of
retry overhead. - Arena overflow slab growth is capped so pathological large parses fail or
recover under an explicit memory budget rather than growing unbounded slabs.
Fixed
- Generated parse tables no longer silently truncate action or GOTO indexes
that exceeduint16. The runtime now supports large state targets, and the
generator reports actionable boundary errors for unsupported table shapes. - Cobol fixed-format compatibility now preserves program headers and recovered
paragraph structure across large-table parses. Focused Docker gates measured
Cobol at 25/25 real-corpus parity and 20/20 direct C-oracle parity for this
release line. - Cobol recovered paragraph-header normalization now preserves unrelated parent
HasErrorstate, so a clean recovered header no longer masks a separate
retained error in the sameprocedure_divisionsubtree. - C recovery table validation now checks both action and GOTO bounds before
accepting the recovery path, preventing large-table grammars from taking a
silently invalid C-recovery route. - Recovery cycle diagnostics now include non-materializing acyclicity checks
around transient recovery children, guarding against parent-link cycles in
debug sweeps.
Performance
- GLR merge-equivalence and recovery-path cache work removes the largest
repetition-boundary cliffs found after v0.21.0 while keeping correctness
gates separate from benchmark gates. - Bash retry overhead, C# namespace recovery retries, and TypeScript
fourslash arena pressure are reduced by targeted fast-path and cap fixes. - The perf harness is present for nightly scoring and follow-up CI wiring, but
this release does not enable a universal near-C performance gate.