NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
crates.io · #33 most downloaded on crates.io
An implementation of regular expressions for Rust. This implementation uses finite automata and guarantees linear time matching on all inputs.
Last release 2 months ago
15 Jul 2026
Release timing varies
gaps range from 2 weeks to 10 months
Nearly every release is documented
notes for 60 of the last 60 stable releases
4 versions withdrawn
withdrawn after publishing
12 years old
169 releases · first in 2014
This is a release that fixes a bug where incorrect regex match offsets could be reported. Note that this doesn't impact whether a match occurs or not,
This is a release that fixes a bug where incorrect regex match offsets could be reported. Note that this doesn't impact whether a match occurs or not, just where it occurs. The match offsets are still valid for slicing, they just may not refer to the correct leftmost-first match. See #1364 for (many) more details.
Bug fixes:
This release includes a new API, a regex! macro, for lazy compilation of a regex from a string literal. If you use regexes a lot, it's likely you've a
This release includes a new API, a regex! macro, for lazy compilation of
a regex from a string literal. If you use regexes a lot, it's likely you've
already written one exactly like it. The new macro can be used like this:
use regex::regex;
fn is_match(line: &str) -> bool {
// The regex will be compiled approximately once and reused automatically.
// This avoids the footgun of using `Regex::new` here, which would
// guarantee that it would be compiled every time this routine is called.
// This would likely make this routine much slower than it needs to be.
regex!(r"bar|baz").is_match(line)
}
let hay = "\
path/to/foo:54:Blue Harvest
path/to/bar:90:Something, Something, Something, Dark Side
path/to/baz:3:It's a Trap!
";
let matches = hay.lines().filter(|line| is_match(line)).count();
assert_eq!(matches, 2);
Improvements:
regex! macro for efficient and automatic reuse of a compiled regex.One column per quarter.
This release includes a performance optimization for compilation of regexes with very large character classes.
This release includes a performance optimization for compilation of regexes with very large character classes.
Improvements:
This release excludes some unnecessary things from the archive published to crates.io. Specifically, fuzzing data and various shell scripts are now ex
This release excludes some unnecessary things from the archive published to crates.io. Specifically, fuzzing data and various shell scripts are now excluded. If you run into problems, please file an issue.
Improvements:
exclude list to an include list, and exclude some
unnecessary stuff.This release fixes a cargo doc breakage on nightly when --cfg docsrs is enabled. This caused documentation to fail to build on docs.rs.
This release fixes a cargo doc breakage on nightly when --cfg docsrs is
enabled. This caused documentation to fail to build on docs.rs.
Bug fixes:
doc_auto_cfg feature to doc_cfg on nightly for docs.rs builds.There was an oversight with the lifetime parameter for the Match returned. This is technically a breaking change, but given that it was caught almost…
This release makes a bug fix in the new regex::Captures::get_match API
introduced in 1.12.0. There was an oversight with the lifetime parameter
for the Match returned. This is technically a breaking change, but given
that it was caught almost immediately and I've yanked the 1.12.0 release,
I think this is fine.
This release contains a smattering of bug fixes, a fix for excessive memory consumption in some cases and a new regex::Captures::get_match API.
This release contains a smattering of bug fixes, a fix for excessive memory
consumption in some cases and a new regex::Captures::get_match API.
Improvements:
Capture::get_match for returning the overall match without unwrap().Bug fixes:
regex 1.9).regex_automata::meta::Regex::find consistently return None when
WhichCaptures::None is used.This is a small patch release with an improvement in memory usage in some cases.
This is a small patch release with an improvement in memory usage in some cases.
Improvements:
This is a new patch release of regex with some minor fixes. A larger number of typo or lint fix patches were merged. Also, we now finally recommend us
This is a new patch release of regex with some minor fixes. A larger number
of typo or lint fix patches were merged. Also, we now finally recommend using
std::sync::LazyLock.
Improvements:
once_cell to std::sync::LazyLock.DFA::set_prefilter to regex-automata.Bug fixes:
This is a new patch release of regex that fixes compilation on nightly Rust when the unstable pattern crate feature is enabled. Users on nightly Rust
This is a new patch release of regex that fixes compilation on nightly
Rust when the unstable pattern crate feature is enabled. Users on nightly
Rust without this feature enabled are unaffected.
Bug fixes:
Pattern trait implementation as a result of nightly API breakage.This is a new minor release of regex that brings in an update to the Unicode Character Database. Specifically, this updates the Unicode data used by r
This is a new minor release of regex that brings in an update to the
Unicode Character Database. Specifically, this updates the Unicode data
used by regex internally to the version 16 release.
New features:
regex::SetMatches::matched_all method.This is a new patch release with a fix for the unstable crate feature that enables std::Pattern trait integration.
This is a new patch release with a fix for the unstable crate feature that
enables std::str::Pattern trait integration.
Bug fixes:
Pattern trait implementation as a result of nightly API breakage.This is a new patch release with some minor fixes.
This is a new patch release with some minor fixes.
Bug fixes:
Debug impl of regex::bytes::Match.This is a new patch release with some minor fixes.
This is a new patch release that fixes the feature configuration of optional dependencies, and fixes an unsound use of bounds check elision.
This is a new patch release that fixes a search regression where incorrect matches could be reported.
This is a new patch release that fixes a search regression where incorrect matches could be reported.
Bug fixes:
This is a new patch release with a minor increase in the number of valid patterns and a broadening of some literal optimizations.
This is a new patch release with a minor increase in the number of valid patterns and a broadening of some literal optimizations.
New features:
(?-u:☃) are now allowed.Performance improvements:
regex-automata breaking change release:
This is a new minor release of regex that adds support for start and end
word boundary assertions. That is, \< and \>. The minimum supported Rust
version has also been raised to 1.65, which was released about one year ago.
The new word boundary assertions are:
\< or \b{start}: a Unicode start-of-word boundary (\W|\A on the left,
\w on the right).\> or \b{end}: a Unicode end-of-word boundary (\w on the left, \W|\z
on the right).\b{start-half}: half of a Unicode start-of-word boundary (\W|\A on the
left).\b{end-half}: half of a Unicode end-of-word boundary (\W|\z on the
right).The \< and \> are GNU extensions to POSIX regexes. They have been added
to the regex crate because they enjoy somewhat broad support in other regex
engines as well (for example, vim). The \b{start} and \b{end} assertions
are aliases for \< and \>, respectively.
The \b{start-half} and \b{end-half} assertions are not found in any
other regex engine (although regex engines with general look-around support
can certainly express them). They were added principally to support the
implementation of word matching in grep programs, where one generally wants to
be a bit more flexible in what is considered a word boundary.
New features:
\< and \> word boundary assertions.start_state method that doesn't use an Input.Performance improvements:
regex-syntax.Bug fixes:
Ast->Hir translation (not reachable from regex
crate).u flag with a specific HIR
representation.regex-automata breaking change release:
This release includes a regex-automata 0.4.0 breaking change release, which
was necessary in order to support the new word boundary assertions. For
example, the Look enum has new variants and the LookSet type now uses u32
instead of u16 to represent a bitset of look-around assertions. These are
overall very minor changes, and most users of regex-automata should be able
to move to 0.4 from 0.3 without any changes at all.
regex-syntax breaking change release:
This release also includes a regex-syntax 0.8.0 breaking change release,
which, like regex-automata, was necessary in order to support the new word
boundary assertions. This release also includes some changes to the Ast
type to reduce heap usage in some cases. If you are using the Ast type
directly, your code may require some minor modifications. Otherwise, users of
regex-syntax 0.7 should be able to migrate to 0.8 without any code changes.
regex-lite release:
The regex-lite 0.1.1 release contains support for the new word boundary
assertions. There are no breaking changes.
This is a patch release that fixes a panic that can occur when the default regex size limit is increased to a large number.
This is a patch release that fixes a panic that can occur when the default regex size limit is increased to a large number.
This is a patch release that hopefully mostly fixes a performance bug that occurs when sharing a regex across multiple threads.
This is a patch release that hopefully mostly fixes a performance bug that occurs when sharing a regex across multiple threads.
Issue #934
explains this in more detail. It is also noted in the crate
documentation.
The bug can appear when sharing a regex across multiple threads simultaneously,
as might be the case when using a regex from a OnceLock, lazy_static or
similar primitive. Usually high contention only results when using many threads
to execute searches on small haystacks.
One can avoid the contention problem entirely through one of two methods.
The first is to use lower level APIs from regex-automata that require passing
state explicitly, such as meta::Regex::search_with.
The second is to clone a regex and send it to other threads explicitly. This
will not use any additional memory usage compared to sharing the regex. The
only downside of this approach is that it may be less convenient, for example,
it won't work with things like OnceLock or lazy_static or once_cell.
With that said, as of this release, the contention performance problems have been greatly reduced. This was achieved by changing the free-list so that it was sharded across threads, and that ensuring each sharded mutex occupies a single cache line to mitigate false sharing. So while contention may still impact performance in some cases, it should be a lot better now.
Because of the changes to how the free-list works, please report any issues you find with this release. That not only includes search time regressions but also significant regressions in memory usage. Reporting improvements is also welcome as well! If possible, provide a reproduction.
Bug fixes:
This is a patch release that fixes a bug where RegexSet::is_match(..) could incorrectly return false (even when RegexSet::matches(..).matched_any() re
This is a patch release that fixes a bug where RegexSet::is_match(..) could
incorrectly return false (even when RegexSet::matches(..).matched_any()
returns true).
Bug fixes:
RegexSet.This is a patch release that fixes a bug where some searches could result in incorrect match offsets being reported. It is difficult to characterize t
This is a patch release that fixes a bug where some searches could result in incorrect match offsets being reported. It is difficult to characterize the types of regexes susceptible to this bug. They generally involve patterns that contain no prefix or suffix literals, but have an inner literal along with a regex prefix that can conditionally match.
Bug fixes:
This is a patch release that fixes another memory usage regression. This particular regression occurred only when using a RegexSet. In some cases, muc
This is a patch release that fixes another memory usage regression. This
particular regression occurred only when using a RegexSet. In some cases,
much more heap memory (by one or two orders of magnitude) was allocated than in
versions prior to 1.9.0.
Bug fixes:
RegexSet.This is a patch release which fixes a memory usage regression. In the regex 1.9 release, one of the internal engines used a more aggressive allocation
This is a patch release which fixes a memory usage regression. In the regex 1.9 release, one of the internal engines used a more aggressive allocation strategy than what was done previously. This patch release reverts to the prior on-demand strategy.
Bug fixes:
This release marks the end of a years long rewrite of the regex crate internals. Since this is such a big release, please report any issues or regress
This release marks the end of a years long rewrite of the regex crate internals. Since this is such a big release, please report any issues or regressions you find. We would also love to hear about improvements as well.
In addition to many internal improvements that should hopefully result in "my regex searches are faster," there have also been a few API additions:
Captures::extract method for quickly accessing the substrings
that match each capture group in a regex.R, which enables CRLF mode. This makes . match any
Unicode scalar value except for \r and \n, and also makes (?m:^) and
(?m:$) match after and before both \r and \n, respectively, but never
between a \r and \n.RegexBuilder::line_terminator was added to further customize the line
terminator used by (?m:^) and (?m:$) to be any arbitrary byte.std Cargo feature is now actually optional. That is, the regex crate
can be used without the standard library.regex 1.9 may make binary size and compile times even worse, a
new experimental crate called regex-lite has been published. It prioritizes
binary size and compile times over functionality (like Unicode) and
performance. It shares no code with the regex crate.New features:
R flag.
e.g., (?mR:$) matches just before \r\n.regex-automata 0.3.std is now an optional feature. regex may be used with only alloc.RegexBuilder::line_terminator configures how (?m:^) and (?m:$) behave.regex-automata 0.3.Captures::extract method for easier capture group access.regex-lite crate with smaller binary sizes and faster compile times.TryFrom implementations for the Regex type.Performance improvements:
\w+@\w+ will scan
for @.\b(foo|bar|quux)\b.(There are many more performance improvements as well, but not all of them have specific issues devoted to them.)
Bug fixes:
\B and inconsistencies across internal engines.(re)+ were not equivalent to (re)(re)*.$.This is a patch release that fixes a bug where (?-u:\B) was allowed in Unicode regexes, despite the fact that the current matching engines can report
This is a patch release that fixes a bug where (?-u:\B) was allowed in
Unicode regexes, despite the fact that the current matching engines can report
match offsets between the code units of a single UTF-8 encoded codepoint. That
in turn means that match offsets that split a codepoint could be reported,
which in turn results in panicking when one uses them to slice a &str.
This bug occurred in the transition to regex 1.8 because the underlying
syntactical error that prevented this regex from compiling was intentionally
removed. That's because (?-u:\B) will be permitted in Unicode regexes in
regex 1.9, but the matching engines will guarantee to never report match
offsets that split a codepoint. When the underlying syntactical error was
removed, no code was added to ensure that (?-u:\B) didn't compile in the
regex 1.8 transition release. This release, regex 1.8.4, adds that code
such that Regex::new(r"(?-u:\B)") returns to the regex <1.8 behavior of
not compiling. (A bytes::Regex can still of course compile it.)
Bug fixes:
(?-u:\B) was allowed in Unicode regexes, and in turn could
lead to match offsets that split a codepoint in &str.This is a patch release that fixes a bug where the regex would report a match at every position even when it shouldn't. This could occur in a very sma
This is a patch release that fixes a bug where the regex would report a match at every position even when it shouldn't. This could occur in a very small subset of regexes, usually an alternation of simple literals that have particular properties. (See the issue linked below for a more precise description.)
Bug fixes:
This is a patch release that fixes a bug where regex compilation could panic in debug mode for regexes with large counted repetitions. For example, a{
This is a patch release that fixes a bug where regex compilation could panic
in debug mode for regexes with large counted repetitions. For example,
a{2147483516}{2147483416}{5} resulted in an integer overflow that wrapped
in release mode but panicking in debug mode. Despite the unintended wrapping
arithmetic in release mode, it didn't cause any other logical bugs since the
errant code was for new analysis that wasn't used yet.
Bug fixes:
This is a patch release that fixes a bug where a regex match could be reported where none was found. Specifically, the bug occurs when a pattern conta
This is a patch release that fixes a bug where a regex match could be reported where none was found. Specifically, the bug occurs when a pattern contains some literal prefixes that could be extracted and an optional word boundary in the prefix.
Bug fixes:
This is a sizeable release that will be soon followed by another sizeable release. Both of them will combined close over 40 existing issues and PRs.
This is a sizeable release that will be soon followed by another sizeable release. Both of them will combined close over 40 existing issues and PRs.
This first release, despite its size, essentially represents preparatory work for the second release, which will be even bigger. Namely, this release:
aho-corasick to the recently released 1.0
version.regex-syntax to the simultaneously released
0.7 version. The changes to regex-syntax principally revolve around a
rewrite of its literal extraction code and a number of simplifications and
optimizations to its high-level intermediate representation (HIR).The second release, which will follow ~shortly after the release above, will
contain a soup-to-nuts rewrite of every regex engine. This will be done by
bringing regex-automata into
this repository, and then changing the regex crate to be nothing but an API
shim layer on top of regex-automata's API.
These tandem releases are the culmination of about 3 years of on-and-off work that began in earnest in March 2020.
Because of the scale of changes involved in these releases, I would love to hear about your experience. Especially if you notice undocumented changes in behavior or performance changes (positive or negative).
Most changes in the first release are listed below. For more details, please see the commit log, which reflects a linear and decently documented history of all changes.
New features:
[0-9A-Za-z<>] can now be
escaped. Also, a new routine, is_escapeable_character, has been added to
regex-syntax to query whether a character is escapable or not.Regex::captures_at. This fills a hole in the API, but doesn't otherwise
introduce any new expressive power._
or any "alphabetic" codepoint. After the first codepoint, subsequent codepoints
can be any sequence of alphanumeric codepoints, along with _, ., [ and
]. Note that replacement syntax has not changed.Match::is_empty and Match::len APIs.impl Default for RegexSet, with the default being the empty set.Regex::static_captures_len, has been added which returns the
number of capture groups in the pattern if and only if every possible match
always contains the same number of matching groups.(?<name>re) in addition to
(?P<name>re).regex-syntax now supports empty character classes.regex-syntax now has an optional std feature. (This will come
to regex in the second release.)Hir type in regex-syntax has had a number of simplifications
made to it.regex-syntax has support for a new R flag for enabling CRLF
mode. This will be supported in regex proper in the second release.regex-syntax now has proper support for "regex that never
matches" via Hir::fail().hir::literal module of regex-syntax has been completely
re-worked. It now has more documentation, examples and advice.allow_invalid_utf8 option in regex-syntax has been renamed
to utf8, and the meaning of the boolean has been flipped.Performance improvements:
aho-corasick 1.0 may improve performance in some
cases. It's difficult to characterize exactly which patterns this might impact,
but if there are a small number of longish (>= 4 bytes) prefix literals, then
it might be faster than before.Bug fixes:
Debug impl for Match so that it doesn't show the entire haystack.Hir values as regex patterns.foo|bar in the regex syntax docs.SetMatches::len does not (regrettably) refer to the number of
matches in the set.CaptureLocations::get so that it never panics.Regex::shortest_match.\p{Sc} so that it is equivalent to \p{Currency_Symbol}.CompiledTooBig error variant.regex::Regex searches as if the haystack is a sequence of
Unicode scalar values.__Nonexhaustive variants with #[non_exhaustive] attribute.(?-u:\W) in regex::Regex APIs.void keyword to indicate "no parameters" in C API.\p{Lc} so that it is equivalent to \p{Cased_Letter}.\pX syntax.This is a small release that fixes a bug in Regex::shortest_match_at that could cause it to panic, even when the offset given is valid.
This is a small release that fixes a bug in Regex::shortest_match_at that
could cause it to panic, even when the offset given is valid.
Bug fixes:
Regex::shortest_match_at.This is a small release that fixes a failing test on FreeBSD.
This is a small release that fixes a failing test on FreeBSD.
Bug fixes:
This release was done principally to try and fix the doc.rs rendering for the regex crate.
This release principally includes an upgrade to Unicode 15.
This release principally includes an upgrade to Unicode 15.
New features:
This release principally includes an upgrade to Unicode 14.
This release principally includes an upgrade to Unicode 14.
New features:
Captures::len includes all groups, not just matching groups.ExactSizeIterator impl for SubCaptureMatches.RegexSet documentation examples.Bug fixes:
This release includes a few bug fixes, including a bug that produced incorrect matches when a non-greedy ? operator was used.
This release includes a few bug fixes, including a bug that produced incorrect
matches when a non-greedy ? operator was used.
This releases fixes a security bug in the regex compiler. This bug permits a vector for a denial-of-service attack in cases where the regex being comp
This releases fixes a security bug in the regex compiler. This bug permits a vector for a denial-of-service attack in cases where the regex being compiled is untrusted. There are no known problems where the regex is itself trusted, including in cases of untrusted haystacks.
This release fixes another compilation failure when building regex. This time, the fix is for when the pattern feature is enabled, which only works on
This release fixes another compilation failure when building regex. This time,
the fix is for when the pattern feature is enabled, which only works on
nightly Rust. CI has been updated to test this case.
pattern feature is enabled.This releases fixes a bug when building regex with only the unicode-perl feature. It turns out that while CI was building this configuration, it wasn'
This releases fixes a bug when building regex with only the unicode-perl
feature. It turns out that while CI was building this configuration, it wasn't
actually failing the overall build on a failed compilation.
regex-syntax when only the unicode-perl feature is enabled.This release fixes a performance bug when Unicode word boundaries are used. Namely, for certain regexes on certain inputs, it's possible for the lazy
This release fixes a performance bug when Unicode word boundaries are used. Namely, for certain regexes on certain inputs, it's possible for the lazy DFA to stop searching (causing a fallback to a slower engine) when it doesn't actually need to.
PR #768 fixes the bug, which was originally reported in ripgrep#1860.
This is a patch release that fixes a compilation error when the perf-literal feature is not enabled.
This is a patch release that fixes a compilation error when the perf-literal
feature is not enabled.
This release primarily updates to Rust 2018 (finally) and bumps the MSRV to Rust 1.41 (from Rust 1.28). Rust 1.41 was chosen because it's still reason
This release primarily updates to Rust 2018 (finally) and bumps the MSRV to Rust 1.41 (from Rust 1.28). Rust 1.41 was chosen because it's still reasonably old, and is what's in Debian stable at the time of writing.
This release also drops this crate's own bespoke substring search algorithms
in favor of a new
memmem implementation provided by the memchr crate.
This will change the performance profile of some regexes, sometimes getting a
little worse, and hopefully more frequently, getting a lot better. Please
report any serious performance regressions if you find them.
This is a small patch release that fixes the compiler's size check on how much heap memory a regex uses. Previously, the compiler did not account for
This is a small patch release that fixes the compiler's size check on how much heap memory a regex uses. Previously, the compiler did not account for the heap usage of Unicode character classes. Now it does. It's possible that this may make some regexes fail to compile that previously did compile. If that happens, please file an issue.
This is a small patch release that fixes a regression in the size of a Regex in the 1.4.4 release. Prior to 1.4.4, a Regex was 552 bytes. In the 1.4.4
This is a small patch release that fixes a regression in the size of a Regex
in the 1.4.4 release. Prior to 1.4.4, a Regex was 552 bytes. In the 1.4.4
release, it was 856 bytes due to internal changes. In this release, a Regex
is now 16 bytes. In general, the size of a Regex was never something that was
on my radar, but this increased size in the 1.4.4 release seems to have crossed
a threshold and resulted in stack overflows in some programs.
Regex size by decreasing
its size.This is a small patch release that contains some bug fixes. Notably, it also drops the thread_local (and lazy_static, via transitivity) dependencies.
This is a small patch release that contains some bug fixes. Notably, it also
drops the thread_local (and lazy_static, via transitivity) dependencies.
Bug fixes:
This is a small patch release that adds some missing standard trait implementations for some types in the public API.
This is a small bug fix release that bans \P{any}. We previously banned empty classes like [^\w\W], but missed the \P{any} case. In the future, we hop
This is a small bug fix release that bans \P{any}. We previously banned empty
classes like [^\w\W], but missed the \P{any} case. In the future, we hope
to permit empty classes.
\P{any} to avoid a panic in the regex compiler. Found by OSS-Fuzz.This is a small bug fix release that makes \p{cf} work. Previously, it would report "property not found" even though cf is a valid abbreviation for th
This is a small bug fix release that makes \p{cf} work. Previously, it would
report "property not found" even though cf is a valid abbreviation for the
Format general category.
\p{cf} from working.This releases has a few minor documentation fixes as well as some very minor API additions. The MSRV remains at Rust 1.28 for now, but this is intende
This releases has a few minor documentation fixes as well as some very minor API additions. The MSRV remains at Rust 1.28 for now, but this is intended to increase to at least Rust 1.41.1 soon.
This release also adds support for OSS-Fuzz. Kudos to @DavidKorczynski for doing the heavy lifting for that!
New features:
[, ] and . in capture group names.is_empty predicate to RegexSet.Clone for SubCaptureMatches.empty constructor to RegexSet for convenience.Bug fixes:
This release fixes a MSRV (Minimum Support Rust Version) regression in the 1.3.8 release. Namely, while 1.3.8 compiles on Rust 1.28, it actually does
This release fixes a MSRV (Minimum Support Rust Version) regression in the 1.3.8 release. Namely, while 1.3.8 compiles on Rust 1.28, it actually does not compile on other Rust versions, such as Rust 1.39.
Bug fixes:
doc_comment crate, which cannot be used before Rust 1.43.This release contains a couple of important bug fixes driven by better support for empty-subexpressions in regexes. For example, regexes like b| are n
This release contains a couple of important bug fixes driven
by better support for empty-subexpressions in regexes. For
example, regexes like b| are now allowed. Major thanks to
@sliquister for implementing support for this
in #677.
Bug fixes:
This release contains a small bug fix that fixes how regex forwards crate features to regex-syntax. In particular, this will reduce recompilations in
This release contains a small bug fix that fixes how regex forwards crate
features to regex-syntax. In particular, this will reduce recompilations in
some cases.
Bug fixes:
regex-syntax.This release contains a sizable (~30%) performance improvement when compiling some kinds of large regular expressions.
This release contains a sizable (~30%) performance improvement when compiling some kinds of large regular expressions.
Performance improvements:
This release updates this crate to Unicode 13.
This release updates this crate to Unicode 13.
New features:
regex-syntax to Unicode 13.This is a small bug fix release that fixes a bug related to the scoping of flags in a regex. Namely, before this fix, a regex like ((?i)a)b) would mat
This is a small bug fix release that fixes a bug related to the scoping of
flags in a regex. Namely, before this fix, a regex like ((?i)a)b) would
match aB despite the fact that b should not be matched case insensitively.
Bug fixes:
This is a small maintenance release that upgrades the dependency on thread_local from 0.3 to 1.0. The minimum supported Rust version remains at Rust 1
This is a small maintenance release that upgrades the dependency on
thread_local from 0.3 to 1.0. The minimum supported Rust version remains
at Rust 1.28.
BUG #633: Squash deprecation warnings for the std::Error::description method.
This is a small maintenance release with some house cleaning and bug fixes.
New features:
Match::range method an a From<Match> for Range impl.Bug fixes:
This is a maintenance release with no changes in order to try to work around a docs.rs/Cargo issue.
This is a maintenance release with no changes in order to try to work around a docs.rs/Cargo issue.
FEATURE #474: The use_std feature has been deprecated in favor of the std feature. The use_std feature will be removed in regex 2. Until then, use_std…
This release adds a plethora of new crate features that permit users of regex
to shrink its size considerably, in exchange for giving up either functionality
(such as Unicode support) or runtime performance. When all such features are
disabled, the dependency tree for regex shrinks to exactly 1 crate
(regex-syntax). More information about the new crate features can be
found in the docs.
Note that while this is a new minor version release, the minimum supported
Rust version for this crate remains at 1.28.0.
New features:
use_std feature has been deprecated in favor of the std feature.
The use_std feature will be removed in regex 2. Until then, use_std will
remain as an alias for the std feature.regex.The utf8-ranges crate has been deprecated, with its functionality moving into the `utf8` sub-module of `regex-syntax`.
This release does a bit of house cleaning. Namely:
regex crate, and is now part of the
aho-corasick crate.
See aho-corasick's new packed submodule for details.utf8-ranges crate has been deprecated, with its functionality moving
into the
utf8 sub-module of regex-syntax.ucd-util dependency has been dropped, in favor of implementing what
little we need inside of regex-syntax itself.In general, this is part of an ongoing (long term) effort to make optimizations
in the regex engine easier to reason about. The current code is too convoluted,
and thus it is very easy to introduce new bugs. This simplification effort is
the primary motivation behind re-working the aho-corasick crate to not only
bundle algorithms like Teddy, but to also provide regex-like match semantics
automatically.
Moving forward, the plan is to join up with the bstr and regex-automata
crates, with the former providing more sophisticated substring search
algorithms (thereby deleting existing code in regex) and the latter providing
ahead-of-time compiled DFAs for cases where they are inexpensive to compute.
Your coding agent can read these notes before it upgrades. Set up the MCP server →