1. A trailing `$` at the end of a replacement string could read out of
bounds via `how[i + 1]`; this now raises `ValueError` instead.
2. Numeric capture parsing used `id += (id * 10) + digit` instead of `id
= (id * 10) + digit`, so multi-digit refs were parsed incorrectly (e.g.
`$12` resolved as capture 13 instead of 12).
4. Unterminated named replacement syntax (e.g. `${foo)` is now rejected
with ValueError instead of being accepted and parsed inconsistently.
Found and fixed by GPT 5.3 Codex.
* nre-proj/master: (132 commits)
Change to options module
Reweave readme
Better handle errors
Update documentation
Change flags to inline
Improve performance
Add tests for empty or non-empty match
Fix skipping an empty match at the end
Add longer flags
Fix getinfo overflows
Use docweave
Convert readme to RST
Fix result shadowing warning
Throw an exception when replacing with a nil value
Fix potential buffer overflow
Fix zero-length matches for multibyte characters
Make splitting an empty string give 1 empty result
Change endpos to inclusive
Change endpos default from -1 to int.high
Change capture upper bounds to inclusive
...