Optimize NaiveDate::add_days for small values (#1214)
Upgrade pure-rust-locales to 0.7.0 (#1288, thanks @jeremija wo did good improvements on pure-rust-locales)
Thanks to all contributors on behalf of the chrono team, @djc and @pitdicker!
0.4.30
In this release, we have decided to swap out the chrono::Duration type (which has been a re-export of time 0.1 Duration type) with our own definition, which exposes a strict superset of the time::Duration API. This helps avoid warnings about the [CVE-2020-26235] and [RUSTSEC-2020-0071] advisories for downstream users and allows us to improve the Duration API going forward.
This is a patch release that fixes a panic that can occur when the default
regex size limit is increased to a large number.
BUG aa4e4c71:
Fix a bug where computing the maximum haystack length for the bounded
backtracker could result underflow and thus provoke a panic later in a search
due to a broken invariant.
1.9.5 (2023-09-02)
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:
[BUG #934](rust-lang/regex#934):
Fix a performance bug where high contention on a single regex led to massive
slow downs.
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency
- `@dependabot ignore major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)
- `@dependabot ignore minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)
- `@dependabot ignore ` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore ` will remove all of the ignore conditions of the specified dependency
- `@dependabot unignore ` will remove the ignore condition of the specified dependency and ignore conditions
Bumps the deps group with 8 updates:
0.4.28
0.4.31
4.4.2
4.4.6
2.0.0
2.0.2
3.1.0
3.1.1
1.9.4
1.9.6
0.37.0
0.38.0
1.0.18
1.0.19
1.1.0
1.2.0
Updates
chrono
from 0.4.28 to 0.4.31Release notes
Sourced from chrono's releases.
... (truncated)
Commits
e730c6a
Bump version to 0.4.312afdde8
fix: underflow during datetime->nanos conversion46ad2c2
AddUNIX_EPOCH
constants1df8db3
Add TimeZone::timestamp_micros861d4e1
Make TimeZone::timestamp_millis_opt use3c4846a
Upgrade pure-rust-locales to 0.7.06665804
Deny leap second if secs != 59 infrom_num_seconds_from_midnight_opt
61b7ffb
Deny leap second if secs != 59 infrom_hms_nano_opt
202af6c
Don't generate leap seconds that are not 60 in NaiveTime's Arbitrary impl60283ab
Don't create strange leap seconds in testsUpdates
clap
from 4.4.2 to 4.4.6Release notes
Sourced from clap's releases.
Changelog
Sourced from clap's changelog.
Commits
39f5e80
chore: Releasea5cb6bb
docs: Update changelog418c001
Merge pull request #5146 from epage/update485b957
chore: Upgrade anstreama1af8d9
chore: Update from '_rust/main'ac51f09
chore(ci): Normalize json5 syntax86c29de
chore(ci): Updaet Renovate schemaUpdates
indexmap
from 2.0.0 to 2.0.2Changelog
Sourced from indexmap's changelog.
Commits
67e67dd
Merge pull request #277 from cuviper/release-2.0.29de727d
Release 2.0.2 with complete MSRV 1.63fbd129f
Merge pull request #276 from cuviper/release-2.0.19dcae76
Release 2.0.1 withrust-version = "1.63"
2eaf59c
Merge pull request #275 from cuviper/safe-swap8e03753
UseRawTable::get_many_mut
for safeswap_indices
0604c5b
Merge pull request #273 from your-diary/docs/indexset77c58aa
Improve explanation aboutIndexSet
's complexity.9469a1b
Merge pull request #272 from daxpedda/minimal-versions8360847
Testdirect-minimal-versions
Updates
path-absolutize
from 3.1.0 to 3.1.1Commits
0882f98
update MSRV9bbf46a
Merge pull request #16 from magiclen/dependabot/github_actions/actions/checko...cedbe6d
Bump actions/checkout from 3 to 4Updates
regex
from 1.9.4 to 1.9.6Changelog
Sourced from regex's changelog.
Commits
11b4443
1.9.63dda425
deps: bump regex-automata to 0.3.903f00bd
regex-automata-0.3.9e467408
changelog: 1.9.6aa4e4c7
automata: fix unintended panic in max_haystack_len27a2538
automata: add some #[inline] annotations061ee81
readme: visually emphasize performance criteria difference8275c1b
doc: fix a few typoscdc0dbd
readme: add section about performance and benchmarks4aaf389
ci: pin to memchr 2.6.2 for MSRV CI jobUpdates
self_update
from 0.37.0 to 0.38.0Changelog
Sourced from self_update's changelog.
Commits
Updates
semver
from 1.0.18 to 1.0.19Release notes
Sourced from semver's releases.
Commits
72a6b5a
Release 1.0.1983abc7f
Relocate comparator parse testing2d34e8f
Touch up PR 299 test cases5e09329
More comprehensible excessive version comparator test473209f
Merge pull request #299 from CXWorks/mastercb07901
Update actions/checkout@v3 -> v4fff3f40
Revert "Temporarily disable -Zrandomize-layout due to rustc ICE"2399480
Temporarily disable -Zrandomize-layout due to rustc ICEb074ea0
Resolve incorrect_partial_ord_impl_on_ord_type clippy lint2d50313
Add missed test casesUpdates
shlex
from 1.1.0 to 1.2.0Changelog
Sourced from shlex's changelog.
Commits
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting
@dependabot rebase
.Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show