diff --git a/doc/changes/10115.md b/doc/changes/10115.md new file mode 100644 index 000000000000..20d2802df9b1 --- /dev/null +++ b/doc/changes/10115.md @@ -0,0 +1,2 @@ +- coq: fix performance regression in coqdep unescaping (#10115, fixes + #10088, @ejgallego, thanks to Dan Christensen for the report) diff --git a/src/dune_rules/coq/coq_rules.ml b/src/dune_rules/coq/coq_rules.ml index 57335706e259..1dd5c67bf386 100644 --- a/src/dune_rules/coq/coq_rules.ml +++ b/src/dune_rules/coq/coq_rules.ml @@ -519,7 +519,8 @@ let coqdep_invalid phase line = Note that coqdep escapes a few more things, including spaces, $, #, [], ?, %, homedir... How to handle that seems tricky. *) -let unescape_coqdep string = Re.replace_string (Re.compile (Re.str "\\:")) ~by:":" string +let escaped_colon = Re.compile (Re.str "\\:") +let unescape_coqdep string = Re.replace_string escaped_colon ~by:":" string let parse_line ~dir line = match String.lsplit2 line ~on:':' with