|
| 1 | +1.8.0 (TBD) |
| 2 | +=========== |
| 3 | +This is a sizeable release that will be soon followed by another sizeable |
| 4 | +release. Both of them will combined close over 40 existing issues and PRs. |
| 5 | + |
| 6 | +This first release, despite its size, essentially represent preparatory work |
| 7 | +for the second release, which will be even bigger. Namely, this release: |
| 8 | + |
| 9 | +* Increases the MSRV to Rust 1.60.0, which was released about 1 year ago. |
| 10 | +* Upgrades its dependency on `aho-corasick` to the recently release 1.0 |
| 11 | +version. |
| 12 | +* Upgrades its dependency on `regex-syntax` to the simultaneously released |
| 13 | +`0.7` version. The changes to `regex-syntax` principally revolve around a |
| 14 | +rewrite of its literal extraction code and a number of simplifications and |
| 15 | +optimizations to its high-level intermediate representation (HIR). |
| 16 | + |
| 17 | +The second release, which will follow ~shortly after the release above, will |
| 18 | +contain a soup-to-nuts rewrite of every regex engine. This will be done by |
| 19 | +bringing [`regex-automata`](https://github.com/BurntSushi/regex-automata) into |
| 20 | +this repository, and then changing the `regex` crate to be nothing but an API |
| 21 | +shim layer on top of `regex-automata`'s API. |
| 22 | + |
| 23 | +These tandem releases are the culmination of about 3 |
| 24 | +years of on-and-off work that [began in earnest in March |
| 25 | +2020](https://github.com/rust-lang/regex/issues/656). |
| 26 | + |
| 27 | +Because of the scale of changes involved in these releases, I would love to |
| 28 | +hear about your experience. Especially if you notice undocumented changes in |
| 29 | +behavior or performance changes (positive *or* negative). |
| 30 | + |
| 31 | +Most changes in the first release are listed below. For more details, please |
| 32 | +see the commit log, which reflects a linear and decently documented history |
| 33 | +of all changes. |
| 34 | + |
| 35 | +New features: |
| 36 | + |
| 37 | +* [FEATURE #501](https://github.com/rust-lang/regex/issues/501): |
| 38 | +Permit many more characters to be escaped, even if they have no significance. |
| 39 | +More specifically, any character except for `[0-9A-Za-z<>]` can now be |
| 40 | +escaped. Also, a new routine, `is_escapeable_character`, has been added to |
| 41 | +`regex-syntax` to query whether a character is escapeable or not. |
| 42 | +* [FEATURE #547](https://github.com/rust-lang/regex/issues/547): |
| 43 | +Add `Regex::captures_at`. This filles a hole in the API, but doesn't otherwise |
| 44 | +introduce any new expressive power. |
| 45 | +* [FEATURE #595](https://github.com/rust-lang/regex/issues/595): |
| 46 | +Capture group names are now Unicode-aware. They can now begin with either a `_` |
| 47 | +or any "alphabetic" codepoint. After the first codepoint, subsequent codepoints |
| 48 | +can be any sequence of alpha-numeric codepoints, along with `_`, `.`, `[` and |
| 49 | +`]`. Note that replacement syntax has not changed. |
| 50 | +* [FEATURE #810](https://github.com/rust-lang/regex/issues/810): |
| 51 | +Add `Match::is_empty` and `Match::len` APIs. |
| 52 | +* [FEATURE #905](https://github.com/rust-lang/regex/issues/905): |
| 53 | +Add an `impl Default for RegexSet`, with the default being the empty set. |
| 54 | +* [FEATURE #908](https://github.com/rust-lang/regex/issues/908): |
| 55 | +A new method, `Regex::static_captures_len`, has been added which returns the |
| 56 | +number of capture groups in the pattern if and only if every possible match |
| 57 | +always contains the same number of matching groups. |
| 58 | +* [FEATURE #955](https://github.com/rust-lang/regex/issues/955): |
| 59 | +Named captures can now be written as `(?<name>re)` in addition to |
| 60 | +`(?P<name>re)`. |
| 61 | +* FEATURE: `regex-syntax` now supports empty character classes. |
| 62 | +* FEATURE: `regex-syntax` now has an optional `std` feature. (This will come |
| 63 | +to `regex` in the second release.) |
| 64 | +* FEATURE: The `Hir` type in `regex-syntax` has had a number of simplifications |
| 65 | +made to it. |
| 66 | +* FEATURE: `regex-syntax` has support for a new `R` flag for enabling CRLF |
| 67 | +mode. This will be supported in `regex` proper in the second release. |
| 68 | +* FEATURE: `regex-syntax` now has proper support for "regex that never |
| 69 | +matches" via `Hir::fail()`. |
| 70 | +* FEATURE: The `hir::literal` module of `regex-syntax` has been completely |
| 71 | +re-worked. It now has more documentation, examples and advice. |
| 72 | +* FEATURE: The `allow_invalid_utf8` option in `regex-syntax` has been renamed |
| 73 | +to `utf8`, and the meaning of the boolean has been flipped. |
| 74 | + |
| 75 | +Performance improvements: |
| 76 | + |
| 77 | +Bug fixes: |
| 78 | + |
| 79 | +* [BUG #514](https://github.com/rust-lang/regex/issues/514): |
| 80 | +Improve `Debug` impl for `Match` so that it doesn't show the entire haystack. |
| 81 | +* BUGS [#516](https://github.com/rust-lang/regex/issues/516), |
| 82 | +[#731](https://github.com/rust-lang/regex/issues/731): |
| 83 | +Fix a number of issues with printing `Hir` values as regex patterns. |
| 84 | +* [BUG #610](https://github.com/rust-lang/regex/issues/610): |
| 85 | +Add explicit example of `foo|bar` in the regex syntax docs. |
| 86 | +* [BUG #625](https://github.com/rust-lang/regex/issues/625): |
| 87 | +Clarify that `SetMatches::len` does not (regretably) refer to the number of |
| 88 | +matches in the set. |
| 89 | +* [BUG #660](https://github.com/rust-lang/regex/issues/660): |
| 90 | +Clarify "verbose mode" in regex syntax documentation. |
| 91 | +* BUG [#738](https://github.com/rust-lang/regex/issues/738), |
| 92 | +[#950](https://github.com/rust-lang/regex/issues/950): |
| 93 | +Fix `CaptureLocations::get` so that it never panics. |
| 94 | +* [BUG #747](https://github.com/rust-lang/regex/issues/747): |
| 95 | +Clarify documentation for `Regex::shortest_match`. |
| 96 | +* [BUG #835](https://github.com/rust-lang/regex/issues/835): |
| 97 | +Fix `\p{Sc}` so that it is equivalent to `\p{Currency_Symbol}`. |
| 98 | +* [BUG #846](https://github.com/rust-lang/regex/issues/846): |
| 99 | +Add more clarifying documentation to the `CompiledTooBig` error variant. |
| 100 | +* [BUG #854](https://github.com/rust-lang/regex/issues/854): |
| 101 | +Clarify that `regex::Regex` searches as if the haystack is a sequence of |
| 102 | +Unicode scalar values. |
| 103 | +* [BUG #884](https://github.com/rust-lang/regex/issues/884): |
| 104 | +Replace `__Nonexhaustive` variants with `#[non_exhaustive]` attribute. |
| 105 | +* [BUG #893](https://github.com/rust-lang/regex/pull/893): |
| 106 | +Optimize case folding since it can get quite slow in some pathological cases. |
| 107 | +* [BUG #895](https://github.com/rust-lang/regex/issues/895): |
| 108 | +Reject `(?-u:\W)` in `regex::Regex` APIs. |
| 109 | +* [BUG #942](https://github.com/rust-lang/regex/issues/942): |
| 110 | +Add a missing `void` keyword to indicate "no parameters" in C API. |
| 111 | +* [BUG #965](https://github.com/rust-lang/regex/issues/965): |
| 112 | +Fix `\p{Lc}` so that it is equivalent to `\p{Cased_Letter}`. |
| 113 | +* [BUG #975](https://github.com/rust-lang/regex/issues/975): |
| 114 | +Clarify documentation for `\pX` syntax. |
| 115 | + |
| 116 | + |
| 117 | + |
1 | 118 | 1.7.3 (2023-03-24)
|
2 | 119 | ==================
|
3 | 120 | This is a small release that fixes a bug in `Regex::shortest_match_at` that
|
@@ -743,7 +860,7 @@ Bug gixes:
|
743 | 860 | ==================
|
744 | 861 | This release includes a ground-up rewrite of the regex-syntax crate, which has
|
745 | 862 | been in development for over a year.
|
746 |
| - |
| 863 | +731 |
747 | 864 | New features:
|
748 | 865 |
|
749 | 866 | * Error messages for invalid regexes have been greatly improved. You get these
|
|
0 commit comments