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