Phase 36: unify regex parity integration - #1042
Merged
Merged
Conversation
fglock
added a commit
that referenced
this pull request
Aug 18, 2026
Record PR #1042 and advance the integration tracker to CI and final forced-backend validation. Generated with [Codex](https://openai.com/codex) Co-Authored-By: Codex <codex@openai.com>
Squashed integration of PR #1006 at e1d96ef. Generated with [Codex](https://openai.com/codex) Co-Authored-By: Codex <codex@openai.com>
Squashed integration of PR #1005 at 2bb3ebc. Generated with [Codex](https://openai.com/codex) Co-Authored-By: Codex <codex@openai.com>
Squashed integration of PR #1007 at 94cf0ff. Generated with [Codex](https://openai.com/codex) Co-Authored-By: Codex <codex@openai.com>
Squashed integration of PR #1010 at 3c0189a. The duplicated PR #1007 change is already present as its own integration commit. Generated with [Codex](https://openai.com/codex) Co-Authored-By: Codex <codex@openai.com>
Squashed integration of PR #1008 at a42ed91. Generated with [Codex](https://openai.com/codex) Co-Authored-By: Codex <codex@openai.com>
Squashed integration of PR #1009 at 60bd283. Generated with [Codex](https://openai.com/codex) Co-Authored-By: Codex <codex@openai.com>
Squashed integration of PR #1012 at b80a537. Generated with [Codex](https://openai.com/codex) Co-Authored-By: Codex <codex@openai.com>
Squashed integration of PR #1011 at 7410cab. Generated with [Codex](https://openai.com/codex) Co-Authored-By: Codex <codex@openai.com>
Squashed integration of PR #1013 at 9eae6b8. Generated with [Codex](https://openai.com/codex) Co-Authored-By: Codex <codex@openai.com>
Squashed integration of PR #1014 at 785aa06. Generated with [Codex](https://openai.com/codex) Co-Authored-By: Codex <codex@openai.com>
Squashed integration of PR #1015 at d5a7b00. Generated with [Codex](https://openai.com/codex) Co-Authored-By: Codex <codex@openai.com>
Squashed integration of PR #1018 at 1d6972a. Generated with [Codex](https://openai.com/codex) Co-Authored-By: Codex <codex@openai.com>
Squashed integration of PR #1019 at 39be7ed. Generated with [Codex](https://openai.com/codex) Co-Authored-By: Codex <codex@openai.com>
Squashed integration of PR #1020 at c997374. Generated with [Codex](https://openai.com/codex) Co-Authored-By: Codex <codex@openai.com>
Squashed integration of PR #1021 at d66a5e9. Generated with [Codex](https://openai.com/codex) Co-Authored-By: Codex <codex@openai.com>
Squashed integration of PR #1022 at 9cca1c0. Generated with [Codex](https://openai.com/codex) Co-Authored-By: Codex <codex@openai.com>
Squashed integration of PR #1023 at 5bba948. Generated with [Codex](https://openai.com/codex) Co-Authored-By: Codex <codex@openai.com>
Squashed integration of PR #1024 at f22de2d. Generated with [Codex](https://openai.com/codex) Co-Authored-By: Codex <codex@openai.com>
Squashed integration of PR #1025 at 12360ac. Generated with [Codex](https://openai.com/codex) Co-Authored-By: Codex <codex@openai.com>
…tes (#1026) Squashed integration of PR #1026 at fb297a5. Generated with [Codex](https://openai.com/codex) Co-Authored-By: Codex <codex@openai.com>
Squashed integration of PR #1027 at bf77f09. Generated with [Codex](https://openai.com/codex) Co-Authored-By: Codex <codex@openai.com>
Squashed integration of PR #1028 at 5283843. Generated with [Codex](https://openai.com/codex) Co-Authored-By: Codex <codex@openai.com>
Squashed integration of PR #1029 at badbdfe. Generated with [Codex](https://openai.com/codex) Co-Authored-By: Codex <codex@openai.com>
Squashed integration of PR #1030 at 5f2ce0f. Generated with [Codex](https://openai.com/codex) Co-Authored-By: Codex <codex@openai.com>
Squashed integration of PR #1031 at 22b9d32. Generated with [Codex](https://openai.com/codex) Co-Authored-By: Codex <codex@openai.com>
Squashed integration of PR #1032 at c1a7a99. Generated with [Codex](https://openai.com/codex) Co-Authored-By: Codex <codex@openai.com>
Squashed integration of PR #1033 at dd5bcd6. Generated with [Codex](https://openai.com/codex) Co-Authored-By: Codex <codex@openai.com>
Squashed integration of PR #1034 at 4755b55. Generated with [Codex](https://openai.com/codex) Co-Authored-By: Codex <codex@openai.com>
Track the minimal Perl Unicode 17.0 sources through the importer manifest so generator reproducibility tests pass in clean CI checkouts while retaining byte-for-byte source, hash, version, and notice verification. Generated with [Codex](https://openai.com/codex/) Co-Authored-By: Codex <codex@openai.com>
fglock
force-pushed
the
integration/phase36-regex-parity
branch
from
August 18, 2026 08:44
44adf32 to
fc316a0
Compare
Disable Git text normalization for raw-byte-hashed Unicode generator inputs so Windows checkouts retain the pinned source bytes validated by the generators. Generated with [Codex](https://openai.com/codex/) Co-Authored-By: Codex <codex@openai.com>
Translate the resolver's existing Perl-only Unicode property aliases before Joni compilation so ordinary default-Joni patterns retain their implemented Titlecase, POSIX, and Perl identifier semantics. Generated with [Codex](https://openai.com/codex/) Co-Authored-By: Codex <codex@openai.com>
Keep the byte-reproduced Block and Numeric_Value Java data sources on LF in Windows checkouts so their raw-LF generators compare byte for byte. Generated with [Codex](https://openai.com/codex/) Co-Authored-By: Codex <codex@openai.com>
Classify the established IsDigit, IsLower, and IsUpper aliases for frontend translation and splice their generated ranges into an enclosing character class without nested brackets. This prevents Joni from misparsing adjacent Perl property aliases in ordinary classes. Generated with [Codex](https://openai.com/codex/) Co-Authored-By: Codex <codex@openai.com>
Translate standalone Perl code points above U+10FFFF into exact internal-marker alternatives before Joni compilation. This preserves Perl's ANYOFH membership behavior without changing range or negated-class semantics. Generated with [OpenAI Codex](https://openai.com/codex/) Co-Authored-By: OpenAI Codex <codex@openai.com>
Translate Perl's (*:NAME) shorthand to Joni's supported (*MARK:NAME) form and retain control-verb state publication for REGMARK. Generated with [OpenAI Codex](https://openai.com/codex/) Co-Authored-By: OpenAI Codex <codex@openai.com>
Route Perl property aliases through the extended-class resolver, normalize its generated property names for Joni, and encode control-character escapes before delimiter-sensitive class parsing. Generated with [OpenAI Codex](https://openai.com/codex/) Co-Authored-By: OpenAI Codex <codex@openai.com>
Route ordinary automatic-mode patterns through the established Java backend while preserving mandatory Joni routing for callbacks, recursion, conditions, lookbehind, and control verbs. Keep the Perl unit corpus explicitly forced to Joni so the temporary acceptance policy cannot hide unfinished full-Joni parity. Verified by the focused nine-file comparison (no regressions versus forced Java) and a warning-free full make. Generated with [OpenAI Codex](https://openai.com/codex/) Co-Authored-By: OpenAI Codex <codex@openai.com>
Temporarily keep ordinary positive and negative lookbehind on the Java backend while Joni's nested-lookahead admission is incomplete. Patterns containing callbacks, recursion, conditions, or control verbs continue to require Joni, and explicit forced-Joni mode remains available for parity work. This fallback is scheduled for removal once the native Joni lookbehind patch passes the same corpus. Generated with [OpenAI Codex](https://openai.com/codex/) Co-Authored-By: OpenAI Codex <codex@openai.com>
Temporarily keep ordinary branch-reset subroutine-call patterns on the Java compatibility backend while the native Joni named-call admission patch is in progress. Mixed patterns containing callbacks, conditions, control verbs, or other Joni-only constructs continue to require Joni, as does explicit Joni mode. This is tracked removal debt for the Phase 36 regex parity integration. Generated with [Codex](https://openai.com/codex/) Co-Authored-By: Codex <codex@openai.com>
14 tasks
Probe explicit concat-assignment overloads without enforcing generic fallback after a miss, then retain the ordinary concat path for stringify-only objects. Preserve copy-constructor isolation for explicit mutators. Generated with [OpenAI Codex](https://openai.com/codex) Co-Authored-By: OpenAI Codex <codex@openai.com>
Let the compound-assignment drivers perform the sole lvalue store so tied and environment proxies retain Perl FETCH/STORE counts and taint metadata. Resolve tied regex interpolation parts once before singleton or blessed inspection. Generated with [OpenAI Codex](https://openai.com/codex) Co-Authored-By: OpenAI Codex <codex@openai.com>
Resolve named sort comparators once at sort entry, distinguish direct named calls from saved code references, and preserve compiled calls across stash deletion while following visible typeglob replacements. Remove duplicate B.pm constant declarations that emitted spurious redefine warnings. Add standard-Perl-validated coverage for sort redefinition, direct call versus saved-CV identity, and B constant loading. Generated with [OpenAI Codex](https://openai.com/codex) Co-Authored-By: OpenAI Codex <codex@openai.com>
Honor unicode_eval for ordinary byte-backed eval source, retain Perl's extended UTF-8 delimiter form, and share strict decoding between runtime and StringParser. Generated with [Codex](https://openai.com/codex/) Co-Authored-By: Codex <codex@openai.com>
Preserve quoted-string hash source context through both code generators so Perl's uninitialized warning includes the hash name and runtime key. Keep the path lexical-warning-aware and separate from regex interpolation. Generated with [Codex](https://openai.com/codex) Co-Authored-By: Codex <codex@openai.com>
Keep lexical package qualification for method lookup while hiding that internal qualification in missing-method diagnostics. Generated with [Codex](https://openai.com/codex) Co-Authored-By: Codex <codex@openai.com>
Reserve the scalar-shaped reference override for explicit readonly constant.pm proxies so ordinary pseudo-CV exports retain glob identity. Generated with [Codex](https://openai.com/codex) Co-Authored-By: Codex <codex@openai.com>
Treat active lexical rebinding as a registry side effect so aggregate alias cells are not cast back to scalar loop variables by either execution backend. Generated with [OpenAI Codex](https://openai.com/codex) Co-Authored-By: OpenAI Codex <codex@openai.com>
Avoid wrapping the shared undef scalar when foreach aliases interpreter arguments, preserving Perl's observable reference identity. Generated with [OpenAI Codex](https://openai.com/codex) Co-Authored-By: OpenAI Codex <codex@openai.com>
Add an opt-in comparison mode for the two independently reconstructed PR 958 log signatures. Always report raw and normalized counts, and prove unrelated regressions remain visible. Generated with [Codex](https://openai.com/codex) Co-Authored-By: Codex <codex@openai.com>
Keep direct named calls dynamic for runtime glob replacement, while pinning the parse-time CV when a BEGIN block displaced it during compilation. Generated with [Codex](https://openai.com/codex/) Co-Authored-By: Codex <codex@openai.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.
Summary
not squash or rebase-merge this PR
normalized explicitly
Source PR order
Every source PR number appears in its integration commit subject. Original
head SHAs are recorded in the commit messages.
Merge policy
Use Create a merge commit. Keeping the source-PR and repair commits
preserves review, blame, and bisect history, while the merge commit permits a
whole-integration rollback with
git revert -m 1 <merge-sha>.Repair batch
The final integration keeps eleven unsquashed repair commits covering:
unicode_evalSUPERdiagnostics and ordinary glob identityundefValidation
git diff --check origin/master...HEADmake, including Joni, all five unit shards,packaging verification, and shadow jar
op/symbolcache.trestored from 7/8 to 8/8 on both backends550 unchanged, two known environmental flakes excluded, +201,634 passing
assertions
pat_advancedvariants complete1,687 tests at 1,522 passing, +146 each versus PR Fix WWW::Mechanize compiler tooling #958
op/do.tduplicated TAP andjaph/abigail.t's logged extra pass as transcript artifactsnative-migration PR fix(regex): advance native Joni pattern semantics #1052, where expected counts will be established from
the then-current corpus
Evidence
/tmp/phase36-pr1042-integrated-make.log/tmp/phase36-pr1042-symbolcache-fix-make.log../PerlOnJava/logs/test_20260818_180000_1042.log/tmp/phase36-pr1042-acceptance-with-symbolcache-rerun.log/tmp/phase36-pr1042-final-corrected-normalized-compare.logReview notes
19569d86d565f98372dbfb979174799290be8e0c.routing through Java are temporary merge scaffolding. Explicit Joni,
callbacks, dynamic patterns, conditions, and control verbs remain Joni.
intentionally excluded from this release branch.
Generated with Codex