Bump EigenScript pin v0.30.0 -> v0.32.0 - #15
Merged
Conversation
The engine shipped as a flat five-file `load_file` library, so its private helpers (`_peek`, `pos`, `n`, `branches`, …) lived in the global namespace and silently clobbered any consumer using the same names — exactly what eigen-sheet hit wiring regex-powered find & replace (#36): two `_peek` definitions, last one wins, `len: null has no length` far from the cause. Fold the split into a single importable root `regex.eigs` + `eigs.json` (name `regex`), matching the package-template contract (one root leaf, top-level non-underscore bindings become `regex.*`, `_`-names stay private). `import regex` now namespaces the whole engine, so the caller-globals collision class (#5) and the `_peek` clash (#13) are structurally gone rather than mitigated by `local`. - Public surface: `re_compile`/`re_match`/`re_search`/`re_find_all`/ `re_replace` (spans) + `compat_match`/`compat_find`/`compat_replace` (builtin-shaped, folded in from the compat shim — namespaced, so no builtin shadowing across the import boundary). - Internal entry points privatised to `_rx_parse`/`_rx_compile_ast`/ `_rx_vm_run`; all helpers already `_`-prefixed. - Tests converted from `load_file` to `import regex` (S1–S8, smoke, bench). S9 flipped from the load_file scope suite to an import-isolation guard (adds a `_peek` collision the old model couldn't survive). New `tests/test_pkg_smoke.sh` stages the package into `eigs_modules/regex/` and imports it the way `--pkg add` would, asserting public surface + internal privacy. - Docs (README/CLAUDE.md) updated to the import model; `EIGS_REF` drift fixed (v0.26.0 → the actual v0.30.0 pin). - GAPS.md: logged a builtin `regex_match` non-participating-group shape change (v0.30.0 `["b"]` → v0.32.0 `["b", null, "b"]`) surfaced by the S8 differential — will bite an EIGS_REF bump. 359 checks + package smoke, green against the CI-pinned v0.30.0. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Local preflight against a v0.32.0 worktree build: tests/run.sh green — ALL PASSED (359 checks + package smoke) Also updates the two CLAUDE.md version mentions. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Local preflight against a v0.32.0 worktree build:
tests/run.sh green — ALL PASSED (359 checks + package smoke)
Also updates the two CLAUDE.md version mentions.
Part of the ecosystem-wide v0.30.0 -> v0.32.0 sweep. eddy went first as the canary (InauguralSystems/eddy#3, merged green — its Porcupine + Elle external oracles pass on v0.32.0).
v0.30.0 -> v0.32.0 is additive: DEFLATE builtins,
clock_unix,list_index_of/list_contains, SIGUSR1 live observer dump, LSP stdlib completion. No removals or renames in the changelog.🤖 Generated with Claude Code