Skip to content

Bump fancy-regex from 0.13.0 to 0.19.2 in /engine - #9

Open
dependabot[bot] wants to merge 1 commit into
mainfrom
dependabot/cargo/engine/main/fancy-regex-0.19.2
Open

dependabot[bot] wants to merge 1 commit into
mainfrom
dependabot/cargo/engine/main/fancy-regex-0.19.2

Conversation

@dependabot

@dependabot dependabot Bot commented on behalf of github Sep 28, 2026

Copy link
Copy Markdown
Contributor

Bumps fancy-regex from 0.13.0 to 0.19.2.

Release notes

Sourced from fancy-regex's releases.

0.19.2

Added

  • Add a leftmost_longest feature (off by default) that adds a method to the RegexBuilder/RegexOptionsBuilder for building a VM which would operate in leftmost-longest match mode instead of the regular leftmost-first mode. Useful for POSIX compliance. (#281)

Changed

Fixed

0.19.1

Added

  • Add a perf-dfa-full feature (off by default, mirroring the regex crate) that lets regex-automata eagerly build fully compiled dense DFAs for small patterns, for workloads that compile few regexes and match them very heavily (#272)

Changed

  • Add VM instruction for case insensitive literals when in Unicode mode, to keep the build cost bounded (#268) and ensured the toy example graph output remains readable instead of being super verbose (#269)
  • Compilation performance: the regex-automata dependency no longer enables the dfa-build feature by default. With dfa-build enabled, meta::Regex eagerly determinizes a full dense DFA for every small pattern, which dominated build time of simple class-containing patterns (e.g. \b(extern)\s+(crate) compiled ~4x slower than with the regex crate, which also ships without dfa-build); searches use the lazy DFA instead, with no measurable match-time difference (#272)
  • Compilation performance: identical delegated fragments within one compile now share a single regex-automata engine instead of each building their own. Alternation-heavy patterns (TextMate grammar lookbehinds especially) often repeat the same fragment many times; on such patterns this removes a large share of build time (#277)

Fixed

  • The playground didn't show when a literal or backreference was being matched case insensitively in the analysis tree view (#269)
  • Seek patterns could become very large when recursive backrefs and subroutine calls were inlined, without bringing much benefit (#270)
  • The optimize_nested_repeats pass could rewrite an optional capture group like (\w+)? into (\w*), causing an unmatched optional group to be reported as an empty match (Some("")) instead of None (#276)

0.19.0

Added

  • Add BytesMode and the RegexInput trait so the matching and capture APIs can operate on strings or bytes, and allows to opt out of unicode handling if desired (#248)
    • Also allows searching within a range without slicing (#253)
    • Assertions can be overridden at runtime, if the regex builder allow_input_assertion_overrides option was used (#254)
    • Search can be performed in anchored mode, searching only at the start position specified (#263)
  • Add experimental seek optimization to only invoke the VM at candidate positions where a match could occur (#246)
  • Add RegexBuilder::disallow_empty_match_at_eof_after_newline to reject empty matches at the end of the haystack following a trailing newline, to match Oniguruma behavior (#247)
  • Add RegexSet API for efficiently matching multiple patterns against the same text (#255)

Changed

  • Case-insensitive backreference comparison of non-ASCII text now uses direct Unicode simple case folding instead of building a regex engine per comparison, which makes patterns like (?i)(\w+)\1 orders of magnitude faster on non-ASCII haystacks. The comparison is now strict fold equality over the captured text's byte-length window: a case-folded prefix of the window no longer counts as a match (previously a substring search could accept one and misalign the match end)
  • Compilation performance: delegated regex-automata engines (including the whole pattern in the easy case) are now built from a directly-constructed Hir instead of a re-serialized pattern string, and RegexSet parses each pattern once for both of its set-wide engines instead of three times. This reduces compile time and peak compile memory, especially for RegexSet and small easy patterns
  • Match performance: the backtracking VM's working memory (saves, backtrack stack, delegate slots) is pooled and reused across runs, making is_match/find/find_iter and RegexSet candidate verification allocation-free per call; RegexSet::find_input no longer allocates at failed candidate positions. Short and repeated matches improve substantially (up to ~30% for small patterns, ~10% for find_iter over many matches); single very long backtracking runs, where per-run setup is fully amortized anyway, can be a few percent slower
  • Matches, CaptureMatches, Captures, and SubCaptureMatches are now generic over RegexInput, which is a breaking change for code that named these types explicitly (#248)
  • Patterns no longer force Unicode mode during parsing, and inline (?u) / (?-u) flags are accepted when they agree with the builder configuration

Fixed

  • Fix bug whereby inline flags were not overriding the builder options (#247)
  • Fix bug whereby \G optimizations were applying where they shouldn't, giving wrong results (#256)
  • Support Oniguruma quantifier parsing rules, whereby swapped ordering causes possessiveness, + only causes possessiveness after ?, * or + (#258)

Upgrade guide

If you previously stored i.e. Captures, you would need to change the type to Captures<str> to get the code to compile.

0.18.0

Added

  • Add support for \N to mean any character except newline, for Oniguruma compatibility (#206)
  • Add support for (*FAIL) backtracking control verb (#210)
  • Add support for more \p{...} and \P{...} aliases, for Oniguruma compatibility (#207)
  • Add support for word boundaries and zero-length fancy patterns inside variable lookbehinds (at top level) (#216)
  • Add support for \R to mean general newline, matching all common line break characters, treating \r\n atomically (#220)
  • Add support for the regex crate's (?R) CRLF mode flag (#238)
  • Add support for subroutine calls (including recursion up to 20 levels deep, matching Oniguruma behavior) \g<1> (#230)
  • Add support for Oniguruma's absent repeater (?~abc) (#233)

... (truncated)

Changelog

Sourced from fancy-regex's changelog.

[0.19.2] - 2026-09-13

Added

  • Add a leftmost_longest feature (off by default) that adds a method to the RegexBuilder/RegexOptionsBuilder for building a VM which would operate in leftmost-longest match mode instead of the regular leftmost-first mode. Useful for POSIX compliance. (#281)

Changed

Fixed

  • Fix a panic in capture_names() for a pattern with a zero-repeated named group such as (?<n>a){0} (#275)
  • Literal bytes were being encoded as utf-8 in Ascii mode, now they match the exact byte literal

[0.19.1] - 2026-09-06

Added

  • Add a perf-dfa-full feature (off by default, mirroring the regex crate) that lets regex-automata eagerly build fully compiled dense DFAs for small patterns, for workloads that compile few regexes and match them very heavily (#272)

Changed

  • Add VM instruction for case insensitive literals when in Unicode mode, to keep the build cost bounded (#268) and ensured the toy example graph output remains readable instead of being super verbose (#269)
  • Compilation performance: the regex-automata dependency no longer enables the dfa-build feature by default. With dfa-build enabled, meta::Regex eagerly determinizes a full dense DFA for every small pattern, which dominated build time of simple class-containing patterns (e.g. \b(extern)\s+(crate) compiled ~4x slower than with the regex crate, which also ships without dfa-build); searches use the lazy DFA instead, with no measurable match-time difference (#272)
  • Compilation performance: identical delegated fragments within one compile now share a single regex-automata engine instead of each building their own. Alternation-heavy patterns (TextMate grammar lookbehinds especially) often repeat the same fragment many times; on such patterns this removes a large share of build time (#277)

Fixed

  • The playground didn't show when a literal or backreference was being matched case insensitively in the analysis tree view (#269)
  • Seek patterns could become very large when recursive backrefs and subroutine calls were inlined, without bringing much benefit (#270)
  • The optimize_nested_repeats pass could rewrite an optional capture group like (\w+)? into (\w*), causing an unmatched optional group to be reported as an empty match (Some("")) instead of None (#276)

[0.19.0] - 2026-07-28

Added

  • Add BytesMode and the RegexInput trait so the matching and capture APIs can operate on strings or bytes, and allows to opt out of unicode handling if desired (#248)
    • Also allows searching within a range without slicing (#253)
    • Assertions can be overridden at runtime, if the regex builder allow_input_assertion_overrides option was used (#254)
    • Search can be performed in anchored mode, searching only at the start position specified (#263)
  • Add experimental seek optimization to only invoke the VM at candidate positions where a match could occur (#246)
  • Add RegexBuilder::disallow_empty_match_at_eof_after_newline to reject empty matches at the end of the haystack following a trailing newline, to match Oniguruma behavior (#247)
  • Add RegexSet API for efficiently matching multiple patterns against the same text (#255)

Changed

  • Case-insensitive backreference comparison of non-ASCII text now uses direct Unicode simple case folding instead of building a regex engine per comparison, which makes patterns like (?i)(\w+)\1 orders of magnitude faster on non-ASCII haystacks. The comparison is now strict fold equality over the captured text's byte-length window: a case-folded prefix of the window no longer counts as a match (previously a substring search could accept one and misalign the match end)
  • Compilation performance: delegated regex-automata engines (including the whole pattern in the easy case) are now built from a directly-constructed Hir instead of a re-serialized pattern string, and RegexSet parses each pattern once for both of its set-wide engines instead of three times. This reduces compile time and peak compile memory, especially for RegexSet and small easy patterns
  • Match performance: the backtracking VM's working memory (saves, backtrack stack, delegate slots) is pooled and reused across runs, making is_match/find/find_iter and RegexSet candidate verification allocation-free per call; RegexSet::find_input no longer allocates at failed candidate positions. Short and repeated matches improve substantially (up to ~30% for small patterns, ~10% for find_iter over many matches); single very long backtracking runs, where per-run setup is fully amortized anyway, can be a few percent slower
  • Matches, CaptureMatches, Captures, and SubCaptureMatches are now generic over RegexInput, which is a breaking change for code that named these types explicitly (#248)
  • Patterns no longer force Unicode mode during parsing, and inline (?u) / (?-u) flags are accepted when they agree with the builder configuration

Fixed

  • Fix bug whereby inline flags were not overriding the builder options (#247)
  • Fix bug whereby \G optimizations were applying where they shouldn't, giving wrong results (#256)
  • Support Oniguruma quantifier parsing rules, whereby swapped ordering causes possessiveness, + only causes possessiveness after ?, * or + (#258)

Upgrade guide

If you previously stored i.e. Captures, you would need to change the type to Captures<str> to get the code to compile.

[0.18.0] - 2026-04-24

Added

  • Add support for \N to mean any character except newline, for Oniguruma compatibility (#206)
  • Add support for (*FAIL) backtracking control verb (#210)
  • Add support for more \p{...} and \P{...} aliases, for Oniguruma compatibility (#207)
  • Add support for word boundaries and zero-length fancy patterns inside variable lookbehinds (at top level) (#216)
  • Add support for \R to mean general newline, matching all common line break characters, treating \r\n atomically (#220)
  • Add support for the regex crate's (?R) CRLF mode flag (#238)

... (truncated)

Commits
  • e268485 Version 0.19.2
  • ee2e3a0 Merge pull request #281 from fancy-regex/leftmost_longest
  • c9fa74e add another leftmost longest test assertion
  • 797768f add leftmost_longest check to agents.md
  • c323111 small refactor to avoid duplicating code
  • c063e72 fix bug whereby leftmost longest match wasn't being returned when later, long...
  • 04d8796 Update changelog
  • 515397a add missing feature flag to documentation
  • ba0416f small addition to contributing guide
  • 4be8648 feat: gate leftmost_longest behind optional feature flag
  • Additional commits viewable in compare view

Dependabot compatibility score

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
  • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)

Bumps [fancy-regex](https://github.com/fancy-regex/fancy-regex) from 0.13.0 to 0.19.2.
- [Release notes](https://github.com/fancy-regex/fancy-regex/releases)
- [Changelog](https://github.com/fancy-regex/fancy-regex/blob/main/CHANGELOG.md)
- [Commits](fancy-regex/fancy-regex@0.13.0...0.19.2)

---
updated-dependencies:
- dependency-name: fancy-regex
  dependency-version: 0.19.2
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot dependabot Bot added dependencies Pull requests that update a dependency file rust Pull requests that update rust code labels Sep 28, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file rust Pull requests that update rust code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants