You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/reference/feature-matrix.md
+8-9Lines changed: 8 additions & 9 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -388,21 +388,20 @@ my @copy = @{$z}; # ERROR
388
388
### Missing Regular Expression Features
389
389
390
390
- ❌ **Dynamically-scoped regex variables**: Regex variables are not dynamically-scoped.
391
-
- 🟡 **Recursive Patterns**: `(?R)` and `(?0)` execute through Joni. Constant `(??{ code })` expressions fold to a pattern; runtime-dependent dynamic patterns remain unsupported.
392
-
- 🟡 **Backtracking Control Verbs and Definitions**: `(?(DEFINE)...)` and named recursive definitions execute through Joni. Control verbs such as `(*PRUNE)`, `(*SKIP)`, `(*THEN)`, and `(*COMMIT)` are not yet complete. Atomic groups `(?>...)` are supported as noted above.
391
+
- 🟡 **Recursive and Dynamic Patterns**: `(?R)`, `(?0)`, and runtime `(??{ code })` execute through Joni. Dynamic expressions may return strings or `qr//` values, and nested alternatives participate in outer backtracking without changing outer grouping or capture numbering. Deep dynamic recursion still needs an engine-owned depth limit that does not depend on the Java call stack.
392
+
- ❌ **Backtracking Control Verbs**: `(*ACCEPT)`, `(*PRUNE)`, `(*SKIP)`, `(*THEN)`, and `(*COMMIT)` are not supported. `(*FAIL)`/`(*F)` and atomic groups `(?>...)` are supported.
393
+
- ✅ **Regex Definitions**: `(?(DEFINE)...)` containers and numbered or named calls to their subpatterns execute through Joni.
393
394
- ❌ **Lookbehind Assertions**: Variable-length negative or positive lookbehind assertions, e.g., `(?<=...)` or `(?<!...)`, are not supported.
394
-
-❌**Branch Reset Groups**: Use of `(?|...)`to reset group numbering across branches is not supported.
395
+
-✅**Branch Reset Groups**: `(?|...)`resets capture numbering across alternatives and preserves mapped match variables.
395
396
- ✅ **Advanced Subroutine Calls**: Sub-pattern calls with numbered or named references like `(?1)` and `(?&name)` execute through Joni.
396
397
- 🟡 **Conditional Expressions**: Executable callback conditions `(?(?{ code })yes|no)` execute through Joni; other condition forms are not yet complete.
397
398
- ❌ **Extended Unicode Regex Features**: Some extended Unicode regex functionalities are not supported.
398
399
- ❌ **Extended Grapheme Clusters**: Matching with `\X` for extended grapheme clusters is not supported.
399
-
- 🟡 **Embedded Code in Regex**: `(?{ code })` and executable callback conditionsrun as lexical closures in Joni with provisional captures, `$^R`, and backtracking unwind. Runtime-dependent `(??{ code })`remains unsupported.
400
-
-🟡**Regex Debugging**: Lexical `use/no re 'debug'` and `debugcolor`state is runtime-owned and produces a stable compile/execution trace on both backends and in child threads. Exact Perl optimizer opcodes and diagnostic wording are not complete.
401
-
-❌**Regex Optimizations**: Using `use re 'eval';` for runtime regex compilation is not supported.
400
+
- 🟡 **Embedded Code in Regex**: `(?{ code })`, executable callback conditions, and `(??{ code })`run as lexical closures in Joni with provisional capturesand backtracking unwind. Optimistic callbacks `(*{ code })`are not supported.
401
+
-✅**Regex Debugging**: Lexically scoped `use/no re 'debug'` and `debugcolor`are supported, including runtime snapshot ownership.
402
+
-🟡**Runtime Regex Evaluation**: `use re 'eval'` controls whether interpolated patterns containing eval groups may compile, but runtime strings cannot manufacture trusted callback closures.
402
403
- ❌ **Regex Compilation Flags**: Setting default regex flags with `use re '/flags';` is not supported.
403
-
- ❌ **Stricter named captures**
404
-
- ❌ **No underscore in named captures**`(?<test_field>test)` the name in named captures cannot have underscores.
405
-
- ❌ **No duplicate named capture groups**: In Java regular expression engine, each named capturing group must have a unique name within a regular expression.
404
+
- ✅ **Perl Named Captures**: Names may contain underscores, and duplicate named groups preserve Perl-style `%+`/`%-` and backreference behavior.
0 commit comments