diff --git a/Cargo.lock b/Cargo.lock index 28df02ac04..da0b463e46 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4784,9 +4784,9 @@ checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" [[package]] name = "perex" -version = "0.1.11" +version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4cacad0d8fd77338345abb71e4f8372ce93bf0e9205d845940f8e789b3fc98a8" +checksum = "86d57d56f880b3ce759f0423b632c7522e5faa05227b8785154797e749fdc9eb" [[package]] name = "perry" diff --git a/Cargo.toml b/Cargo.toml index b025d1fd1e..45a66ca780 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -401,20 +401,21 @@ regex = "1.12" aho-corasick = "1.1" memchr = "2" # The single regular-expression engine, through crates/perry-perex. -# 0.1.11 carries PerryTS/perex#3 (package-shaped repeats and classes leave the -# per-character phase loop; release commit 80845f5310, tag v0.1.11). It is -# younger than the 7-day `global-min-publish-age` soak (.cargo/config.toml), -# so Cargo.lock was resolved once with CARGO_RESOLVER_INCOMPATIBLE_PUBLISH_AGE=allow -# under an owner-approved one-time publish-age override (2026-09-28), for this -# version only; the window itself is unchanged. No public API change from -# 0.1.10. Published 2026-09-27T21:13:35Z, sha256 -# 4cacad0d8fd77338345abb71e4f8372ce93bf0e9205d845940f8e789b3fc98a8 — the +# 0.1.12 carries PerryTS/perex#4 (alternatives that cannot begin at the current +# character are skipped without a frame: a first-character BRANCH, flat +# alternation, anchoring decided at compile time; program format 14; release +# commit b97fa7c235, tag v0.1.12). It is younger than the 7-day +# `global-min-publish-age` soak (.cargo/config.toml), so Cargo.lock was +# resolved once with CARGO_RESOLVER_INCOMPATIBLE_PUBLISH_AGE=allow under an +# owner-approved one-time publish-age override (2026-10-08), for this version +# only; the window itself is unchanged. No public API change from 0.1.11. +# sha256 86d57d56f880b3ce759f0423b632c7522e5faa05227b8785154797e749fdc9eb — the # checksum Cargo.lock records, verified against -# https://crates.io/api/v1/crates/perex/0.1.11. As with turnloop above, the +# https://crates.io/api/v1/crates/perex/0.1.12. As with turnloop above, the # opt-out is a committed, reviewable change, never a silent one, and the lock -# pins the exact artifact. The override lapses on its own on 2026-10-04, when -# 0.1.11 clears the window. -perex = "0.1.11" +# pins the exact artifact. The override lapses on its own on 2026-10-15, when +# 0.1.12 clears the window. +perex = "0.1.12" # turnloop P0/P1: the per-agent event-loop wait driver and, since P1, Perry's # stream sockets (docs/turnloop/p0-report.md, crates/perry-runtime/src/turnloop_net). # 0.1.0-alpha.3 switched turnloop's own dependency requirements from exact pins diff --git a/changelog.d/perex-0-1-12.md b/changelog.d/perex-0-1-12.md new file mode 100644 index 0000000000..711b890f29 --- /dev/null +++ b/changelog.d/perex-0-1-12.md @@ -0,0 +1 @@ +perex 0.1.12 (PerryTS/perex#4): alternatives that cannot begin at the current character are skipped without a backtracking frame, so large alternations like an emoji-width regex stop backtracking through every branch. In perry, `emoji.test(c)` 3,396 -> 2,123 instructions per call, `ns.default().test(c)` 3,865 -> 2,593, Claude Code string-width per grapheme 15,161 -> 13,825; commander -0.32%, fastify -0.18%, qs parse -0.18% instructions.