Skip to content

Commit 8161ac8

Browse files
committed
changelog: add entry for regex 1.8
This will need to be updated again to add a date (maybe today?), but this should cover everything from the commit log.
1 parent 8ae2a54 commit 8161ac8

File tree

1 file changed

+118
-1
lines changed

1 file changed

+118
-1
lines changed

Diff for: CHANGELOG.md

+118-1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,120 @@
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+
1118
1.7.3 (2023-03-24)
2119
==================
3120
This is a small release that fixes a bug in `Regex::shortest_match_at` that
@@ -743,7 +860,7 @@ Bug gixes:
743860
==================
744861
This release includes a ground-up rewrite of the regex-syntax crate, which has
745862
been in development for over a year.
746-
863+
731
747864
New features:
748865

749866
* Error messages for invalid regexes have been greatly improved. You get these

0 commit comments

Comments
 (0)