Skip to content

Bump fancy-regex from 0.13.0 to 0.19.1 in /engine - #7

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

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

Conversation

@dependabot

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

Copy link
Copy Markdown
Contributor

Bumps fancy-regex from 0.13.0 to 0.19.1.

Release notes

Sourced from fancy-regex's releases.

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)
  • Add support for ignoring empty matches (#240)
  • Add support for treating unnamed capture groups as non-capturing when named groups exist (#241)

Changed

  • RegexBuilder can now build multiple patterns with the same options (#213)
  • Parsing of capture group names is now more lenient (#241)

Fixed

... (truncated)

Changelog

Sourced from fancy-regex's changelog.

[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)
  • 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)
  • Add support for ignoring empty matches (#240)
  • Add support for treating unnamed capture groups as non-capturing when named groups exist (#241)

Changed

  • RegexBuilder can now build multiple patterns with the same options (#213)
  • Parsing of capture group names is now more lenient (#241)

Fixed

... (truncated)

Commits
  • 255e05c Version 0.19.1
  • 4be1e71 Merge pull request #277 from fancy-regex/memoize
  • 405d09d Memoize delegated engine builds within a compile
  • de46792 Merge pull request #276 from fancy-regex/fix_nested_repeat_optimization
  • 112457c fix for --no-default-features
  • c22b2bd optimize: downgrade trailing * to ? when no backreferences are used
  • 9051bf7 fix optimize_nested_repeats with optional capture groups
  • 415eaab Merge pull request #272 from fancy-regex/perf-dfa
  • 88a200c Remove misleading TODO style comment
  • e614928 Add perf-dfa-full opt-in feature for eager dense DFA builds
  • 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.1.
- [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.1)

---
updated-dependencies:
- dependency-name: fancy-regex
  dependency-version: 0.19.1
  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 14, 2026
@dependabot @github

dependabot Bot commented on behalf of github Sep 28, 2026

Copy link
Copy Markdown
Contributor Author

Superseded by #9.

@dependabot dependabot Bot closed this Sep 28, 2026
@dependabot
dependabot Bot deleted the dependabot/cargo/engine/main/fancy-regex-0.19.1 branch September 28, 2026 08:57
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