ReviewOS

zig-utils/zig-regex

ECMAScript: Unicode dot must consume WTF-8 surrogate pairs atomically

#12
Closed chris opened this 9 days ago ·
9 days ago

Discovered by zig-utils/zig-js#213.

With .unicode = true, . currently uses the byte-NFA code-point automaton and accepts a WTF-8 encoded high surrogate as a complete one-unit match. ECMAScript Unicode matching must combine an adjacent high/low surrogate pair and consume both UTF-16 code units atomically.

Acceptance criteria:

  • Unicode . consumes a WTF-8 high/low surrogate pair as one match.
  • Legacy non-Unicode . continues consuming only one surrogate code unit.
  • Unicode . continues matching normal UTF-8 scalar input and respecting dot-all/line terminators.
  • Add a focused regression test suitable for zig-js private JSC ABI reuse.
9 days ago

Implemented and pushed to main in 86159c5. Unicode dot now routes through the ECMAScript code-point matcher so adjacent WTF-8 high/low surrogates are consumed atomically; legacy dot remains one UTF-16 unit. Focused regression passed (1/1).

Sign in to comment on this issue.