regex v0.1.66 Release Notes

    • 👍 Speculative support for Unicode word boundaries was added to the DFA. This should remove the last common case that disqualified use of the DFA.
    • An optimization that scanned for suffix literals and then matched the regular expression in reverse was removed because it had worst case quadratic time complexity. It was replaced with a more limited optimization where, given any regex of the form re$, it will be matched in reverse from the end of the haystack.
    • PR #202: The inner loop of the DFA was heavily optimized to improve cache locality and reduce the overall number of instructions run on each iteration. This represents the first use of unsafe in regex (to elide bounds checks).
    • PR #200: Use of the mempool crate (which used thread local storage) was replaced with a faster version of a similar API in @Amanieu's thread_local crate. It should reduce contention when using a regex from multiple threads simultaneously.
    • PCRE2 JIT benchmarks were added. A benchmark comparison can be found here. (Includes a comparison with PCRE1's JIT and Oniguruma.)
    • A bug where word boundaries weren't being matched correctly in the DFA was fixed. This only affected use of bytes::Regex.
    • #160: Captures now has a Debug impl.