Repository navigation
chore(deps): bump fancy-regex to 0.20.0 across all three lockfiles - #2813
Merged
Merged
Conversation
Dependabot's #2806 bumped the workspace `fancy-regex` requirement in the root Cargo.toml but only refreshed crates/bashkit/fuzz/Cargo.lock, because the fuzz-dependencies group is scoped to that directory. The root and examples/hyperlight lockfiles kept 0.19.2, so every `cargo --locked` job failed with "cannot update the lock file ... because --locked was passed". Bump the requirement and all three lockfiles that resolve fancy-regex together (root, crates/bashkit/fuzz, examples/hyperlight). The unrelated transitive fancy-regex 0.17.0 in the root lockfile is untouched. 0.20.0 carries behavior changes that matter here, since grep/sed/rg/jq all compile on this engine under TM-DOS-025 backtracking bounds: - `delegate_dfa_size_limit` now sets the lazy-DFA cache capacity rather than a compiled-DFA size limit, and `delegate_dfa_skip_cache_capacity_check` is on by default, so our 1 MB value no longer hard-errors when too small. - In Unicode mode `\xHH` above 0x7F now matches the codepoint (`\xFF` -> U+00FF). - `\b`, `\B`, `\<` and `\>` are no longer hard outside lookbehinds. No call-site changes were needed: the builder methods bashkit uses (delegate_size_limit, delegate_dfa_size_limit, backtrack_limit) are unchanged.
One constant feeds two engines with different contracts, which fancy-regex 0.20.0 made divergent. For the `regex` crate it stays `dfa_size_limit`, a cap on compiled DFA size. For fancy-regex it is `delegate_dfa_size_limit`, which 0.20.0 redefined as the lazy-DFA cache capacity; 0.20.0 also turns on `delegate_dfa_skip_cache_capacity_check` by default, so an undersized value now degrades rather than failing compilation. Documentation only; the value and every call site are unchanged.
Deploying with
|
| Status | Name | Latest Commit | Preview URL | Updated (UTC) |
|---|---|---|---|---|
| ✅ Deployment successful! View logs |
bashkit | 6cb3792 | Commit Preview URL Branch Preview URL |
Nov 02 2026, 10:16 AM |
`cargo vet --locked` failed the Audit job on this branch:
1 unvetted dependencies:
fancy-regex:0.20.0 missing ["safe-to-deploy"]
The exemption still named 0.19.2, which the bump removed from the graph.
Retarget it to 0.20.0, matching the surrounding entries. The separate 0.17.0
exemption stays: that is an unrelated transitive copy still in the root
lockfile.
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.
What changed
Moves the workspace
fancy-regexrequirement to0.20and refreshes everylockfile that resolves it: root
Cargo.lock,crates/bashkit/fuzz/Cargo.lockand
examples/hyperlight/Cargo.lock. No call sites change; the builder methodsbashkit uses (
delegate_size_limit,delegate_dfa_size_limit,backtrack_limit) are unchanged in 0.20.0.Also corrects the
REGEX_DFA_SIZE_LIMITdoc comment, which was silently wrongafter this bump: one constant feeds two engines whose contracts have now
diverged (details below).
The unrelated transitive
fancy-regex0.17.0 in the root lockfile is untouched.Why
Supersedes #2806. Dependabot's
fuzz-dependenciesgroup is scoped tocrates/bashkit/fuzz, but the dependency it found lives in the workspaceroot
Cargo.toml. So #2806 edited the root manifest while refreshing onlyfuzz/Cargo.lock, leaving the root andexamples/hyperlightlockfiles pinnedto 0.19.2. Every
--lockedjob then failed:That is a manifest/lockfile split dependabot cannot fix from the fuzz group, so
the bump has to land as one atomic change instead.
Worth noting for whoever reads this later: today's aggregated root
cargogrouprun failed outright (
turso_core,unknown_error), which is why fancy-regexreached us only through the fuzz group in the first place.
Before / After
Before —
cargo test --lockedon #2806's head fails before compiling anything(6 red checks: all three CPython legs, both WASM jobs, Audit).
After — the full CI-equivalent slice is green:
No observable behavior change in the shipped builtins. 0.20.0 does carry three
upstream changes that land on code paths bashkit cares about, since grep, sed,
rg and jq all compile on this engine under TM-DOS-025 backtracking bounds:
delegate_dfa_size_limitnow sets the lazy-DFA cache capacity rather thana compiled-DFA size cap, and
delegate_dfa_skip_cache_capacity_checkis on bydefault — so our 1 MB value degrades instead of hard-erroring when undersized.
\xHHabove0x7Fnow matches the codepoint (\xFF→ÿ).\b,\B,\<and\>are no longer hard outside lookbehinds.The TM-DOS-025 bounds are intact — all five backtracking-limit tests pass:
Not run locally:
ssh_supabase_connects, which dials the live publicsupabase.shendpoint and is unreachable from this sandbox. It is unrelated toregex and remains a required CI gate.
Risk
behavior and the backtracking caps passes unchanged.
user-visible potential —
\xHHin Unicode mode and word-boundary compilation— are covered by the grep/sed suites and the Bash/Debian oracle scoreboards,
all green here and in CI.
delegate_dfa_size_limitbecoming a cache capacity means the 1 MB value is nolonger a hard ceiling on delegate DFA memory; it bounds cache size instead.
REGEX_SIZE_LIMITandFANCY_BACKTRACK_LIMITstill bound compilation andbacktracking, so TM-DOS-025 does not depend on this knob.
Checklist
existing TM-DOS-025 and grep/sed/rg/jq suites are the regression gate
API change
Follow-ups
cargodependabot group needs a look: it has been failing onturso_core, so aggregated Rust bumps are not landing at all right now.Generated by Claude Code
Need help on this PR? Tag
@codesmith-botwith what you need.