Skip to content

Merge train: 19 PRs (#9746–#9767) + gate fixes - #9798

Merged
proggeramlug merged 42 commits into
mainfrom
train124
Sep 5, 2026
Merged

Merge train: 19 PRs (#9746–#9767) + gate fixes#9798
proggeramlug merged 42 commits into
mainfrom
train124

Conversation

@proggeramlug

Copy link
Copy Markdown
Contributor

Merge train: 19 PRs#9746, #9747, #9748, #9749, #9751, #9752, #9753, #9754, #9757, #9758, #9759, #9760, #9761, #9763, #9764, #9765, #9766, #9767, #9750. Validated once as a tree, rebase-merged so each commit keeps its author.

#9762 is not in this train and is landing in the next one — see the note at the end.

Gate work

Five gates went red together; each is fixed at source rather than baselined away. All five were verified green on clean main first, so none had a pre-existing excuse.

Other train fixes

regex.rs crossed the 2000-line cap, so escape_regexp_source moved into the existing regex/escape.rs and flags validation into a new regex/flags.rs — both gated on regex-engine like their siblings. (A --features regex-engine check passes while the default build fails, since both moved items sit behind that gate; worth knowing before trusting a single-configuration check.)

Two docs conflicts, resolved by kind: #9759's prose kept both independent sections; #9763's docs/api/perry.d.ts and docs/src/api/reference.md are generated ("Do not edit by hand"), so they were regenerated from the manifest rather than merged.

Validation

64/64 lint gates; release build; perry-codegen, perry-runtime, perry-stdlib, perry-hir, perry-transform — all green (RUST_TEST_THREADS=1).

On #9762

It failed tdz_numeric_const_read_is_not_constant_folded, and I initially reported it as a regression. That was wrong: the emitted IR contains call i64 @js_box_get_bits_named(...), so the TDZ check is intact — the PR routes it through a named variant so the ReferenceError can identify the binding. The test hard-codes the old helper spelling. Corrected on the PR, and the test is being fixed to assert the property rather than the spelling (plus the no-fold assertion it was missing) in the next train.

Ralph Küpper added 30 commits September 5, 2026 05:17
A compiler built from a runtime-only branch computes a different
`build_id` (djb2 of its own executable) and therefore misses every object a
sibling build cached, even though the HIR and every codegen option match.
Pinning the id lets relink workflows on large bundles (the 13 MB claude-code
bundle: ~3 min link instead of ~40 min codegen) reuse those objects. Codegen
changes still miss through the `hir` and option fields; an unparsable value
is ignored.

Claude-Session: https://claude.ai/code/session_01YPfnmWZmSpSWpmnoXvH8z2
This was referenced Sep 5, 2026
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