Files
regex-tools/engines/go/README.md

27 lines
1.4 KiB
Markdown

# Go regexp WebAssembly engine
This directory is the fixed bridge around Go 1.26.5's standard-library
`regexp` package. It is compiled with the official `go1.26.5` toolchain for
`GOOS=js GOARCH=wasm`; `public/engines/go/wasm_exec.mjs` must come from that
same toolchain.
The bridge accepts JSON data only. The adapter measures the exact encoded
request size, and the native cap includes JSON's worst-case sixfold escaping
for every accepted string field. It implements native RE2-family Go syntax,
native UTF-8 byte offsets, `SubexpNames`, `Find(All)StringSubmatchIndex`, and
`Regexp.ExpandString` replacement templates. Application flags `i`, `m`, `s`
and `U` become Go inline flags; `g` selects native global iteration.
Replacement uses a bounded streaming implementation of `Regexp.ExpandString`
grammar. Load-time differential fixtures compare it with the native API, and
capture references stop expanding as soon as the UTF-8 output cap is reached.
The bounded bytes cross the JSON bridge as base64, so control-heavy output has
a fixed 4:3 transport expansion instead of JSON's content-dependent escaping.
Go deliberately excludes look-around and backreferences. Its global iterator
also ignores an empty match that abuts the preceding match. Those behaviours
are tested rather than emulated.
The bridge independently caps pattern, subject, match, capture-row and output
sizes. Replacement output is clipped only at a complete UTF-8 boundary.