deps(regex): take perex 0.1.10; ready for the perex#3 matcher release - #11548
Draft
proggeramlug wants to merge 2 commits into
Draft
proggeramlug wants to merge 2 commits into
proggeramlug wants to merge 2 commits into
Conversation
perex 0.1.10's `Search::run` fails with `RunError { error, remaining_work,
buffers }`. Both call sites in `perex_runtime.rs` now set the budget from the
failed run's remaining work, where they used to keep the entry budget and
under-count what the failed call spent. Nothing observes that today, since
WORK is usize::MAX on these paths.
This is the adaptation the perex release carrying PerryTS/perex#3 (the
package-shaped repeat and class fast paths) needs. Taking that release is then
a version bump.
|
Important Draft PR not reviewedDraft PRs are not automatically reviewed by default.
To automatically review draft PRs, update your CodeRabbit configuration: reviews:
auto_review:
drafts: trueThanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Contributor
Author
|
perex 0.1.11 is published (crates.io, tag v0.1.11, commit 80845f531 = perex#3 merged + version bump). It clears Perry's 7-day publish-age soak around 2026-10-04 21:40Z. Then this PR only needs the version bump from 0.1.10 to 0.1.11 and a re-measure. Measured with perex#3 patched in locally on top of #11543: jsonwebtoken decode −52%, uuid v4 −48%, v7 −30%, v5 parse −24%, nanoid −20%, RSS within 1%. |
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Draft. Blocked on a perex release that contains PerryTS/perex#3, and on that release clearing the 7-day
min-publish-agesoak. This PR is ready to receive that version bump.Part of #10166
What it does today:
Search::runnow returnsRunError { error, remaining_work, buffers }, so both call sites inperex_runtime.rsrecord the work a failed run left instead of keeping the entry budget. That retires the "under-counts what the failed call spent" caveat those sites carried. Nothing observes it today, becauseWORKisusize::MAXon these paths.The step still missing is
perex = "0.1.11"(or whichever release carries perex#3), which brings the matcher changes measured below. Nothing else in Perry changes for it.What the perex#3 matcher changes do in Perry
Measured on qb2 (AMD EPYC 9254, idle),
--release,PERRY_NO_AUTO_OPTIMIZE=1. The perex#3 branch is built in through a local[patch.crates-io]path. Both arms sit on top of #11543, and the only difference between them is the perex source plus this adaptation. Instructions come fromperf stat -e instructions:uas a two-N differential.Package workloads (
scripts/package_bench.py run --arms node,perry --modes instr). Every Perry run's output was byte-identical to Node 26.5.1:Microbenchmarks, instructions per call:
REGEX.test(/^(?:[0-9a-f]{8}-…)$/i)JWS_REGEX.test, 155-char token/^\d+$/.testLINE.execloop, 36-line documentsplit(/%..|./)Peak RSS (median of 5, harness n2) moves by less than 1% on every workload measured except moment/parse_format, which is −6.1%. The matcher allocates nothing new; its scratch is unchanged.
Tests (qb2, with the perex#3 patch)
cargo test --release -p perry-runtime --lib -- perex split replace regex(RUST_TEST_THREADS=1): 274 passed.run_parity_tests.sh(PERRY_SKIP_BUILD=1 PERRY_NO_AUTO_OPTIMIZE=1) with filtersregex,regexp,split,replace,match, against Node 26.5.1: 65 PASS, plus the same pre-existing COMPILE_FAIL main has (test_gap_regex_replace_dyn_regex_with_http).test-files/test_gap_regex_engine_package_shapes.ts(added in perf(regex): cut split and replace host overhead on ASCII subjects #11543) is byte-identical to Node with the patch.cargo testin debug and release, every differential harness including q1/q17 pausing and relocation, and test262.Run on this branch as pushed, with perex 0.1.10 from the registry:
cargo test --release -p perry-runtime --lib -- perex split replace regex(RUST_TEST_THREADS=1), 274 passed. Not run with 0.1.10: the gap filters. The adaptation is the same code that passed them against the patched perex. Also not run: the full gap sweep, the auto-optimize arm, macOS, andcargo test --workspace.