# HG changeset patch # User Raphaël Gomès # Date 1588839319 -7200 # Node ID b15a37d85dbe16a4823a8eb02e02a34af1cddb89 # Parent ee0790b67c45efa18ff66a40164956b32ef853c2 rust-regex: increase the DFA size limit for the `regex` crate `re2`'s DFA limit is already increased in `rust/hg-core/src/re2/rust_re2.cpp`, the same has to be done for the `regex` crate. Big repositories with big `.hgignore`s will sometimes hit this limit and face extreme performance regressions (I've seen one take *minutes* for `hg status`). Differential Revision: https://phab.mercurial-scm.org/D8499 diff -r ee0790b67c45 -r b15a37d85dbe rust/hg-core/src/matchers.rs --- a/rust/hg-core/src/matchers.rs Fri May 01 21:47:39 2020 +0530 +++ b/rust/hg-core/src/matchers.rs Thu May 07 10:15:19 2020 +0200 @@ -358,6 +358,10 @@ let pattern_string = unsafe { String::from_utf8_unchecked(escaped_bytes) }; let re = regex::bytes::RegexBuilder::new(&pattern_string) .unicode(false) + // Big repos with big `.hgignore` will hit the default limit and + // incur a significant performance hit. One repo's `hg status` hit + // multiple *minutes*. + .dfa_size_limit(50 * (1 << 20)) .build() .map_err(|e| PatternError::UnsupportedSyntax(e.to_string()))?;