Skip to content

refactor(regex): make Joni property folding explicit - #1054

Draft
fglock wants to merge 1 commit into
fix/phase36-branch-reset-named-callfrom
fix/phase36-joni-property-fold-policy
Draft

refactor(regex): make Joni property folding explicit#1054
fglock wants to merge 1 commit into
fix/phase36-branch-reset-named-callfrom
fix/phase36-joni-property-fold-policy

Conversation

@fglock

@fglock fglock commented Aug 18, 2026

Copy link
Copy Markdown
Owner

Summary

  • extend forked Joni's character-property resolver result with explicit case-fold policy and character-class context
  • retain Perl General_Category fold closure while preserving standalone Block, Script, and Script_Extensions membership under /i
  • pass standalone pinned properties to Joni unchanged instead of expanding them in the adapter
  • keep no-fold properties inside composed character classes adapter-owned until Joni can preserve per-member policy through class algebra
  • document the current native/adapter boundary in the feature matrix

Stack

This draft is stacked on PR #1052 (fix/phase36-branch-reset-named-call) and must not merge first. It is independent of PR #1042's progressive-backend release repair.

Validation

  • standard Perl 5.42.2 oracle: 8/8
  • warning-free full make: 17 tasks, 5m09s, including direct Joni tests, all unit shards, packaging, and shadow JAR
  • forced-Joni focused property matrix on JVM: 194 assertions, 193 pass plus one pre-existing TODO, exit 0
  • forced-Joni focused property matrix on interpreter: 194 assertions, 193 pass plus one pre-existing TODO, exit 0
  • existing unicode_script_extensions_pinned.t, unicode_block_data.t, unicode_property_aliases.t, and invalid-property diagnostics included in both focused runs
  • git diff --check

The remaining character-class work is intentionally not approximated: Joni currently folds a completed class as a single set, so union/intersection/negation need an AST representation that retains each member's fold policy before no-fold properties can move out of the adapter there.

@fglock
fglock force-pushed the fix/phase36-joni-property-fold-policy branch from 56824be to dbe69b8 Compare August 18, 2026 17:24
@fglock
fglock force-pushed the fix/phase36-branch-reset-named-call branch from 62d34ae to aae6d0a Compare August 18, 2026 17:56
@fglock
fglock force-pushed the fix/phase36-joni-property-fold-policy branch from dbe69b8 to f409b84 Compare August 18, 2026 17:57
Carry per-property case-fold policy through the forked Joni resolver and parse
standalone pinned Block, Script, and Script_Extensions assignments natively.
Keep no-fold properties inside composed classes in the adapter until Joni can
preserve member policy through class algebra.

Generated with [OpenAI Codex](https://openai.com/codex)

Co-Authored-By: OpenAI Codex <codex@openai.com>
@fglock
fglock force-pushed the fix/phase36-joni-property-fold-policy branch from f409b84 to d862449 Compare August 18, 2026 18:25
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