1c67d6573Sopenharmony_ci1.7.1 (2023-01-09) 2c67d6573Sopenharmony_ci================== 3c67d6573Sopenharmony_ciThis release was done principally to try and fix the doc.rs rendering for the 4c67d6573Sopenharmony_ciregex crate. 5c67d6573Sopenharmony_ci 6c67d6573Sopenharmony_ciPerformance improvements: 7c67d6573Sopenharmony_ci 8c67d6573Sopenharmony_ci* [PERF #930](https://github.com/rust-lang/regex/pull/930): 9c67d6573Sopenharmony_ci Optimize `replacen`. This also applies to `replace`, but not `replace_all`. 10c67d6573Sopenharmony_ci 11c67d6573Sopenharmony_ciBug fixes: 12c67d6573Sopenharmony_ci 13c67d6573Sopenharmony_ci* [BUG #945](https://github.com/rust-lang/regex/issues/945): 14c67d6573Sopenharmony_ci Maybe fix rustdoc rendering by just bumping a new release? 15c67d6573Sopenharmony_ci 16c67d6573Sopenharmony_ci 17c67d6573Sopenharmony_ci1.7.0 (2022-11-05) 18c67d6573Sopenharmony_ci================== 19c67d6573Sopenharmony_ciThis release principally includes an upgrade to Unicode 15. 20c67d6573Sopenharmony_ci 21c67d6573Sopenharmony_ciNew features: 22c67d6573Sopenharmony_ci 23c67d6573Sopenharmony_ci* [FEATURE #832](https://github.com/rust-lang/regex/issues/916): 24c67d6573Sopenharmony_ci Upgrade to Unicode 15. 25c67d6573Sopenharmony_ci 26c67d6573Sopenharmony_ci 27c67d6573Sopenharmony_ci1.6.0 (2022-07-05) 28c67d6573Sopenharmony_ci================== 29c67d6573Sopenharmony_ciThis release principally includes an upgrade to Unicode 14. 30c67d6573Sopenharmony_ci 31c67d6573Sopenharmony_ciNew features: 32c67d6573Sopenharmony_ci 33c67d6573Sopenharmony_ci* [FEATURE #832](https://github.com/rust-lang/regex/pull/832): 34c67d6573Sopenharmony_ci Clarify that `Captures::len` includes all groups, not just matching groups. 35c67d6573Sopenharmony_ci* [FEATURE #857](https://github.com/rust-lang/regex/pull/857): 36c67d6573Sopenharmony_ci Add an `ExactSizeIterator` impl for `SubCaptureMatches`. 37c67d6573Sopenharmony_ci* [FEATURE #861](https://github.com/rust-lang/regex/pull/861): 38c67d6573Sopenharmony_ci Improve `RegexSet` documentation examples. 39c67d6573Sopenharmony_ci* [FEATURE #877](https://github.com/rust-lang/regex/issues/877): 40c67d6573Sopenharmony_ci Upgrade to Unicode 14. 41c67d6573Sopenharmony_ci 42c67d6573Sopenharmony_ciBug fixes: 43c67d6573Sopenharmony_ci 44c67d6573Sopenharmony_ci* [BUG #792](https://github.com/rust-lang/regex/issues/792): 45c67d6573Sopenharmony_ci Fix error message rendering bug. 46c67d6573Sopenharmony_ci 47c67d6573Sopenharmony_ci 48c67d6573Sopenharmony_ci1.5.6 (2022-05-20) 49c67d6573Sopenharmony_ci================== 50c67d6573Sopenharmony_ciThis release includes a few bug fixes, including a bug that produced incorrect 51c67d6573Sopenharmony_cimatches when a non-greedy `?` operator was used. 52c67d6573Sopenharmony_ci 53c67d6573Sopenharmony_ci* [BUG #680](https://github.com/rust-lang/regex/issues/680): 54c67d6573Sopenharmony_ci Fixes a bug where `[[:alnum:][:^ascii:]]` dropped `[:alnum:]` from the class. 55c67d6573Sopenharmony_ci* [BUG #859](https://github.com/rust-lang/regex/issues/859): 56c67d6573Sopenharmony_ci Fixes a bug where `Hir::is_match_empty` returned `false` for `\b`. 57c67d6573Sopenharmony_ci* [BUG #862](https://github.com/rust-lang/regex/issues/862): 58c67d6573Sopenharmony_ci Fixes a bug where 'ab??' matches 'ab' instead of 'a' in 'ab'. 59c67d6573Sopenharmony_ci 60c67d6573Sopenharmony_ci 61c67d6573Sopenharmony_ci1.5.5 (2022-03-08) 62c67d6573Sopenharmony_ci================== 63c67d6573Sopenharmony_ciThis releases fixes a security bug in the regex compiler. This bug permits a 64c67d6573Sopenharmony_civector for a denial-of-service attack in cases where the regex being compiled 65c67d6573Sopenharmony_ciis untrusted. There are no known problems where the regex is itself trusted, 66c67d6573Sopenharmony_ciincluding in cases of untrusted haystacks. 67c67d6573Sopenharmony_ci 68c67d6573Sopenharmony_ci* [SECURITY #GHSA-m5pq-gvj9-9vr8](https://github.com/rust-lang/regex/security/advisories/GHSA-m5pq-gvj9-9vr8): 69c67d6573Sopenharmony_ci Fixes a bug in the regex compiler where empty sub-expressions subverted the 70c67d6573Sopenharmony_ci existing mitigations in place to enforce a size limit on compiled regexes. 71c67d6573Sopenharmony_ci The Rust Security Response WG published an advisory about this: 72c67d6573Sopenharmony_ci https://groups.google.com/g/rustlang-security-announcements/c/NcNNL1Jq7Yw 73c67d6573Sopenharmony_ci 74c67d6573Sopenharmony_ci 75c67d6573Sopenharmony_ci1.5.4 (2021-05-06) 76c67d6573Sopenharmony_ci================== 77c67d6573Sopenharmony_ciThis release fixes another compilation failure when building regex. This time, 78c67d6573Sopenharmony_cithe fix is for when the `pattern` feature is enabled, which only works on 79c67d6573Sopenharmony_cinightly Rust. CI has been updated to test this case. 80c67d6573Sopenharmony_ci 81c67d6573Sopenharmony_ci* [BUG #772](https://github.com/rust-lang/regex/pull/772): 82c67d6573Sopenharmony_ci Fix build when `pattern` feature is enabled. 83c67d6573Sopenharmony_ci 84c67d6573Sopenharmony_ci 85c67d6573Sopenharmony_ci1.5.3 (2021-05-01) 86c67d6573Sopenharmony_ci================== 87c67d6573Sopenharmony_ciThis releases fixes a bug when building regex with only the `unicode-perl` 88c67d6573Sopenharmony_cifeature. It turns out that while CI was building this configuration, it wasn't 89c67d6573Sopenharmony_ciactually failing the overall build on a failed compilation. 90c67d6573Sopenharmony_ci 91c67d6573Sopenharmony_ci* [BUG #769](https://github.com/rust-lang/regex/issues/769): 92c67d6573Sopenharmony_ci Fix build in `regex-syntax` when only the `unicode-perl` feature is enabled. 93c67d6573Sopenharmony_ci 94c67d6573Sopenharmony_ci 95c67d6573Sopenharmony_ci1.5.2 (2021-05-01) 96c67d6573Sopenharmony_ci================== 97c67d6573Sopenharmony_ciThis release fixes a performance bug when Unicode word boundaries are used. 98c67d6573Sopenharmony_ciNamely, for certain regexes on certain inputs, it's possible for the lazy DFA 99c67d6573Sopenharmony_cito stop searching (causing a fallback to a slower engine) when it doesn't 100c67d6573Sopenharmony_ciactually need to. 101c67d6573Sopenharmony_ci 102c67d6573Sopenharmony_ci[PR #768](https://github.com/rust-lang/regex/pull/768) fixes the bug, which was 103c67d6573Sopenharmony_cioriginally reported in 104c67d6573Sopenharmony_ci[ripgrep#1860](https://github.com/BurntSushi/ripgrep/issues/1860). 105c67d6573Sopenharmony_ci 106c67d6573Sopenharmony_ci 107c67d6573Sopenharmony_ci1.5.1 (2021-04-30) 108c67d6573Sopenharmony_ci================== 109c67d6573Sopenharmony_ciThis is a patch release that fixes a compilation error when the `perf-literal` 110c67d6573Sopenharmony_cifeature is not enabled. 111c67d6573Sopenharmony_ci 112c67d6573Sopenharmony_ci 113c67d6573Sopenharmony_ci1.5.0 (2021-04-30) 114c67d6573Sopenharmony_ci================== 115c67d6573Sopenharmony_ciThis release primarily updates to Rust 2018 (finally) and bumps the MSRV to 116c67d6573Sopenharmony_ciRust 1.41 (from Rust 1.28). Rust 1.41 was chosen because it's still reasonably 117c67d6573Sopenharmony_ciold, and is what's in Debian stable at the time of writing. 118c67d6573Sopenharmony_ci 119c67d6573Sopenharmony_ciThis release also drops this crate's own bespoke substring search algorithms 120c67d6573Sopenharmony_ciin favor of a new 121c67d6573Sopenharmony_ci[`memmem` implementation provided by the `memchr` crate](https://docs.rs/memchr/2.4.0/memchr/memmem/index.html). 122c67d6573Sopenharmony_ciThis will change the performance profile of some regexes, sometimes getting a 123c67d6573Sopenharmony_cilittle worse, and hopefully more frequently, getting a lot better. Please 124c67d6573Sopenharmony_cireport any serious performance regressions if you find them. 125c67d6573Sopenharmony_ci 126c67d6573Sopenharmony_ci 127c67d6573Sopenharmony_ci1.4.6 (2021-04-22) 128c67d6573Sopenharmony_ci================== 129c67d6573Sopenharmony_ciThis is a small patch release that fixes the compiler's size check on how much 130c67d6573Sopenharmony_ciheap memory a regex uses. Previously, the compiler did not account for the 131c67d6573Sopenharmony_ciheap usage of Unicode character classes. Now it does. It's possible that this 132c67d6573Sopenharmony_cimay make some regexes fail to compile that previously did compile. If that 133c67d6573Sopenharmony_cihappens, please file an issue. 134c67d6573Sopenharmony_ci 135c67d6573Sopenharmony_ci* [BUG OSS-fuzz#33579](https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=33579): 136c67d6573Sopenharmony_ci Some regexes can use more heap memory than one would expect. 137c67d6573Sopenharmony_ci 138c67d6573Sopenharmony_ci 139c67d6573Sopenharmony_ci1.4.5 (2021-03-14) 140c67d6573Sopenharmony_ci================== 141c67d6573Sopenharmony_ciThis is a small patch release that fixes a regression in the size of a `Regex` 142c67d6573Sopenharmony_ciin the 1.4.4 release. Prior to 1.4.4, a `Regex` was 552 bytes. In the 1.4.4 143c67d6573Sopenharmony_cirelease, it was 856 bytes due to internal changes. In this release, a `Regex` 144c67d6573Sopenharmony_ciis now 16 bytes. In general, the size of a `Regex` was never something that was 145c67d6573Sopenharmony_cion my radar, but this increased size in the 1.4.4 release seems to have crossed 146c67d6573Sopenharmony_cia threshold and resulted in stack overflows in some programs. 147c67d6573Sopenharmony_ci 148c67d6573Sopenharmony_ci* [BUG #750](https://github.com/rust-lang/regex/pull/750): 149c67d6573Sopenharmony_ci Fixes stack overflows seemingly caused by a large `Regex` size by decreasing 150c67d6573Sopenharmony_ci its size. 151c67d6573Sopenharmony_ci 152c67d6573Sopenharmony_ci 153c67d6573Sopenharmony_ci1.4.4 (2021-03-11) 154c67d6573Sopenharmony_ci================== 155c67d6573Sopenharmony_ciThis is a small patch release that contains some bug fixes. Notably, it also 156c67d6573Sopenharmony_cidrops the `thread_local` (and `lazy_static`, via transitivity) dependencies. 157c67d6573Sopenharmony_ci 158c67d6573Sopenharmony_ciBug fixes: 159c67d6573Sopenharmony_ci 160c67d6573Sopenharmony_ci* [BUG #362](https://github.com/rust-lang/regex/pull/362): 161c67d6573Sopenharmony_ci Memory leaks caused by an internal caching strategy should now be fixed. 162c67d6573Sopenharmony_ci* [BUG #576](https://github.com/rust-lang/regex/pull/576): 163c67d6573Sopenharmony_ci All regex types now implement `UnwindSafe` and `RefUnwindSafe`. 164c67d6573Sopenharmony_ci* [BUG #728](https://github.com/rust-lang/regex/pull/749): 165c67d6573Sopenharmony_ci Add missing `Replacer` impls for `Vec<u8>`, `String`, `Cow`, etc. 166c67d6573Sopenharmony_ci 167c67d6573Sopenharmony_ci 168c67d6573Sopenharmony_ci1.4.3 (2021-01-08) 169c67d6573Sopenharmony_ci================== 170c67d6573Sopenharmony_ciThis is a small patch release that adds some missing standard trait 171c67d6573Sopenharmony_ciimplementations for some types in the public API. 172c67d6573Sopenharmony_ci 173c67d6573Sopenharmony_ciBug fixes: 174c67d6573Sopenharmony_ci 175c67d6573Sopenharmony_ci* [BUG #734](https://github.com/rust-lang/regex/pull/734): 176c67d6573Sopenharmony_ci Add `FusedIterator` and `ExactSizeIterator` impls to iterator types. 177c67d6573Sopenharmony_ci* [BUG #735](https://github.com/rust-lang/regex/pull/735): 178c67d6573Sopenharmony_ci Add missing `Debug` impls to public API types. 179c67d6573Sopenharmony_ci 180c67d6573Sopenharmony_ci 181c67d6573Sopenharmony_ci1.4.2 (2020-11-01) 182c67d6573Sopenharmony_ci================== 183c67d6573Sopenharmony_ciThis is a small bug fix release that bans `\P{any}`. We previously banned empty 184c67d6573Sopenharmony_ciclasses like `[^\w\W]`, but missed the `\P{any}` case. In the future, we hope 185c67d6573Sopenharmony_cito permit empty classes. 186c67d6573Sopenharmony_ci 187c67d6573Sopenharmony_ci* [BUG #722](https://github.com/rust-lang/regex/issues/722): 188c67d6573Sopenharmony_ci Ban `\P{any}` to avoid a panic in the regex compiler. Found by OSS-Fuzz. 189c67d6573Sopenharmony_ci 190c67d6573Sopenharmony_ci 191c67d6573Sopenharmony_ci1.4.1 (2020-10-13) 192c67d6573Sopenharmony_ci================== 193c67d6573Sopenharmony_ciThis is a small bug fix release that makes `\p{cf}` work. Previously, it would 194c67d6573Sopenharmony_cireport "property not found" even though `cf` is a valid abbreviation for the 195c67d6573Sopenharmony_ci`Format` general category. 196c67d6573Sopenharmony_ci 197c67d6573Sopenharmony_ci* [BUG #719](https://github.com/rust-lang/regex/issues/719): 198c67d6573Sopenharmony_ci Fixes bug that prevented `\p{cf}` from working. 199c67d6573Sopenharmony_ci 200c67d6573Sopenharmony_ci 201c67d6573Sopenharmony_ci1.4.0 (2020-10-11) 202c67d6573Sopenharmony_ci================== 203c67d6573Sopenharmony_ciThis releases has a few minor documentation fixes as well as some very minor 204c67d6573Sopenharmony_ciAPI additions. The MSRV remains at Rust 1.28 for now, but this is intended to 205c67d6573Sopenharmony_ciincrease to at least Rust 1.41.1 soon. 206c67d6573Sopenharmony_ci 207c67d6573Sopenharmony_ciThis release also adds support for OSS-Fuzz. Kudos to 208c67d6573Sopenharmony_ci[@DavidKorczynski](https://github.com/DavidKorczynski) 209c67d6573Sopenharmony_cifor doing the heavy lifting for that! 210c67d6573Sopenharmony_ci 211c67d6573Sopenharmony_ciNew features: 212c67d6573Sopenharmony_ci 213c67d6573Sopenharmony_ci* [FEATURE #649](https://github.com/rust-lang/regex/issues/649): 214c67d6573Sopenharmony_ci Support `[`, `]` and `.` in capture group names. 215c67d6573Sopenharmony_ci* [FEATURE #687](https://github.com/rust-lang/regex/issues/687): 216c67d6573Sopenharmony_ci Add `is_empty` predicate to `RegexSet`. 217c67d6573Sopenharmony_ci* [FEATURE #689](https://github.com/rust-lang/regex/issues/689): 218c67d6573Sopenharmony_ci Implement `Clone` for `SubCaptureMatches`. 219c67d6573Sopenharmony_ci* [FEATURE #715](https://github.com/rust-lang/regex/issues/715): 220c67d6573Sopenharmony_ci Add `empty` constructor to `RegexSet` for convenience. 221c67d6573Sopenharmony_ci 222c67d6573Sopenharmony_ciBug fixes: 223c67d6573Sopenharmony_ci 224c67d6573Sopenharmony_ci* [BUG #694](https://github.com/rust-lang/regex/issues/694): 225c67d6573Sopenharmony_ci Fix doc example for `Replacer::replace_append`. 226c67d6573Sopenharmony_ci* [BUG #698](https://github.com/rust-lang/regex/issues/698): 227c67d6573Sopenharmony_ci Clarify docs for `s` flag when using a `bytes::Regex`. 228c67d6573Sopenharmony_ci* [BUG #711](https://github.com/rust-lang/regex/issues/711): 229c67d6573Sopenharmony_ci Clarify `is_match` docs to indicate that it can match anywhere in string. 230c67d6573Sopenharmony_ci 231c67d6573Sopenharmony_ci 232c67d6573Sopenharmony_ci1.3.9 (2020-05-28) 233c67d6573Sopenharmony_ci================== 234c67d6573Sopenharmony_ciThis release fixes a MSRV (Minimum Support Rust Version) regression in the 235c67d6573Sopenharmony_ci1.3.8 release. Namely, while 1.3.8 compiles on Rust 1.28, it actually does not 236c67d6573Sopenharmony_cicompile on other Rust versions, such as Rust 1.39. 237c67d6573Sopenharmony_ci 238c67d6573Sopenharmony_ciBug fixes: 239c67d6573Sopenharmony_ci 240c67d6573Sopenharmony_ci* [BUG #685](https://github.com/rust-lang/regex/issues/685): 241c67d6573Sopenharmony_ci Remove use of `doc_comment` crate, which cannot be used before Rust 1.43. 242c67d6573Sopenharmony_ci 243c67d6573Sopenharmony_ci 244c67d6573Sopenharmony_ci1.3.8 (2020-05-28) 245c67d6573Sopenharmony_ci================== 246c67d6573Sopenharmony_ciThis release contains a couple of important bug fixes driven 247c67d6573Sopenharmony_ciby better support for empty-subexpressions in regexes. For 248c67d6573Sopenharmony_ciexample, regexes like `b|` are now allowed. Major thanks to 249c67d6573Sopenharmony_ci[@sliquister](https://github.com/sliquister) for implementing support for this 250c67d6573Sopenharmony_ciin [#677](https://github.com/rust-lang/regex/pull/677). 251c67d6573Sopenharmony_ci 252c67d6573Sopenharmony_ciBug fixes: 253c67d6573Sopenharmony_ci 254c67d6573Sopenharmony_ci* [BUG #523](https://github.com/rust-lang/regex/pull/523): 255c67d6573Sopenharmony_ci Add note to documentation that spaces can be escaped in `x` mode. 256c67d6573Sopenharmony_ci* [BUG #524](https://github.com/rust-lang/regex/issues/524): 257c67d6573Sopenharmony_ci Add support for empty sub-expressions, including empty alternations. 258c67d6573Sopenharmony_ci* [BUG #659](https://github.com/rust-lang/regex/issues/659): 259c67d6573Sopenharmony_ci Fix match bug caused by an empty sub-expression miscompilation. 260c67d6573Sopenharmony_ci 261c67d6573Sopenharmony_ci 262c67d6573Sopenharmony_ci1.3.7 (2020-04-17) 263c67d6573Sopenharmony_ci================== 264c67d6573Sopenharmony_ciThis release contains a small bug fix that fixes how `regex` forwards crate 265c67d6573Sopenharmony_cifeatures to `regex-syntax`. In particular, this will reduce recompilations in 266c67d6573Sopenharmony_cisome cases. 267c67d6573Sopenharmony_ci 268c67d6573Sopenharmony_ciBug fixes: 269c67d6573Sopenharmony_ci 270c67d6573Sopenharmony_ci* [BUG #665](https://github.com/rust-lang/regex/pull/665): 271c67d6573Sopenharmony_ci Fix feature forwarding to `regex-syntax`. 272c67d6573Sopenharmony_ci 273c67d6573Sopenharmony_ci 274c67d6573Sopenharmony_ci1.3.6 (2020-03-24) 275c67d6573Sopenharmony_ci================== 276c67d6573Sopenharmony_ciThis release contains a sizable (~30%) performance improvement when compiling 277c67d6573Sopenharmony_cisome kinds of large regular expressions. 278c67d6573Sopenharmony_ci 279c67d6573Sopenharmony_ciPerformance improvements: 280c67d6573Sopenharmony_ci 281c67d6573Sopenharmony_ci* [PERF #657](https://github.com/rust-lang/regex/pull/657): 282c67d6573Sopenharmony_ci Improvement performance of compiling large regular expressions. 283c67d6573Sopenharmony_ci 284c67d6573Sopenharmony_ci 285c67d6573Sopenharmony_ci1.3.5 (2020-03-12) 286c67d6573Sopenharmony_ci================== 287c67d6573Sopenharmony_ciThis release updates this crate to Unicode 13. 288c67d6573Sopenharmony_ci 289c67d6573Sopenharmony_ciNew features: 290c67d6573Sopenharmony_ci 291c67d6573Sopenharmony_ci* [FEATURE #653](https://github.com/rust-lang/regex/pull/653): 292c67d6573Sopenharmony_ci Update `regex-syntax` to Unicode 13. 293c67d6573Sopenharmony_ci 294c67d6573Sopenharmony_ci 295c67d6573Sopenharmony_ci1.3.4 (2020-01-30) 296c67d6573Sopenharmony_ci================== 297c67d6573Sopenharmony_ciThis is a small bug fix release that fixes a bug related to the scoping of 298c67d6573Sopenharmony_ciflags in a regex. Namely, before this fix, a regex like `((?i)a)b)` would 299c67d6573Sopenharmony_cimatch `aB` despite the fact that `b` should not be matched case insensitively. 300c67d6573Sopenharmony_ci 301c67d6573Sopenharmony_ciBug fixes: 302c67d6573Sopenharmony_ci 303c67d6573Sopenharmony_ci* [BUG #640](https://github.com/rust-lang/regex/issues/640): 304c67d6573Sopenharmony_ci Fix bug related to the scoping of flags in a regex. 305c67d6573Sopenharmony_ci 306c67d6573Sopenharmony_ci 307c67d6573Sopenharmony_ci1.3.3 (2020-01-09) 308c67d6573Sopenharmony_ci================== 309c67d6573Sopenharmony_ciThis is a small maintenance release that upgrades the dependency on 310c67d6573Sopenharmony_ci`thread_local` from `0.3` to `1.0`. The minimum supported Rust version remains 311c67d6573Sopenharmony_ciat Rust 1.28. 312c67d6573Sopenharmony_ci 313c67d6573Sopenharmony_ci 314c67d6573Sopenharmony_ci1.3.2 (2020-01-09) 315c67d6573Sopenharmony_ci================== 316c67d6573Sopenharmony_ciThis is a small maintenance release with some house cleaning and bug fixes. 317c67d6573Sopenharmony_ci 318c67d6573Sopenharmony_ciNew features: 319c67d6573Sopenharmony_ci 320c67d6573Sopenharmony_ci* [FEATURE #631](https://github.com/rust-lang/regex/issues/631): 321c67d6573Sopenharmony_ci Add a `Match::range` method an a `From<Match> for Range` impl. 322c67d6573Sopenharmony_ci 323c67d6573Sopenharmony_ciBug fixes: 324c67d6573Sopenharmony_ci 325c67d6573Sopenharmony_ci* [BUG #521](https://github.com/rust-lang/regex/issues/521): 326c67d6573Sopenharmony_ci Corrects `/-/.splitn("a", 2)` to return `["a"]` instead of `["a", ""]`. 327c67d6573Sopenharmony_ci* [BUG #594](https://github.com/rust-lang/regex/pull/594): 328c67d6573Sopenharmony_ci Improve error reporting when writing `\p\`. 329c67d6573Sopenharmony_ci* [BUG #627](https://github.com/rust-lang/regex/issues/627): 330c67d6573Sopenharmony_ci Corrects `/-/.split("a-")` to return `["a", ""]` instead of `["a"]`. 331c67d6573Sopenharmony_ci* [BUG #633](https://github.com/rust-lang/regex/pull/633): 332c67d6573Sopenharmony_ci Squash deprecation warnings for the `std::error::Error::description` method. 333c67d6573Sopenharmony_ci 334c67d6573Sopenharmony_ci 335c67d6573Sopenharmony_ci1.3.1 (2019-09-04) 336c67d6573Sopenharmony_ci================== 337c67d6573Sopenharmony_ciThis is a maintenance release with no changes in order to try to work-around 338c67d6573Sopenharmony_cia [docs.rs/Cargo issue](https://github.com/rust-lang/docs.rs/issues/400). 339c67d6573Sopenharmony_ci 340c67d6573Sopenharmony_ci 341c67d6573Sopenharmony_ci1.3.0 (2019-09-03) 342c67d6573Sopenharmony_ci================== 343c67d6573Sopenharmony_ciThis release adds a plethora of new crate features that permit users of regex 344c67d6573Sopenharmony_cito shrink its size considerably, in exchange for giving up either functionality 345c67d6573Sopenharmony_ci(such as Unicode support) or runtime performance. When all such features are 346c67d6573Sopenharmony_cidisabled, the dependency tree for `regex` shrinks to exactly 1 crate 347c67d6573Sopenharmony_ci(`regex-syntax`). More information about the new crate features can be 348c67d6573Sopenharmony_ci[found in the docs](https://docs.rs/regex/*/#crate-features). 349c67d6573Sopenharmony_ci 350c67d6573Sopenharmony_ciNote that while this is a new minor version release, the minimum supported 351c67d6573Sopenharmony_ciRust version for this crate remains at `1.28.0`. 352c67d6573Sopenharmony_ci 353c67d6573Sopenharmony_ciNew features: 354c67d6573Sopenharmony_ci 355c67d6573Sopenharmony_ci* [FEATURE #474](https://github.com/rust-lang/regex/issues/474): 356c67d6573Sopenharmony_ci The `use_std` feature has been deprecated in favor of the `std` feature. 357c67d6573Sopenharmony_ci The `use_std` feature will be removed in regex 2. Until then, `use_std` will 358c67d6573Sopenharmony_ci remain as an alias for the `std` feature. 359c67d6573Sopenharmony_ci* [FEATURE #583](https://github.com/rust-lang/regex/issues/583): 360c67d6573Sopenharmony_ci Add a substantial number of crate features shrinking `regex`. 361c67d6573Sopenharmony_ci 362c67d6573Sopenharmony_ci 363c67d6573Sopenharmony_ci1.2.1 (2019-08-03) 364c67d6573Sopenharmony_ci================== 365c67d6573Sopenharmony_ciThis release does a bit of house cleaning. Namely: 366c67d6573Sopenharmony_ci 367c67d6573Sopenharmony_ci* This repository is now using rustfmt. 368c67d6573Sopenharmony_ci* License headers have been removed from all files, in following suit with the 369c67d6573Sopenharmony_ci Rust project. 370c67d6573Sopenharmony_ci* Teddy has been removed from the `regex` crate, and is now part of the 371c67d6573Sopenharmony_ci `aho-corasick` crate. 372c67d6573Sopenharmony_ci [See `aho-corasick`'s new `packed` sub-module for details](https://docs.rs/aho-corasick/0.7.6/aho_corasick/packed/index.html). 373c67d6573Sopenharmony_ci* The `utf8-ranges` crate has been deprecated, with its functionality moving 374c67d6573Sopenharmony_ci into the 375c67d6573Sopenharmony_ci [`utf8` sub-module of `regex-syntax`](https://docs.rs/regex-syntax/0.6.11/regex_syntax/utf8/index.html). 376c67d6573Sopenharmony_ci* The `ucd-util` dependency has been dropped, in favor of implementing what 377c67d6573Sopenharmony_ci little we need inside of `regex-syntax` itself. 378c67d6573Sopenharmony_ci 379c67d6573Sopenharmony_ciIn general, this is part of an ongoing (long term) effort to make optimizations 380c67d6573Sopenharmony_ciin the regex engine easier to reason about. The current code is too convoluted 381c67d6573Sopenharmony_ciand thus it is very easy to introduce new bugs. This simplification effort is 382c67d6573Sopenharmony_cithe primary motivation behind re-working the `aho-corasick` crate to not only 383c67d6573Sopenharmony_cibundle algorithms like Teddy, but to also provide regex-like match semantics 384c67d6573Sopenharmony_ciautomatically. 385c67d6573Sopenharmony_ci 386c67d6573Sopenharmony_ciMoving forward, the plan is to join up with the `bstr` and `regex-automata` 387c67d6573Sopenharmony_cicrates, with the former providing more sophisticated substring search 388c67d6573Sopenharmony_cialgorithms (thereby deleting existing code in `regex`) and the latter providing 389c67d6573Sopenharmony_ciahead-of-time compiled DFAs for cases where they are inexpensive to compute. 390c67d6573Sopenharmony_ci 391c67d6573Sopenharmony_ci 392c67d6573Sopenharmony_ci1.2.0 (2019-07-20) 393c67d6573Sopenharmony_ci================== 394c67d6573Sopenharmony_ciThis release updates regex's minimum supported Rust version to 1.28, which was 395c67d6573Sopenharmony_cirelease almost 1 year ago. This release also updates regex's Unicode data 396c67d6573Sopenharmony_citables to 12.1.0. 397c67d6573Sopenharmony_ci 398c67d6573Sopenharmony_ci 399c67d6573Sopenharmony_ci1.1.9 (2019-07-06) 400c67d6573Sopenharmony_ci================== 401c67d6573Sopenharmony_ciThis release contains a bug fix that caused regex's tests to fail, due to a 402c67d6573Sopenharmony_cidependency on an unreleased behavior in regex-syntax. 403c67d6573Sopenharmony_ci 404c67d6573Sopenharmony_ci* [BUG #593](https://github.com/rust-lang/regex/issues/593): 405c67d6573Sopenharmony_ci Move an integration-style test on error messages into regex-syntax. 406c67d6573Sopenharmony_ci 407c67d6573Sopenharmony_ci 408c67d6573Sopenharmony_ci1.1.8 (2019-07-04) 409c67d6573Sopenharmony_ci================== 410c67d6573Sopenharmony_ciThis release contains a few small internal refactorings. One of which fixes 411c67d6573Sopenharmony_cian instance of undefined behavior in a part of the SIMD code. 412c67d6573Sopenharmony_ci 413c67d6573Sopenharmony_ciBug fixes: 414c67d6573Sopenharmony_ci 415c67d6573Sopenharmony_ci* [BUG #545](https://github.com/rust-lang/regex/issues/545): 416c67d6573Sopenharmony_ci Improves error messages when a repetition operator is used without a number. 417c67d6573Sopenharmony_ci* [BUG #588](https://github.com/rust-lang/regex/issues/588): 418c67d6573Sopenharmony_ci Removes use of a repr(Rust) union used for type punning in the Teddy matcher. 419c67d6573Sopenharmony_ci* [BUG #591](https://github.com/rust-lang/regex/issues/591): 420c67d6573Sopenharmony_ci Update docs for running benchmarks and improve failure modes. 421c67d6573Sopenharmony_ci 422c67d6573Sopenharmony_ci 423c67d6573Sopenharmony_ci1.1.7 (2019-06-09) 424c67d6573Sopenharmony_ci================== 425c67d6573Sopenharmony_ciThis release fixes up a few warnings as a result of recent deprecations. 426c67d6573Sopenharmony_ci 427c67d6573Sopenharmony_ci 428c67d6573Sopenharmony_ci1.1.6 (2019-04-16) 429c67d6573Sopenharmony_ci================== 430c67d6573Sopenharmony_ciThis release fixes a regression introduced by a bug fix (for 431c67d6573Sopenharmony_ci[BUG #557](https://github.com/rust-lang/regex/issues/557)) which could cause 432c67d6573Sopenharmony_cithe regex engine to enter an infinite loop. This bug was originally 433c67d6573Sopenharmony_ci[reported against ripgrep](https://github.com/BurntSushi/ripgrep/issues/1247). 434c67d6573Sopenharmony_ci 435c67d6573Sopenharmony_ci 436c67d6573Sopenharmony_ci1.1.5 (2019-04-01) 437c67d6573Sopenharmony_ci================== 438c67d6573Sopenharmony_ciThis release fixes a bug in regex's dependency specification where it requires 439c67d6573Sopenharmony_cia newer version of regex-syntax, but this wasn't communicated correctly in the 440c67d6573Sopenharmony_ciCargo.toml. This would have been caught by a minimal version check, but this 441c67d6573Sopenharmony_cicheck was disabled because the `rand` crate itself advertises incorrect 442c67d6573Sopenharmony_cidependency specifications. 443c67d6573Sopenharmony_ci 444c67d6573Sopenharmony_ciBug fixes: 445c67d6573Sopenharmony_ci 446c67d6573Sopenharmony_ci* [BUG #570](https://github.com/rust-lang/regex/pull/570): 447c67d6573Sopenharmony_ci Fix regex-syntax minimal version. 448c67d6573Sopenharmony_ci 449c67d6573Sopenharmony_ci 450c67d6573Sopenharmony_ci1.1.4 (2019-03-31) 451c67d6573Sopenharmony_ci================== 452c67d6573Sopenharmony_ciThis release fixes a backwards compatibility regression where Regex was no 453c67d6573Sopenharmony_cilonger UnwindSafe. This was caused by the upgrade to aho-corasick 0.7, whose 454c67d6573Sopenharmony_ciAhoCorasick type was itself not UnwindSafe. This has been fixed in aho-corasick 455c67d6573Sopenharmony_ci0.7.4, which we now require. 456c67d6573Sopenharmony_ci 457c67d6573Sopenharmony_ciBug fixes: 458c67d6573Sopenharmony_ci 459c67d6573Sopenharmony_ci* [BUG #568](https://github.com/rust-lang/regex/pull/568): 460c67d6573Sopenharmony_ci Fix an API regression where Regex was no longer UnwindSafe. 461c67d6573Sopenharmony_ci 462c67d6573Sopenharmony_ci 463c67d6573Sopenharmony_ci1.1.3 (2019-03-30) 464c67d6573Sopenharmony_ci================== 465c67d6573Sopenharmony_ciThis releases fixes a few bugs and adds a performance improvement when a regex 466c67d6573Sopenharmony_ciis a simple alternation of literals. 467c67d6573Sopenharmony_ci 468c67d6573Sopenharmony_ciPerformance improvements: 469c67d6573Sopenharmony_ci 470c67d6573Sopenharmony_ci* [OPT #566](https://github.com/rust-lang/regex/pull/566): 471c67d6573Sopenharmony_ci Upgrades `aho-corasick` to 0.7 and uses it for `foo|bar|...|quux` regexes. 472c67d6573Sopenharmony_ci 473c67d6573Sopenharmony_ciBug fixes: 474c67d6573Sopenharmony_ci 475c67d6573Sopenharmony_ci* [BUG #527](https://github.com/rust-lang/regex/issues/527): 476c67d6573Sopenharmony_ci Fix a bug where the parser would panic on patterns like `((?x))`. 477c67d6573Sopenharmony_ci* [BUG #555](https://github.com/rust-lang/regex/issues/555): 478c67d6573Sopenharmony_ci Fix a bug where the parser would panic on patterns like `(?m){1,1}`. 479c67d6573Sopenharmony_ci* [BUG #557](https://github.com/rust-lang/regex/issues/557): 480c67d6573Sopenharmony_ci Fix a bug where captures could lead to an incorrect match. 481c67d6573Sopenharmony_ci 482c67d6573Sopenharmony_ci 483c67d6573Sopenharmony_ci1.1.2 (2019-02-27) 484c67d6573Sopenharmony_ci================== 485c67d6573Sopenharmony_ciThis release fixes a bug found in the fix introduced in 1.1.1. 486c67d6573Sopenharmony_ci 487c67d6573Sopenharmony_ciBug fixes: 488c67d6573Sopenharmony_ci 489c67d6573Sopenharmony_ci* [BUG edf45e6f](https://github.com/rust-lang/regex/commit/edf45e6f): 490c67d6573Sopenharmony_ci Fix bug introduced in reverse suffix literal matcher in the 1.1.1 release. 491c67d6573Sopenharmony_ci 492c67d6573Sopenharmony_ci 493c67d6573Sopenharmony_ci1.1.1 (2019-02-27) 494c67d6573Sopenharmony_ci================== 495c67d6573Sopenharmony_ciThis is a small release with one fix for a bug caused by literal optimizations. 496c67d6573Sopenharmony_ci 497c67d6573Sopenharmony_ciBug fixes: 498c67d6573Sopenharmony_ci 499c67d6573Sopenharmony_ci* [BUG 661bf53d](https://github.com/rust-lang/regex/commit/661bf53d): 500c67d6573Sopenharmony_ci Fixes a bug in the reverse suffix literal optimization. This was originally 501c67d6573Sopenharmony_ci reported 502c67d6573Sopenharmony_ci [against ripgrep](https://github.com/BurntSushi/ripgrep/issues/1203). 503c67d6573Sopenharmony_ci 504c67d6573Sopenharmony_ci 505c67d6573Sopenharmony_ci1.1.0 (2018-11-30) 506c67d6573Sopenharmony_ci================== 507c67d6573Sopenharmony_ciThis is a small release with a couple small enhancements. This release also 508c67d6573Sopenharmony_ciincreases the minimal supported Rust version (MSRV) to 1.24.1 (from 1.20.0). In 509c67d6573Sopenharmony_ciaccordance with this crate's MSRV policy, this release bumps the minor version 510c67d6573Sopenharmony_cinumber. 511c67d6573Sopenharmony_ci 512c67d6573Sopenharmony_ciPerformance improvements: 513c67d6573Sopenharmony_ci 514c67d6573Sopenharmony_ci* [OPT #511](https://github.com/rust-lang/regex/pull/511), 515c67d6573Sopenharmony_ci [OPT #540](https://github.com/rust-lang/regex/pull/540): 516c67d6573Sopenharmony_ci Improve lazy DFA construction for large regex sets. 517c67d6573Sopenharmony_ci 518c67d6573Sopenharmony_ciNew features: 519c67d6573Sopenharmony_ci 520c67d6573Sopenharmony_ci* [FEATURE #538](https://github.com/rust-lang/regex/pull/538): 521c67d6573Sopenharmony_ci Add Emoji and "break" Unicode properties. See [UNICODE.md](UNICODE.md). 522c67d6573Sopenharmony_ci 523c67d6573Sopenharmony_ciBug fixes: 524c67d6573Sopenharmony_ci 525c67d6573Sopenharmony_ci* [BUG #530](https://github.com/rust-lang/regex/pull/530): 526c67d6573Sopenharmony_ci Add Unicode license (for data tables). 527c67d6573Sopenharmony_ci* Various typo/doc fixups. 528c67d6573Sopenharmony_ci 529c67d6573Sopenharmony_ci 530c67d6573Sopenharmony_ci1.0.6 (2018-11-06) 531c67d6573Sopenharmony_ci================== 532c67d6573Sopenharmony_ciThis is a small release. 533c67d6573Sopenharmony_ci 534c67d6573Sopenharmony_ciPerformance improvements: 535c67d6573Sopenharmony_ci 536c67d6573Sopenharmony_ci* [OPT #513](https://github.com/rust-lang/regex/pull/513): 537c67d6573Sopenharmony_ci Improve performance of compiling large Unicode classes by 8-10%. 538c67d6573Sopenharmony_ci 539c67d6573Sopenharmony_ciBug fixes: 540c67d6573Sopenharmony_ci 541c67d6573Sopenharmony_ci* [BUG #533](https://github.com/rust-lang/regex/issues/533): 542c67d6573Sopenharmony_ci Fix definition of `[[:blank:]]` class that regressed in `regex-syntax 0.5`. 543c67d6573Sopenharmony_ci 544c67d6573Sopenharmony_ci 545c67d6573Sopenharmony_ci1.0.5 (2018-09-06) 546c67d6573Sopenharmony_ci================== 547c67d6573Sopenharmony_ciThis is a small release with an API enhancement. 548c67d6573Sopenharmony_ci 549c67d6573Sopenharmony_ciNew features: 550c67d6573Sopenharmony_ci 551c67d6573Sopenharmony_ci* [FEATURE #509](https://github.com/rust-lang/regex/pull/509): 552c67d6573Sopenharmony_ci Generalize impls of the `Replacer` trait. 553c67d6573Sopenharmony_ci 554c67d6573Sopenharmony_ci 555c67d6573Sopenharmony_ci1.0.4 (2018-08-25) 556c67d6573Sopenharmony_ci================== 557c67d6573Sopenharmony_ciThis is a small release that bumps the quickcheck dependency. 558c67d6573Sopenharmony_ci 559c67d6573Sopenharmony_ci 560c67d6573Sopenharmony_ci1.0.3 (2018-08-24) 561c67d6573Sopenharmony_ci================== 562c67d6573Sopenharmony_ciThis is a small bug fix release. 563c67d6573Sopenharmony_ci 564c67d6573Sopenharmony_ciBug fixes: 565c67d6573Sopenharmony_ci 566c67d6573Sopenharmony_ci* [BUG #504](https://github.com/rust-lang/regex/pull/504): 567c67d6573Sopenharmony_ci Fix for Cargo's "minimal version" support. 568c67d6573Sopenharmony_ci* [BUG 1e39165f](https://github.com/rust-lang/regex/commit/1e39165f): 569c67d6573Sopenharmony_ci Fix doc examples for byte regexes. 570c67d6573Sopenharmony_ci 571c67d6573Sopenharmony_ci 572c67d6573Sopenharmony_ci1.0.2 (2018-07-18) 573c67d6573Sopenharmony_ci================== 574c67d6573Sopenharmony_ciThis release exposes some new lower level APIs on `Regex` that permit 575c67d6573Sopenharmony_ciamortizing allocation and controlling the location at which a search is 576c67d6573Sopenharmony_ciperformed in a more granular way. Most users of the regex crate will not 577c67d6573Sopenharmony_cineed or want to use these APIs. 578c67d6573Sopenharmony_ci 579c67d6573Sopenharmony_ciNew features: 580c67d6573Sopenharmony_ci 581c67d6573Sopenharmony_ci* [FEATURE #493](https://github.com/rust-lang/regex/pull/493): 582c67d6573Sopenharmony_ci Add a few lower level APIs for amortizing allocation and more fine grained 583c67d6573Sopenharmony_ci searching. 584c67d6573Sopenharmony_ci 585c67d6573Sopenharmony_ciBug fixes: 586c67d6573Sopenharmony_ci 587c67d6573Sopenharmony_ci* [BUG 3981d2ad](https://github.com/rust-lang/regex/commit/3981d2ad): 588c67d6573Sopenharmony_ci Correct outdated documentation on `RegexBuilder::dot_matches_new_line`. 589c67d6573Sopenharmony_ci* [BUG 7ebe4ae0](https://github.com/rust-lang/regex/commit/7ebe4ae0): 590c67d6573Sopenharmony_ci Correct outdated documentation on `Parser::allow_invalid_utf8` in the 591c67d6573Sopenharmony_ci `regex-syntax` crate. 592c67d6573Sopenharmony_ci* [BUG 24c7770b](https://github.com/rust-lang/regex/commit/24c7770b): 593c67d6573Sopenharmony_ci Fix a bug in the HIR printer where it wouldn't correctly escape meta 594c67d6573Sopenharmony_ci characters in character classes. 595c67d6573Sopenharmony_ci 596c67d6573Sopenharmony_ci 597c67d6573Sopenharmony_ci1.0.1 (2018-06-19) 598c67d6573Sopenharmony_ci================== 599c67d6573Sopenharmony_ciThis release upgrades regex's Unicode tables to Unicode 11, and enables SIMD 600c67d6573Sopenharmony_cioptimizations automatically on Rust stable (1.27 or newer). 601c67d6573Sopenharmony_ci 602c67d6573Sopenharmony_ciNew features: 603c67d6573Sopenharmony_ci 604c67d6573Sopenharmony_ci* [FEATURE #486](https://github.com/rust-lang/regex/pull/486): 605c67d6573Sopenharmony_ci Implement `size_hint` on `RegexSet` match iterators. 606c67d6573Sopenharmony_ci* [FEATURE #488](https://github.com/rust-lang/regex/pull/488): 607c67d6573Sopenharmony_ci Update Unicode tables for Unicode 11. 608c67d6573Sopenharmony_ci* [FEATURE #490](https://github.com/rust-lang/regex/pull/490): 609c67d6573Sopenharmony_ci SIMD optimizations are now enabled automatically in Rust stable, for versions 610c67d6573Sopenharmony_ci 1.27 and up. No compilation flags or features need to be set. CPU support 611c67d6573Sopenharmony_ci SIMD is detected automatically at runtime. 612c67d6573Sopenharmony_ci 613c67d6573Sopenharmony_ciBug fixes: 614c67d6573Sopenharmony_ci 615c67d6573Sopenharmony_ci* [BUG #482](https://github.com/rust-lang/regex/pull/482): 616c67d6573Sopenharmony_ci Present a better compilation error when the `use_std` feature isn't used. 617c67d6573Sopenharmony_ci 618c67d6573Sopenharmony_ci 619c67d6573Sopenharmony_ci1.0.0 (2018-05-01) 620c67d6573Sopenharmony_ci================== 621c67d6573Sopenharmony_ciThis release marks the 1.0 release of regex. 622c67d6573Sopenharmony_ci 623c67d6573Sopenharmony_ciWhile this release includes some breaking changes, most users of older versions 624c67d6573Sopenharmony_ciof the regex library should be able to migrate to 1.0 by simply bumping the 625c67d6573Sopenharmony_civersion number. The important changes are as follows: 626c67d6573Sopenharmony_ci 627c67d6573Sopenharmony_ci* We adopt Rust 1.20 as the new minimum supported version of Rust for regex. 628c67d6573Sopenharmony_ci We also tentativley adopt a policy that permits bumping the minimum supported 629c67d6573Sopenharmony_ci version of Rust in minor version releases of regex, but no patch releases. 630c67d6573Sopenharmony_ci That is, with respect to semver, we do not strictly consider bumping the 631c67d6573Sopenharmony_ci minimum version of Rust to be a breaking change, but adopt a conservative 632c67d6573Sopenharmony_ci stance as a compromise. 633c67d6573Sopenharmony_ci* Octal syntax in regular expressions has been disabled by default. This 634c67d6573Sopenharmony_ci permits better error messages that inform users that backreferences aren't 635c67d6573Sopenharmony_ci available. Octal syntax can be re-enabled via the corresponding option on 636c67d6573Sopenharmony_ci `RegexBuilder`. 637c67d6573Sopenharmony_ci* `(?-u:\B)` is no longer allowed in Unicode regexes since it can match at 638c67d6573Sopenharmony_ci invalid UTF-8 code unit boundaries. `(?-u:\b)` is still allowed in Unicode 639c67d6573Sopenharmony_ci regexes. 640c67d6573Sopenharmony_ci* The `From<regex_syntax::Error>` impl has been removed. This formally removes 641c67d6573Sopenharmony_ci the public dependency on `regex-syntax`. 642c67d6573Sopenharmony_ci* A new feature, `use_std`, has been added and enabled by default. Disabling 643c67d6573Sopenharmony_ci the feature will result in a compilation error. In the future, this may 644c67d6573Sopenharmony_ci permit us to support `no_std` environments (w/ `alloc`) in a backwards 645c67d6573Sopenharmony_ci compatible way. 646c67d6573Sopenharmony_ci 647c67d6573Sopenharmony_ciFor more information and discussion, please see 648c67d6573Sopenharmony_ci[1.0 release tracking issue](https://github.com/rust-lang/regex/issues/457). 649c67d6573Sopenharmony_ci 650c67d6573Sopenharmony_ci 651c67d6573Sopenharmony_ci0.2.11 (2018-05-01) 652c67d6573Sopenharmony_ci=================== 653c67d6573Sopenharmony_ciThis release primarily contains bug fixes. Some of them resolve bugs where 654c67d6573Sopenharmony_cithe parser could panic. 655c67d6573Sopenharmony_ci 656c67d6573Sopenharmony_ciNew features: 657c67d6573Sopenharmony_ci 658c67d6573Sopenharmony_ci* [FEATURE #459](https://github.com/rust-lang/regex/pull/459): 659c67d6573Sopenharmony_ci Include C++'s standard regex library and Boost's regex library in the 660c67d6573Sopenharmony_ci benchmark harness. We now include D/libphobos, C++/std, C++/boost, Oniguruma, 661c67d6573Sopenharmony_ci PCRE1, PCRE2, RE2 and Tcl in the harness. 662c67d6573Sopenharmony_ci 663c67d6573Sopenharmony_ciBug fixes: 664c67d6573Sopenharmony_ci 665c67d6573Sopenharmony_ci* [BUG #445](https://github.com/rust-lang/regex/issues/445): 666c67d6573Sopenharmony_ci Clarify order of indices returned by RegexSet match iterator. 667c67d6573Sopenharmony_ci* [BUG #461](https://github.com/rust-lang/regex/issues/461): 668c67d6573Sopenharmony_ci Improve error messages for invalid regexes like `[\d-a]`. 669c67d6573Sopenharmony_ci* [BUG #464](https://github.com/rust-lang/regex/issues/464): 670c67d6573Sopenharmony_ci Fix a bug in the error message pretty printer that could cause a panic when 671c67d6573Sopenharmony_ci a regex contained a literal `\n` character. 672c67d6573Sopenharmony_ci* [BUG #465](https://github.com/rust-lang/regex/issues/465): 673c67d6573Sopenharmony_ci Fix a panic in the parser that was caused by applying a repetition operator 674c67d6573Sopenharmony_ci to `(?flags)`. 675c67d6573Sopenharmony_ci* [BUG #466](https://github.com/rust-lang/regex/issues/466): 676c67d6573Sopenharmony_ci Fix a bug where `\pC` was not recognized as an alias for `\p{Other}`. 677c67d6573Sopenharmony_ci* [BUG #470](https://github.com/rust-lang/regex/pull/470): 678c67d6573Sopenharmony_ci Fix a bug where literal searches did more work than necessary for anchored 679c67d6573Sopenharmony_ci regexes. 680c67d6573Sopenharmony_ci 681c67d6573Sopenharmony_ci 682c67d6573Sopenharmony_ci0.2.10 (2018-03-16) 683c67d6573Sopenharmony_ci=================== 684c67d6573Sopenharmony_ciThis release primarily updates the regex crate to changes made in `std::arch` 685c67d6573Sopenharmony_cion nightly Rust. 686c67d6573Sopenharmony_ci 687c67d6573Sopenharmony_ciNew features: 688c67d6573Sopenharmony_ci 689c67d6573Sopenharmony_ci* [FEATURE #458](https://github.com/rust-lang/regex/pull/458): 690c67d6573Sopenharmony_ci The `Hir` type in `regex-syntax` now has a printer. 691c67d6573Sopenharmony_ci 692c67d6573Sopenharmony_ci 693c67d6573Sopenharmony_ci0.2.9 (2018-03-12) 694c67d6573Sopenharmony_ci================== 695c67d6573Sopenharmony_ciThis release introduces a new nightly only feature, `unstable`, which enables 696c67d6573Sopenharmony_ciSIMD optimizations for certain types of regexes. No additional compile time 697c67d6573Sopenharmony_cioptions are necessary, and the regex crate will automatically choose the 698c67d6573Sopenharmony_cibest CPU features at run time. As a result, the `simd` (nightly only) crate 699c67d6573Sopenharmony_cidependency has been dropped. 700c67d6573Sopenharmony_ci 701c67d6573Sopenharmony_ciNew features: 702c67d6573Sopenharmony_ci 703c67d6573Sopenharmony_ci* [FEATURE #456](https://github.com/rust-lang/regex/pull/456): 704c67d6573Sopenharmony_ci The regex crate now includes AVX2 optimizations in addition to the extant 705c67d6573Sopenharmony_ci SSSE3 optimization. 706c67d6573Sopenharmony_ci 707c67d6573Sopenharmony_ciBug fixes: 708c67d6573Sopenharmony_ci 709c67d6573Sopenharmony_ci* [BUG #455](https://github.com/rust-lang/regex/pull/455): 710c67d6573Sopenharmony_ci Fix a bug where `(?x)[ / - ]` failed to parse. 711c67d6573Sopenharmony_ci 712c67d6573Sopenharmony_ci 713c67d6573Sopenharmony_ci0.2.8 (2018-03-12) 714c67d6573Sopenharmony_ci================== 715c67d6573Sopenharmony_ciBug gixes: 716c67d6573Sopenharmony_ci 717c67d6573Sopenharmony_ci* [BUG #454](https://github.com/rust-lang/regex/pull/454): 718c67d6573Sopenharmony_ci Fix a bug in the nest limit checker being too aggressive. 719c67d6573Sopenharmony_ci 720c67d6573Sopenharmony_ci 721c67d6573Sopenharmony_ci0.2.7 (2018-03-07) 722c67d6573Sopenharmony_ci================== 723c67d6573Sopenharmony_ciThis release includes a ground-up rewrite of the regex-syntax crate, which has 724c67d6573Sopenharmony_cibeen in development for over a year. 725c67d6573Sopenharmony_ci 726c67d6573Sopenharmony_ciNew features: 727c67d6573Sopenharmony_ci 728c67d6573Sopenharmony_ci* Error messages for invalid regexes have been greatly improved. You get these 729c67d6573Sopenharmony_ci automatically; you don't need to do anything. In addition to better 730c67d6573Sopenharmony_ci formatting, error messages will now explicitly call out the use of look 731c67d6573Sopenharmony_ci around. When regex 1.0 is released, this will happen for backreferences as 732c67d6573Sopenharmony_ci well. 733c67d6573Sopenharmony_ci* Full support for intersection, difference and symmetric difference of 734c67d6573Sopenharmony_ci character classes. These can be used via the `&&`, `--` and `~~` binary 735c67d6573Sopenharmony_ci operators within classes. 736c67d6573Sopenharmony_ci* A Unicode Level 1 conformat implementation of `\p{..}` character classes. 737c67d6573Sopenharmony_ci Things like `\p{scx:Hira}`, `\p{age:3.2}` or `\p{Changes_When_Casefolded}` 738c67d6573Sopenharmony_ci now work. All property name and value aliases are supported, and properties 739c67d6573Sopenharmony_ci are selected via loose matching. e.g., `\p{Greek}` is the same as 740c67d6573Sopenharmony_ci `\p{G r E e K}`. 741c67d6573Sopenharmony_ci* A new `UNICODE.md` document has been added to this repository that 742c67d6573Sopenharmony_ci exhaustively documents support for UTS#18. 743c67d6573Sopenharmony_ci* Empty sub-expressions are now permitted in most places. That is, `()+` is 744c67d6573Sopenharmony_ci now a valid regex. 745c67d6573Sopenharmony_ci* Almost everything in regex-syntax now uses constant stack space, even when 746c67d6573Sopenharmony_ci performing analysis that requires structural induction. This reduces the risk 747c67d6573Sopenharmony_ci of a user provided regular expression causing a stack overflow. 748c67d6573Sopenharmony_ci* [FEATURE #174](https://github.com/rust-lang/regex/issues/174): 749c67d6573Sopenharmony_ci The `Ast` type in `regex-syntax` now contains span information. 750c67d6573Sopenharmony_ci* [FEATURE #424](https://github.com/rust-lang/regex/issues/424): 751c67d6573Sopenharmony_ci Support `\u`, `\u{...}`, `\U` and `\U{...}` syntax for specifying code points 752c67d6573Sopenharmony_ci in a regular expression. 753c67d6573Sopenharmony_ci* [FEATURE #449](https://github.com/rust-lang/regex/pull/449): 754c67d6573Sopenharmony_ci Add a `Replace::by_ref` adapter for use of a replacer without consuming it. 755c67d6573Sopenharmony_ci 756c67d6573Sopenharmony_ciBug fixes: 757c67d6573Sopenharmony_ci 758c67d6573Sopenharmony_ci* [BUG #446](https://github.com/rust-lang/regex/issues/446): 759c67d6573Sopenharmony_ci We re-enable the Boyer-Moore literal matcher. 760c67d6573Sopenharmony_ci 761c67d6573Sopenharmony_ci 762c67d6573Sopenharmony_ci0.2.6 (2018-02-08) 763c67d6573Sopenharmony_ci================== 764c67d6573Sopenharmony_ciBug fixes: 765c67d6573Sopenharmony_ci 766c67d6573Sopenharmony_ci* [BUG #446](https://github.com/rust-lang/regex/issues/446): 767c67d6573Sopenharmony_ci Fixes a bug in the new Boyer-Moore searcher that results in a match failure. 768c67d6573Sopenharmony_ci We fix this bug by temporarily disabling Boyer-Moore. 769c67d6573Sopenharmony_ci 770c67d6573Sopenharmony_ci 771c67d6573Sopenharmony_ci0.2.5 (2017-12-30) 772c67d6573Sopenharmony_ci================== 773c67d6573Sopenharmony_ciBug fixes: 774c67d6573Sopenharmony_ci 775c67d6573Sopenharmony_ci* [BUG #437](https://github.com/rust-lang/regex/issues/437): 776c67d6573Sopenharmony_ci Fixes a bug in the new Boyer-Moore searcher that results in a panic. 777c67d6573Sopenharmony_ci 778c67d6573Sopenharmony_ci 779c67d6573Sopenharmony_ci0.2.4 (2017-12-30) 780c67d6573Sopenharmony_ci================== 781c67d6573Sopenharmony_ciNew features: 782c67d6573Sopenharmony_ci 783c67d6573Sopenharmony_ci* [FEATURE #348](https://github.com/rust-lang/regex/pull/348): 784c67d6573Sopenharmony_ci Improve performance for capture searches on anchored regex. 785c67d6573Sopenharmony_ci (Contributed by @ethanpailes. Nice work!) 786c67d6573Sopenharmony_ci* [FEATURE #419](https://github.com/rust-lang/regex/pull/419): 787c67d6573Sopenharmony_ci Expand literal searching to include Tuned Boyer-Moore in some cases. 788c67d6573Sopenharmony_ci (Contributed by @ethanpailes. Nice work!) 789c67d6573Sopenharmony_ci 790c67d6573Sopenharmony_ciBug fixes: 791c67d6573Sopenharmony_ci 792c67d6573Sopenharmony_ci* [BUG](https://github.com/rust-lang/regex/pull/436): 793c67d6573Sopenharmony_ci The regex compiler plugin has been removed. 794c67d6573Sopenharmony_ci* [BUG](https://github.com/rust-lang/regex/pull/436): 795c67d6573Sopenharmony_ci `simd` has been bumped to `0.2.1`, which fixes a Rust nightly build error. 796c67d6573Sopenharmony_ci* [BUG](https://github.com/rust-lang/regex/pull/436): 797c67d6573Sopenharmony_ci Bring the benchmark harness up to date. 798c67d6573Sopenharmony_ci 799c67d6573Sopenharmony_ci 800c67d6573Sopenharmony_ci0.2.3 (2017-11-30) 801c67d6573Sopenharmony_ci================== 802c67d6573Sopenharmony_ciNew features: 803c67d6573Sopenharmony_ci 804c67d6573Sopenharmony_ci* [FEATURE #374](https://github.com/rust-lang/regex/pull/374): 805c67d6573Sopenharmony_ci Add `impl From<Match> for &str`. 806c67d6573Sopenharmony_ci* [FEATURE #380](https://github.com/rust-lang/regex/pull/380): 807c67d6573Sopenharmony_ci Derive `Clone` and `PartialEq` on `Error`. 808c67d6573Sopenharmony_ci* [FEATURE #400](https://github.com/rust-lang/regex/pull/400): 809c67d6573Sopenharmony_ci Update to Unicode 10. 810c67d6573Sopenharmony_ci 811c67d6573Sopenharmony_ciBug fixes: 812c67d6573Sopenharmony_ci 813c67d6573Sopenharmony_ci* [BUG #375](https://github.com/rust-lang/regex/issues/375): 814c67d6573Sopenharmony_ci Fix a bug that prevented the bounded backtracker from terminating. 815c67d6573Sopenharmony_ci* [BUG #393](https://github.com/rust-lang/regex/issues/393), 816c67d6573Sopenharmony_ci [BUG #394](https://github.com/rust-lang/regex/issues/394): 817c67d6573Sopenharmony_ci Fix bug with `replace` methods for empty matches. 818c67d6573Sopenharmony_ci 819c67d6573Sopenharmony_ci 820c67d6573Sopenharmony_ci0.2.2 (2017-05-21) 821c67d6573Sopenharmony_ci================== 822c67d6573Sopenharmony_ciNew features: 823c67d6573Sopenharmony_ci 824c67d6573Sopenharmony_ci* [FEATURE #341](https://github.com/rust-lang/regex/issues/341): 825c67d6573Sopenharmony_ci Support nested character classes and intersection operation. 826c67d6573Sopenharmony_ci For example, `[\p{Greek}&&\pL]` matches greek letters and 827c67d6573Sopenharmony_ci `[[0-9]&&[^4]]` matches every decimal digit except `4`. 828c67d6573Sopenharmony_ci (Much thanks to @robinst, who contributed this awesome feature.) 829c67d6573Sopenharmony_ci 830c67d6573Sopenharmony_ciBug fixes: 831c67d6573Sopenharmony_ci 832c67d6573Sopenharmony_ci* [BUG #321](https://github.com/rust-lang/regex/issues/321): 833c67d6573Sopenharmony_ci Fix bug in literal extraction and UTF-8 decoding. 834c67d6573Sopenharmony_ci* [BUG #326](https://github.com/rust-lang/regex/issues/326): 835c67d6573Sopenharmony_ci Add documentation tip about the `(?x)` flag. 836c67d6573Sopenharmony_ci* [BUG #333](https://github.com/rust-lang/regex/issues/333): 837c67d6573Sopenharmony_ci Show additional replacement example using curly braces. 838c67d6573Sopenharmony_ci* [BUG #334](https://github.com/rust-lang/regex/issues/334): 839c67d6573Sopenharmony_ci Fix bug when resolving captures after a match. 840c67d6573Sopenharmony_ci* [BUG #338](https://github.com/rust-lang/regex/issues/338): 841c67d6573Sopenharmony_ci Add example that uses `Captures::get` to API documentation. 842c67d6573Sopenharmony_ci* [BUG #353](https://github.com/rust-lang/regex/issues/353): 843c67d6573Sopenharmony_ci Fix RegexSet bug that caused match failure in some cases. 844c67d6573Sopenharmony_ci* [BUG #354](https://github.com/rust-lang/regex/pull/354): 845c67d6573Sopenharmony_ci Fix panic in parser when `(?x)` is used. 846c67d6573Sopenharmony_ci* [BUG #358](https://github.com/rust-lang/regex/issues/358): 847c67d6573Sopenharmony_ci Fix literal optimization bug with RegexSet. 848c67d6573Sopenharmony_ci* [BUG #359](https://github.com/rust-lang/regex/issues/359): 849c67d6573Sopenharmony_ci Fix example code in README. 850c67d6573Sopenharmony_ci* [BUG #365](https://github.com/rust-lang/regex/pull/365): 851c67d6573Sopenharmony_ci Fix bug in `rure_captures_len` in the C binding. 852c67d6573Sopenharmony_ci* [BUG #367](https://github.com/rust-lang/regex/issues/367): 853c67d6573Sopenharmony_ci Fix byte class bug that caused a panic. 854c67d6573Sopenharmony_ci 855c67d6573Sopenharmony_ci 856c67d6573Sopenharmony_ci0.2.1 857c67d6573Sopenharmony_ci===== 858c67d6573Sopenharmony_ciOne major bug with `replace_all` has been fixed along with a couple of other 859c67d6573Sopenharmony_citouchups. 860c67d6573Sopenharmony_ci 861c67d6573Sopenharmony_ci* [BUG #312](https://github.com/rust-lang/regex/issues/312): 862c67d6573Sopenharmony_ci Fix documentation for `NoExpand` to reference correct lifetime parameter. 863c67d6573Sopenharmony_ci* [BUG #314](https://github.com/rust-lang/regex/issues/314): 864c67d6573Sopenharmony_ci Fix a bug with `replace_all` when replacing a match with the empty string. 865c67d6573Sopenharmony_ci* [BUG #316](https://github.com/rust-lang/regex/issues/316): 866c67d6573Sopenharmony_ci Note a missing breaking change from the `0.2.0` CHANGELOG entry. 867c67d6573Sopenharmony_ci (`RegexBuilder::compile` was renamed to `RegexBuilder::build`.) 868c67d6573Sopenharmony_ci* [BUG #324](https://github.com/rust-lang/regex/issues/324): 869c67d6573Sopenharmony_ci Compiling `regex` should only require one version of `memchr` crate. 870c67d6573Sopenharmony_ci 871c67d6573Sopenharmony_ci 872c67d6573Sopenharmony_ci0.2.0 873c67d6573Sopenharmony_ci===== 874c67d6573Sopenharmony_ciThis is a new major release of the regex crate, and is an implementation of the 875c67d6573Sopenharmony_ci[regex 1.0 RFC](https://github.com/rust-lang/rfcs/blob/master/text/1620-regex-1.0.md). 876c67d6573Sopenharmony_ciWe are releasing a `0.2` first, and if there are no major problems, we will 877c67d6573Sopenharmony_cirelease a `1.0` shortly. For `0.2`, the minimum *supported* Rust version is 878c67d6573Sopenharmony_ci1.12. 879c67d6573Sopenharmony_ci 880c67d6573Sopenharmony_ciThere are a number of **breaking changes** in `0.2`. They are split into two 881c67d6573Sopenharmony_citypes. The first type correspond to breaking changes in regular expression 882c67d6573Sopenharmony_cisyntax. The second type correspond to breaking changes in the API. 883c67d6573Sopenharmony_ci 884c67d6573Sopenharmony_ciBreaking changes for regex syntax: 885c67d6573Sopenharmony_ci 886c67d6573Sopenharmony_ci* POSIX character classes now require double bracketing. Previously, the regex 887c67d6573Sopenharmony_ci `[:upper:]` would parse as the `upper` POSIX character class. Now it parses 888c67d6573Sopenharmony_ci as the character class containing the characters `:upper:`. The fix to this 889c67d6573Sopenharmony_ci change is to use `[[:upper:]]` instead. Note that variants like 890c67d6573Sopenharmony_ci `[[:upper:][:blank:]]` continue to work. 891c67d6573Sopenharmony_ci* The character `[` must always be escaped inside a character class. 892c67d6573Sopenharmony_ci* The characters `&`, `-` and `~` must be escaped if any one of them are 893c67d6573Sopenharmony_ci repeated consecutively. For example, `[&]`, `[\&]`, `[\&\&]`, `[&-&]` are all 894c67d6573Sopenharmony_ci equivalent while `[&&]` is illegal. (The motivation for this and the prior 895c67d6573Sopenharmony_ci change is to provide a backwards compatible path for adding character class 896c67d6573Sopenharmony_ci set notation.) 897c67d6573Sopenharmony_ci* A `bytes::Regex` now has Unicode mode enabled by default (like the main 898c67d6573Sopenharmony_ci `Regex` type). This means regexes compiled with `bytes::Regex::new` that 899c67d6573Sopenharmony_ci don't have the Unicode flag set should add `(?-u)` to recover the original 900c67d6573Sopenharmony_ci behavior. 901c67d6573Sopenharmony_ci 902c67d6573Sopenharmony_ciBreaking changes for the regex API: 903c67d6573Sopenharmony_ci 904c67d6573Sopenharmony_ci* `find` and `find_iter` now **return `Match` values instead of 905c67d6573Sopenharmony_ci `(usize, usize)`.** `Match` values have `start` and `end` methods, which 906c67d6573Sopenharmony_ci return the match offsets. `Match` values also have an `as_str` method, 907c67d6573Sopenharmony_ci which returns the text of the match itself. 908c67d6573Sopenharmony_ci* The `Captures` type now only provides a single iterator over all capturing 909c67d6573Sopenharmony_ci matches, which should replace uses of `iter` and `iter_pos`. Uses of 910c67d6573Sopenharmony_ci `iter_named` should use the `capture_names` method on `Regex`. 911c67d6573Sopenharmony_ci* The `at` method on the `Captures` type has been renamed to `get`, and it 912c67d6573Sopenharmony_ci now returns a `Match`. Similarly, the `name` method on `Captures` now returns 913c67d6573Sopenharmony_ci a `Match`. 914c67d6573Sopenharmony_ci* The `replace` methods now return `Cow` values. The `Cow::Borrowed` variant 915c67d6573Sopenharmony_ci is returned when no replacements are made. 916c67d6573Sopenharmony_ci* The `Replacer` trait has been completely overhauled. This should only 917c67d6573Sopenharmony_ci impact clients that implement this trait explicitly. Standard uses of 918c67d6573Sopenharmony_ci the `replace` methods should continue to work unchanged. If you implement 919c67d6573Sopenharmony_ci the `Replacer` trait, please consult the new documentation. 920c67d6573Sopenharmony_ci* The `quote` free function has been renamed to `escape`. 921c67d6573Sopenharmony_ci* The `Regex::with_size_limit` method has been removed. It is replaced by 922c67d6573Sopenharmony_ci `RegexBuilder::size_limit`. 923c67d6573Sopenharmony_ci* The `RegexBuilder` type has switched from owned `self` method receivers to 924c67d6573Sopenharmony_ci `&mut self` method receivers. Most uses will continue to work unchanged, but 925c67d6573Sopenharmony_ci some code may require naming an intermediate variable to hold the builder. 926c67d6573Sopenharmony_ci* The `compile` method on `RegexBuilder` has been renamed to `build`. 927c67d6573Sopenharmony_ci* The free `is_match` function has been removed. It is replaced by compiling 928c67d6573Sopenharmony_ci a `Regex` and calling its `is_match` method. 929c67d6573Sopenharmony_ci* The `PartialEq` and `Eq` impls on `Regex` have been dropped. If you relied 930c67d6573Sopenharmony_ci on these impls, the fix is to define a wrapper type around `Regex`, impl 931c67d6573Sopenharmony_ci `Deref` on it and provide the necessary impls. 932c67d6573Sopenharmony_ci* The `is_empty` method on `Captures` has been removed. This always returns 933c67d6573Sopenharmony_ci `false`, so its use is superfluous. 934c67d6573Sopenharmony_ci* The `Syntax` variant of the `Error` type now contains a string instead of 935c67d6573Sopenharmony_ci a `regex_syntax::Error`. If you were examining syntax errors more closely, 936c67d6573Sopenharmony_ci you'll need to explicitly use the `regex_syntax` crate to re-parse the regex. 937c67d6573Sopenharmony_ci* The `InvalidSet` variant of the `Error` type has been removed since it is 938c67d6573Sopenharmony_ci no longer used. 939c67d6573Sopenharmony_ci* Most of the iterator types have been renamed to match conventions. If you 940c67d6573Sopenharmony_ci were using these iterator types explicitly, please consult the documentation 941c67d6573Sopenharmony_ci for its new name. For example, `RegexSplits` has been renamed to `Split`. 942c67d6573Sopenharmony_ci 943c67d6573Sopenharmony_ciA number of bugs have been fixed: 944c67d6573Sopenharmony_ci 945c67d6573Sopenharmony_ci* [BUG #151](https://github.com/rust-lang/regex/issues/151): 946c67d6573Sopenharmony_ci The `Replacer` trait has been changed to permit the caller to control 947c67d6573Sopenharmony_ci allocation. 948c67d6573Sopenharmony_ci* [BUG #165](https://github.com/rust-lang/regex/issues/165): 949c67d6573Sopenharmony_ci Remove the free `is_match` function. 950c67d6573Sopenharmony_ci* [BUG #166](https://github.com/rust-lang/regex/issues/166): 951c67d6573Sopenharmony_ci Expose more knobs (available in `0.1`) and remove `with_size_limit`. 952c67d6573Sopenharmony_ci* [BUG #168](https://github.com/rust-lang/regex/issues/168): 953c67d6573Sopenharmony_ci Iterators produced by `Captures` now have the correct lifetime parameters. 954c67d6573Sopenharmony_ci* [BUG #175](https://github.com/rust-lang/regex/issues/175): 955c67d6573Sopenharmony_ci Fix a corner case in the parsing of POSIX character classes. 956c67d6573Sopenharmony_ci* [BUG #178](https://github.com/rust-lang/regex/issues/178): 957c67d6573Sopenharmony_ci Drop the `PartialEq` and `Eq` impls on `Regex`. 958c67d6573Sopenharmony_ci* [BUG #179](https://github.com/rust-lang/regex/issues/179): 959c67d6573Sopenharmony_ci Remove `is_empty` from `Captures` since it always returns false. 960c67d6573Sopenharmony_ci* [BUG #276](https://github.com/rust-lang/regex/issues/276): 961c67d6573Sopenharmony_ci Position of named capture can now be retrieved from a `Captures`. 962c67d6573Sopenharmony_ci* [BUG #296](https://github.com/rust-lang/regex/issues/296): 963c67d6573Sopenharmony_ci Remove winapi/kernel32-sys dependency on UNIX. 964c67d6573Sopenharmony_ci* [BUG #307](https://github.com/rust-lang/regex/issues/307): 965c67d6573Sopenharmony_ci Fix error on emscripten. 966c67d6573Sopenharmony_ci 967c67d6573Sopenharmony_ci 968c67d6573Sopenharmony_ci0.1.80 969c67d6573Sopenharmony_ci====== 970c67d6573Sopenharmony_ci* [PR #292](https://github.com/rust-lang/regex/pull/292): 971c67d6573Sopenharmony_ci Fixes bug #291, which was introduced by PR #290. 972c67d6573Sopenharmony_ci 973c67d6573Sopenharmony_ci0.1.79 974c67d6573Sopenharmony_ci====== 975c67d6573Sopenharmony_ci* Require regex-syntax 0.3.8. 976c67d6573Sopenharmony_ci 977c67d6573Sopenharmony_ci0.1.78 978c67d6573Sopenharmony_ci====== 979c67d6573Sopenharmony_ci* [PR #290](https://github.com/rust-lang/regex/pull/290): 980c67d6573Sopenharmony_ci Fixes bug #289, which caused some regexes with a certain combination 981c67d6573Sopenharmony_ci of literals to match incorrectly. 982c67d6573Sopenharmony_ci 983c67d6573Sopenharmony_ci0.1.77 984c67d6573Sopenharmony_ci====== 985c67d6573Sopenharmony_ci* [PR #281](https://github.com/rust-lang/regex/pull/281): 986c67d6573Sopenharmony_ci Fixes bug #280 by disabling all literal optimizations when a pattern 987c67d6573Sopenharmony_ci is partially anchored. 988c67d6573Sopenharmony_ci 989c67d6573Sopenharmony_ci0.1.76 990c67d6573Sopenharmony_ci====== 991c67d6573Sopenharmony_ci* Tweak criteria for using the Teddy literal matcher. 992c67d6573Sopenharmony_ci 993c67d6573Sopenharmony_ci0.1.75 994c67d6573Sopenharmony_ci====== 995c67d6573Sopenharmony_ci* [PR #275](https://github.com/rust-lang/regex/pull/275): 996c67d6573Sopenharmony_ci Improves match verification performance in the Teddy SIMD searcher. 997c67d6573Sopenharmony_ci* [PR #278](https://github.com/rust-lang/regex/pull/278): 998c67d6573Sopenharmony_ci Replaces slow substring loop in the Teddy SIMD searcher with Aho-Corasick. 999c67d6573Sopenharmony_ci* Implemented DoubleEndedIterator on regex set match iterators. 1000c67d6573Sopenharmony_ci 1001c67d6573Sopenharmony_ci0.1.74 1002c67d6573Sopenharmony_ci====== 1003c67d6573Sopenharmony_ci* Release regex-syntax 0.3.5 with a minor bug fix. 1004c67d6573Sopenharmony_ci* Fix bug #272. 1005c67d6573Sopenharmony_ci* Fix bug #277. 1006c67d6573Sopenharmony_ci* [PR #270](https://github.com/rust-lang/regex/pull/270): 1007c67d6573Sopenharmony_ci Fixes bugs #264, #268 and an unreported where the DFA cache size could be 1008c67d6573Sopenharmony_ci drastically under estimated in some cases (leading to high unexpected memory 1009c67d6573Sopenharmony_ci usage). 1010c67d6573Sopenharmony_ci 1011c67d6573Sopenharmony_ci0.1.73 1012c67d6573Sopenharmony_ci====== 1013c67d6573Sopenharmony_ci* Release `regex-syntax 0.3.4`. 1014c67d6573Sopenharmony_ci* Bump `regex-syntax` dependency version for `regex` to `0.3.4`. 1015c67d6573Sopenharmony_ci 1016c67d6573Sopenharmony_ci0.1.72 1017c67d6573Sopenharmony_ci====== 1018c67d6573Sopenharmony_ci* [PR #262](https://github.com/rust-lang/regex/pull/262): 1019c67d6573Sopenharmony_ci Fixes a number of small bugs caught by fuzz testing (AFL). 1020c67d6573Sopenharmony_ci 1021c67d6573Sopenharmony_ci0.1.71 1022c67d6573Sopenharmony_ci====== 1023c67d6573Sopenharmony_ci* [PR #236](https://github.com/rust-lang/regex/pull/236): 1024c67d6573Sopenharmony_ci Fix a bug in how suffix literals were extracted, which could lead 1025c67d6573Sopenharmony_ci to invalid match behavior in some cases. 1026c67d6573Sopenharmony_ci 1027c67d6573Sopenharmony_ci0.1.70 1028c67d6573Sopenharmony_ci====== 1029c67d6573Sopenharmony_ci* [PR #231](https://github.com/rust-lang/regex/pull/231): 1030c67d6573Sopenharmony_ci Add SIMD accelerated multiple pattern search. 1031c67d6573Sopenharmony_ci* [PR #228](https://github.com/rust-lang/regex/pull/228): 1032c67d6573Sopenharmony_ci Reintroduce the reverse suffix literal optimization. 1033c67d6573Sopenharmony_ci* [PR #226](https://github.com/rust-lang/regex/pull/226): 1034c67d6573Sopenharmony_ci Implements NFA state compression in the lazy DFA. 1035c67d6573Sopenharmony_ci* [PR #223](https://github.com/rust-lang/regex/pull/223): 1036c67d6573Sopenharmony_ci A fully anchored RegexSet can now short-circuit. 1037c67d6573Sopenharmony_ci 1038c67d6573Sopenharmony_ci0.1.69 1039c67d6573Sopenharmony_ci====== 1040c67d6573Sopenharmony_ci* [PR #216](https://github.com/rust-lang/regex/pull/216): 1041c67d6573Sopenharmony_ci Tweak the threshold for running backtracking. 1042c67d6573Sopenharmony_ci* [PR #217](https://github.com/rust-lang/regex/pull/217): 1043c67d6573Sopenharmony_ci Add upper limit (from the DFA) to capture search (for the NFA). 1044c67d6573Sopenharmony_ci* [PR #218](https://github.com/rust-lang/regex/pull/218): 1045c67d6573Sopenharmony_ci Add rure, a C API. 1046c67d6573Sopenharmony_ci 1047c67d6573Sopenharmony_ci0.1.68 1048c67d6573Sopenharmony_ci====== 1049c67d6573Sopenharmony_ci* [PR #210](https://github.com/rust-lang/regex/pull/210): 1050c67d6573Sopenharmony_ci Fixed a performance bug in `bytes::Regex::replace` where `extend` was used 1051c67d6573Sopenharmony_ci instead of `extend_from_slice`. 1052c67d6573Sopenharmony_ci* [PR #211](https://github.com/rust-lang/regex/pull/211): 1053c67d6573Sopenharmony_ci Fixed a bug in the handling of word boundaries in the DFA. 1054c67d6573Sopenharmony_ci* [PR #213](https://github.com/rust-lang/pull/213): 1055c67d6573Sopenharmony_ci Added RE2 and Tcl to the benchmark harness. Also added a CLI utility from 1056c67d6573Sopenharmony_ci running regexes using any of the following regex engines: PCRE1, PCRE2, 1057c67d6573Sopenharmony_ci Oniguruma, RE2, Tcl and of course Rust's own regexes. 1058c67d6573Sopenharmony_ci 1059c67d6573Sopenharmony_ci0.1.67 1060c67d6573Sopenharmony_ci====== 1061c67d6573Sopenharmony_ci* [PR #201](https://github.com/rust-lang/regex/pull/201): 1062c67d6573Sopenharmony_ci Fix undefined behavior in the `regex!` compiler plugin macro. 1063c67d6573Sopenharmony_ci* [PR #205](https://github.com/rust-lang/regex/pull/205): 1064c67d6573Sopenharmony_ci More improvements to DFA performance. Competitive with RE2. See PR for 1065c67d6573Sopenharmony_ci benchmarks. 1066c67d6573Sopenharmony_ci* [PR #209](https://github.com/rust-lang/regex/pull/209): 1067c67d6573Sopenharmony_ci Release 0.1.66 was semver incompatible since it required a newer version 1068c67d6573Sopenharmony_ci of Rust than previous releases. This PR fixes that. (And `0.1.66` was 1069c67d6573Sopenharmony_ci yanked.) 1070c67d6573Sopenharmony_ci 1071c67d6573Sopenharmony_ci0.1.66 1072c67d6573Sopenharmony_ci====== 1073c67d6573Sopenharmony_ci* Speculative support for Unicode word boundaries was added to the DFA. This 1074c67d6573Sopenharmony_ci should remove the last common case that disqualified use of the DFA. 1075c67d6573Sopenharmony_ci* An optimization that scanned for suffix literals and then matched the regular 1076c67d6573Sopenharmony_ci expression in reverse was removed because it had worst case quadratic time 1077c67d6573Sopenharmony_ci complexity. It was replaced with a more limited optimization where, given any 1078c67d6573Sopenharmony_ci regex of the form `re$`, it will be matched in reverse from the end of the 1079c67d6573Sopenharmony_ci haystack. 1080c67d6573Sopenharmony_ci* [PR #202](https://github.com/rust-lang/regex/pull/202): 1081c67d6573Sopenharmony_ci The inner loop of the DFA was heavily optimized to improve cache locality 1082c67d6573Sopenharmony_ci and reduce the overall number of instructions run on each iteration. This 1083c67d6573Sopenharmony_ci represents the first use of `unsafe` in `regex` (to elide bounds checks). 1084c67d6573Sopenharmony_ci* [PR #200](https://github.com/rust-lang/regex/pull/200): 1085c67d6573Sopenharmony_ci Use of the `mempool` crate (which used thread local storage) was replaced 1086c67d6573Sopenharmony_ci with a faster version of a similar API in @Amanieu's `thread_local` crate. 1087c67d6573Sopenharmony_ci It should reduce contention when using a regex from multiple threads 1088c67d6573Sopenharmony_ci simultaneously. 1089c67d6573Sopenharmony_ci* PCRE2 JIT benchmarks were added. A benchmark comparison can be found 1090c67d6573Sopenharmony_ci [here](https://gist.github.com/anonymous/14683c01993e91689f7206a18675901b). 1091c67d6573Sopenharmony_ci (Includes a comparison with PCRE1's JIT and Oniguruma.) 1092c67d6573Sopenharmony_ci* A bug where word boundaries weren't being matched correctly in the DFA was 1093c67d6573Sopenharmony_ci fixed. This only affected use of `bytes::Regex`. 1094c67d6573Sopenharmony_ci* [#160](https://github.com/rust-lang/regex/issues/160): 1095c67d6573Sopenharmony_ci `Captures` now has a `Debug` impl. 1096