Skip to content

v0.27.0 — layered memory containment and canonical-parse levers

Choose a tag to compare

@odvcencio odvcencio released this 12 Jul 16:56
15d6760

Containment and canonical-parse-lever release.

Memory containment is now layered: volume-triggered budget polling (a real check fires whenever tracked arena growth exceeds 64 MiB since the last one, bypassing the iteration-count poll mask), budget checks inside the GLR stack-merge survivor loop (the previously unpollable grind window), and a decoupled absolute hard ceiling (GOT_PARSE_MEMORY_HARD_CEILING_MB, default 2048, 0 = off). Runaway parses now stop with ParseStopMemoryBudget at single-digit multiples of the budget instead of ballooning unbounded; the certified Poppler witness still completes full-span under its 2 GiB budget with behavior identical to the prior release (same-host A/B within 0.03% RSS).

Two independent hot-path levers land together:

  • Raw-shape capture and content hashing are elided while a parse has only ever had a single GLR stack and has not entered error recovery — pure write-only work on unambiguous parses, adversarially reviewed with forced-descent and recovery differential tests.
  • grammargen's hidden-choice passthrough table no longer excludes supertype symbols with all-neutral-unary alternatives; Go's _statement/_simple_statement wrappers now collapse in the zero-allocation unary reduce path (1,500 wrapper nodes eliminated per canonical-workload parse; regenerated go.bin differs in exactly two table bits).

Combined receipt (same host, same pinned core, C baseline re-measured in-session): canonical Go full parse 12.25 ms → 10.91 ms — 2.14x → 1.89x the C runtime — with allocations unchanged (9 per full parse, zero on both incremental lanes). Full methodology and reproduction commands in BENCH.md.

Also in this release: the grammargen field-map generation ceiling is lifted (per-ProductionID dedup removes 60–87% orphaned entries from grammargen blobs; Bash and Dart generate for the first time and carry real-corpus floor rows), dedicated non-terminal alias-map parity coverage for Go/Swift/Caddy, reproducible parity floors seeded from lock-pinned corpora, retirement of the dead Python compat helpers and six test-only compat wrappers, gssNode 64-byte layout compaction with transient GSS slab recycling, a hard zero-cliff gate for nightly fleet sweeps, and BENCH.md as the canonical performance-claims page with pinned quiet-host receipts.

Full details in CHANGELOG.md.