fix(regex): advance native Joni pattern semantics - #1052
Merged
Conversation
This was referenced Aug 18, 2026
Preserve the leftmost physical capture target when branch-reset alternatives reuse a logical group number, admit duplicate-name calls only for the PerlOnJava syntax, and retain caller captures after multiplex subroutine calls. Add direct Joni and Perl regression coverage for named, numeric, duplicate-name, capture-publication, and ordinary-capture behavior. Generated with [Codex](https://openai.com/codex/) Co-Authored-By: Codex <codex@openai.com>
Track each named-group definition independently inside the forked Joni bytecode matcher while retaining Perl's shared logical branch-reset numbering. Publish duplicate-name arrays from committed physical spans, restore them on backtracking, and keep subpattern calls from publishing capture slots. Generated with Codex (https://openai.com/codex) Co-Authored-By: Codex <codex@openai.com>
Add an optional syntax-level named-character resolver and let the Perl lexer emit code-point tokens for braced named escapes inside and outside classes. Generated with [Codex](https://openai.com/codex) Co-Authored-By: Codex <codex@openai.com>
Inject the Perl named-character resolver through the Joni syntax and retire the frontend textual rewrite while preserving Unicode and byte-mode behavior. Generated with [Codex](https://openai.com/codex) Co-Authored-By: Codex <codex@openai.com>
Allow positive and negative lookahead anchors within Perl-syntax lookbehind while preserving the existing Ruby-syntax restrictions. Add direct Joni and standard-Perl regression coverage for semantics, captures, bounded lengths, malformed patterns, and syntax isolation. Generated with [OpenAI Codex](https://openai.com/codex) Co-Authored-By: OpenAI Codex <codex@openai.com>
Admit real Perl KEEP assertions to the native Joni opcode, reject KEEP inside lookaround, and retire the Java marker capture and replacement bookkeeping. Generated with [Codex](https://openai.com/codex) Co-Authored-By: Codex <codex@openai.com>
Let syntax owners resolve property names to validated native code-point ranges while preserving JCodings fallback behavior and Joni's parser ownership. Generated with [OpenAI Codex](https://openai.com/codex) Co-Authored-By: OpenAI Codex <codex@openai.com>
Pass Perl 5.44 General_Category assignments to Joni unchanged and resolve them through pinned native ranges instead of expanding property text in the adapter. Generated with [OpenAI Codex](https://openai.com/codex) Co-Authored-By: OpenAI Codex <codex@openai.com>
Record native nested lookahead in lookbehind, KEEP routing, and the General_Category range-resolver boundary in the feature matrix. Generated with Codex (https://openai.com/codex) Co-Authored-By: Codex <codex@openai.com>
Track Perl lookaround analysis state so the native KEEP anchor reports Perl's exact compile-time diagnostic in all four assertion forms while preserving non-Perl Joni behavior and subexpression-call boundaries. Generated with [Codex](https://openai.com/codex) Co-Authored-By: Codex <codex@openai.com>
fglock
changed the base branch from
integration/phase36-regex-parity
to
master
August 18, 2026 17:56
fglock
force-pushed
the
fix/phase36-branch-reset-named-call
branch
from
August 18, 2026 17:56
62d34ae to
aae6d0a
Compare
Keep automatic branch-reset subroutine-call routing on Java until the native implementation passes its combined imported-corpus gate. Forced Joni mode continues to exercise the new engine support directly. Generated with Codex (https://openai.com/codex) Co-Authored-By: Codex <codex@openai.com>
fglock
marked this pull request as ready for review
August 18, 2026 19:10
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
\N{name}escapes natively inside forked Joni\Kassertions through native Joni instead of the Java marker rewrite\Kinside all four lookaround formsStack
PR #1042 is merged. This draft is rebased directly onto master at merge commit
1af78283ff84afff600b846676cb439c2052b3ba. PRs #1054–#1056 are stacked onthis branch and remain separate review slices.
Current validation
makeat86e474835: 17 tasks, all direct Joni tests, unit shards, packaging, and shadow JAR green in 7m02sgit diff --checkperl5_t/t/rematrix from one current binary; require all 80 files and classify every timeout, zero-TAP result, and Java-passing/Joni-failing assertion before removing temporary routingDeferred forced-backend gate
The old frozen counts are not current expectations because generated-property
coverage and the native Joni surface have changed. Remaining follow-ups are
separate slices: remove the redundant KEEP adapter guard, preserve per-member
fold policy in composed classes, migrate property wildcards, and remove each
temporary Java route only after its native differential gate is green.