fix(deps): update all dependencies #2
Reference in New Issue
Block a user
No description provided.
Delete Branch "renovate/all"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
This PR contains the following updates:
1.0.71->1.0.1000.4.26->0.4.424.3.4->4.5.530.6->0.81.28.2->1.48.0Release Notes
dtolnay/anyhow (anyhow)
v1.0.100Compare Source
bail!,ensure!,anyhow!(#426)v1.0.99Compare Source
v1.0.98Compare Source
self.into_boxed_dyn_error()andself.reallocate_into_boxed_dyn_error_without_backtrace()methods for anyhow::Error (#415)v1.0.97Compare Source
v1.0.96Compare Source
v1.0.95Compare Source
Error::from_boxed(#401, #402)v1.0.94Compare Source
v1.0.93Compare Source
thiserrorv2v1.0.92Compare Source
&raw constand&raw mutsyntax insideensure!(#390)v1.0.91Compare Source
v1.0.90Compare Source
v1.0.89Compare Source
UnwindSafeandRefUnwindSafeimpl consistently available between versions of Rust newer and older than 1.72 (#386)v1.0.88Compare Source
v1.0.87Compare Source
Error::newandError::chain, in no-std mode on Rust 1.81+ (#383)v1.0.86Compare Source
ensure!with non-literal after minus sign (#373)v1.0.85Compare Source
ensure!macro's rules to unblock some rustc pretty-printer improvements (#368, #371)v1.0.84Compare Source
ensure!through aNotimpl for a type that is notbool(#367)v1.0.83Compare Source
v1.0.82Compare Source
v1.0.81Compare Source
v1.0.80Compare Source
v1.0.79Compare Source
v1.0.78Compare Source
v1.0.77Compare Source
anyhow::Error::backtraceavailable on stable Rust compilers 1.65+ (#293, thanks @LukasKalbertodt)v1.0.76Compare Source
unsafe_op_in_unsafe_fnlint (#329)v1.0.75Compare Source
v1.0.74Compare Source
v1.0.73Compare Source
v1.0.72Compare Source
chronotope/chrono (chrono)
v0.4.42: 0.4.42Compare Source
What's Changed
wasm32-linuxsupport by @arjunr2 in https://github.com/chronotope/chrono/pull/1707tzdataparsing by @ldm0 in https://github.com/chronotope/chrono/pull/1679?Sizedbound to related methods ofDelayedFormat::write_toby @Huliiiiii in https://github.com/chronotope/chrono/pull/1721from_timestamp_secsmethod toDateTimeby @jasonaowen in https://github.com/chronotope/chrono/pull/1719v0.4.41Compare Source
What's Changed
subsec_microsandsubsec_millismethods toTimeDeltaby @ggoetz in https://github.com/chronotope/chrono/pull/1668NaiveDateTime::UNIX_EPOCHby @robertbastian in https://github.com/chronotope/chrono/pull/1670as_seconds_f32andas_seconds_f64forTimeDeltaby @ggoetz in https://github.com/chronotope/chrono/pull/1671num_days_in_monthmethod toDateliketrait by @aslilac in https://github.com/chronotope/chrono/pull/1673WeekdaySet, a collection ofWeekdaythat isCopyby @Kinrany in https://github.com/chronotope/chrono/pull/1676v0.4.40: 0.4.40Compare Source
What's Changed
write_toforDelayedFormatby @tugtugtug in https://github.com/chronotope/chrono/pull/1654v0.4.39: 0.4.39Compare Source
What's Changed
from_timestamp_nanos()by @sgoll in https://github.com/chronotope/chrono/pull/1591NaiveWeekmethods by @bragov4ik in https://github.com/chronotope/chrono/pull/1600PartialEq,Eq,Hash,CopyandCloneonNaiveWeekby @DSeeLP in https://github.com/chronotope/chrono/pull/1618#[inline]tonum_daysby @CommanderStorm in https://github.com/chronotope/chrono/pull/1627v0.4.38Compare Source
This release bring a ca. 20% improvement to the performance of the formatting code, and a convenient
days_sincemethod for theWeekdaytype.Chrono 0.4.38 also removes the long deprecated
rustc-serializefeature. Support forrustc-serializewill be soft-destabilized in the next Rust edition. Removing the feature will not break existing users of the feature; Cargo will just not update dependents that rely on it to newer versions of chrono.In chrono 0.4.36 we made an accidental breaking change by switching to
derive(Copy)forDateTimeinstead of a manual implementation. It is reverted in this release.Removals
rustc-serializefeature (#1548, thanks @workingjubilee)Additions
Weekday::days_since(#1249, based on #216 by @clarfonthey)TimeDelta::checked_mulandTimeDelta::checked_div(#1565, thanks @Zomtir)Fixes
CopyforDateTimeif offset isCopy(#1573)Internal
test_encodable_jsonandtest_decodable_jsonfunctions (#1550)cargo hack check(#1553)Thanks to all contributors on behalf of the chrono team, @djc and @pitdicker!
v0.4.37Compare Source
Version 0.4.36 introduced an unexpected breaking change and was yanked. In it
LocalResultwas renamed toMappedLocalTimeto avoid the impression that it is aResulttype were some of the results are errors. For backwards compatibility a type alias with the old name was added.As it turns out there is one case where a type alias behaves differently from the regular enum: you can't import enum variants from a type alias with
use chrono::LocalResult::*. With 0.4.37 we make the new nameMappedLocalTimethe alias, but keep using it in function signatures and the documentation as much as possible.See also the release notes of chrono 0.4.36 from yesterday for the yanked release.
v0.4.36Compare Source
This release un-deprecates the methods on
TimeDeltathat were deprecated with the 0.4.35 release because of the churn they are causing for the ecosystem.New is the
DateTime::with_time()method. As an example of when it is useful:Additions
DateTime::with_time()(#1510)Deprecations
TimeDeltadeprecations (#1543)TimeStamp::timestamp_subsec_nanos, which was missed in the 0.4.35 release (#1486)Documentation
Internal
CopyandSendimpls (#1492, thanks @erickt)NaiveDateunit tests (#1500, thanks @Zomtir)LocalResulttoTzResolution, add alias (#1501)NaiveDate::from_yof(#1518)DateTime::date_naiveandNaiveDate::diff_months(#1530)unwrapin UnixLocaltype (#1533)Thanks to all contributors on behalf of the chrono team, @djc and @pitdicker!
v0.4.35Compare Source
Most of our efforts have shifted to improving the API for a 0.5 release, for which cleanups and refactorings are landing on the 0.4.x branch.
The most significant changes in this release are two sets of deprecations.
We deprecated all timestamp-related methods on
NaiveDateTime. The reason is that a timestamp is defined to be in UTC. TheNaiveDateTimetype doesn't know the offset from UTC, so it was technically wrong to have these methods. The alternative is to use the similar methods on theDateTime<Utc>type, or from theTimeZonetrait.Converting from
NaiveDateTimetoDateTime<Utc>is simple with.and_utc(), and in the other direction with.naive_utc().The panicking constructors of
TimeDelta(the new name of theDurationtype) are deprecated. This was the last part of chrono that defaulted to panicking on error, dating from before rust 1.0.A nice change is that
NaiveDatenow includes a niche. So nowOption<NaiveDate>,Option<NaiveDateTime>andOption<DateTime<Tz>>are the same size as their base types.format::Numericandformat::Fixedare marked asnon_exhaustive. This will allow us to improve our formatting and parsing support, and we have reason to believe this breaking change will have little to no impact on users.Additions
DateTime::{from_timestamp_micros, from_timestamp_nanos}(#1234)Parsed(#1465)Deprecations
NaiveDateTime(#1473)TimeDelta(#1450)Changes/fixes
NonZeroI32insideNaiveDate(#1207)format::Numericandformat::Fixedasnon_exhaustive(#1430)Parsedfixes to error values (#1439)overflowing_naive_localinDateTime::checked_add*(#1333)Parsed::set_*(#1465)Documentation
Parsed(#1439)Internal
internalsmodule (#1428, #1429, #1431, #1432, #1433, #1438)x86_64-unknown-illumosinstead of Solaris (#1437)cargo hack checkon Linux (#1442)parse_internal(#1459)SerdeError(#1458)NaiveDate::from_isoywda bit (#1464)Thanks to all contributors on behalf of the chrono team, @djc and @pitdicker!
v0.4.34Compare Source
Notable changes
Durationtype toTimeDelta. This removes the confusion between chrono's type and the laterDurationtype in the standard library. It will remain available under the old name as a type alias for compatibility.Localis rewritten. The new version avoids panics when the date is outside of the range supported by windows (the years 1601 to 30828), and gives more accurate results during DST transitions.Displayformat ofTimeDeltais modified to conform better to ISO 8601. Previously it converted all values greater than 24 hours to a value with days. This is not correct, as doing so changes the duration from an 'accurate' to a 'nominal' representation to use ISO 8601 terms.Fixes
TimeDelta::milliseconds(#1385, thanks @danwilliams)DurationExceedsTimestampinDurationRound(#1403, thanks @joroKr21)%X(https://github.com/chronotope/pure-rust-locales/pull/12, #1420)GetTimeZoneInformationForYear(#1017)Additions
TimeDelta::try_milliseconds(#1385, thanks @danwilliams)TimeDelta::new(#1337)StrftimeItems::{parse, parse_to_owned}and more documentation (#1184)format::Locale(via https://github.com/chronotope/pure-rust-locales/pull/8)Changes
DurationtoTimeDelta, add type alias (#1406)TimeDeltamethods const (#1337)NaiveDate,NaiveWeek,NaiveTimeandNaiveDateTimeconst where possible (#1337)DateTimeconst where possible (#1400)Displayformat ofTimeDeltaconform better to ISO 8601 (#1328)Documentation
timestamp_micros's Example doc (#1338 via #1386, thanks @emikitas)TimeDeltaconstructors (#1385, thanks @danwilliams)Internal
mainbranch, work on 0.5 happens in the0.5.xbranch (#1390, #1402).impl Arbitrary for DateTimeand set up CI test (#1336)codecov/codecov-actionfrom 3 to 4 (#1404)-0000offset (#1411)TOO_LONGerror out ofparse_internal(#1419)Thanks to all contributors on behalf of the chrono team, @djc and @pitdicker!
v0.4.33Compare Source
This release fixes the broken docrs.rs build of chrono 0.4.32.
What's Changed
rkyvfeature implysize_32(#1383)Duration::hours()exception (#1384, thanks @danwilliams)v0.4.32Compare Source
In this release we shipped part of the effort to reduce the number of methods that could unexpectedly panic, notably for the
DateTimeandDurationtypes.Chrono internally stores the value of a
DateTimein UTC, and transparently converts it to the local value as required. For example adding a second to aDateTimeneeds to be done in UTC to get the correct result, but adding a day needs to be done in local time to be correct. What happens when the value is near the edge of the representable range, and the implicit conversions pushes it beyond the representable range? Many methods could panic on such inputs, including formatting the value forDebugoutput.In chrono 0.4.32 the range of
NaiveDate,NaiveDateTimeandDateTimeis made slightly smaller. This allows us to always do the implicit conversion, and in many cases return the expected result. Specifically the range is now from January 1, -262144 until December 31, 262143, one year less on both sides than before. We expect this may trip up tests if you hardcoded theMINandMAXdates.Durationhad a similar issue. The range of this type was pretty arbitrary picked to match the range of ani64in milliseconds. Negating ani64::MINpushes a value out of range, and in the same way negatingDuration::MINcould push it out of our defined range and cause a panic. This turns out to be somewhat common and hidden behind many layers of abstraction. We adjusted the type to have a minimum value of-Duration::MAXinstead and prevent the panic case.Other highlights:
Durationgained new fallible initialization methods.rkyv.NaiveDateTimeare now const.DateTimeconst in a future release.Complete list of changes:
Fixes
TimeZone::from_local_datetime(#1071)DateTimegetters and setters (#1317, #1329)Additions
NaiveDateTime::checked_(add|sub)_offset(#1313)DateTime::to_utc(#1325)DefaultforDuration(#1327)Duration::subsec_nanos(#1327)try_*builders toDuration(#1327)AddAssignandSubAssignforDuration(#1327)NaiveDateTimeconst where possible (#1286)clockfeature intoclockandnow(#1343, thanks @mmastrac)From<NaiveDate>forNaiveDateTime(#1355, thanks @dcechano)NaiveDateTime::from_timestamp_nanos(#1357, thanks @Ali-Mirghasemi)Months::num_months()andnum_years()(#1373, thanks @danwilliams)DateTime<Utc>::from_timestamp_millis(#1374, thanks @xmakro)Changes
Duration::MIN.abs()(adjustDuration::MINby 1 millisecond) (#1334)Deprecations
formatfunctions (#1306)Documentation
doc_auto_cfg(#1305, #1326)Add/Subimpls and useexpect(#1316)TimeZone::datetime_from_str(#1342, thanks @tmccombs)Datelikeimpl forDateTime(#1376, thanks @ElectrifyPro)Rkyv support
Archived*types inrkyvmodule (#1304)Archived*types (#1271, thanks @Awpteamoose)Changes to unstable features
unstable-localesimply theallocfeature (#1307)format::{format_localized, format_item_localized}(#1311)write_rfc2822_inner, don't localize (#1322)Internal
DateTime::with_*(#1309)*_DAYS_FROM_YEAR_0calculation (#1312)NaiveTime::overflowing_(add|sub)_offset(#1310)DateTime::overflowing_(add|sub)_offset(#1069)set env LC_ALL(#1315, thanks @jtmoon79)deny.toml(#1320)with: node-version(#1352, thanks @jtmoon79)tomljob (#1371, thanks @gibbz00)Thanks to all contributors on behalf of the chrono team, @djc and @pitdicker!
v0.4.31Compare Source
Another maintenance release.
It was not a planned effort to improve our support for UNIX timestamps, yet most PRs seem related to this.
Deprecations
timestamp_nanosin favor of the non-panickingtimestamp_nanos_opt(#1275)Additions
DateTime::<Utc>::from_timestamp(#1279, thanks @demurgos)TimeZone::timestamp_micros(#1285, thanks @emikitas)DateTime<Tz>::timestamp_nanos_optandNaiveDateTime::timestamp_nanos_opt(#1275)UNIX_EPOCHconstants (#1291)Fixes
This makes many methods a little more strict:
NaiveTime::from_hms_milliNaiveTime::from_hms_milli_optNaiveTime::from_hms_microNaiveTime::from_hms_micro_optNaiveTime::from_hms_nanoNaiveTime::from_hms_nano_optNaiveTime::from_num_seconds_from_midnightNaiveTime::from_num_seconds_from_midnight_optNaiveDate::and_hms_milliNaiveDate::and_hms_milli_optNaiveDate::and_hms_microNaiveDate::and_hms_micro_optNaiveDate::and_hms_nanoNaiveDate::and_hms_nano_optNaiveDateTime::from_timestampNaiveDateTime::from_timestamp_optTimeZone::timestampTimeZone::timestamp_optNaiveDateTime::timestamp_nanos_opt(#1294, thanks @crepererum)Documentation
Internal
__doctestfeature anddoc_commentdependency (#1276)actions/checkoutfrom 3 to 4 (#1280)NaiveDate::add_daysfor small values (#1214)pure-rust-localesto 0.7.0 (#1288, thanks @jeremija wo did good improvements onpure-rust-locales)Thanks to all contributors on behalf of the chrono team, @djc and @pitdicker!
v0.4.30Compare Source
In this release, we have decided to swap out the
chrono::Durationtype (which has been a re-export of time 0.1Durationtype) with our own definition, which exposes a strict superset of thetime::DurationAPI. This helps avoid warnings about the CVE-2020-26235 and RUSTSEC-2020-0071 advisories for downstream users and allows us to improve theDurationAPI going forward.While this is technically a SemVer-breaking change, we expect the risk of downstream users experiencing actual incompatibility to be exceedingly limited (see our analysis of public code using a crater-like experiment), and not enough justification for the large ecosystem churn of a 0.5 release. If you have any feedback on these changes, please let us know in #1268.
Additions
NaiveDate::leap_year(#1261)Documentation
Timelike::num_seconds_from_midnightis a simple mapping (#1255)Relation between chrono and time 0.1
Rust first had a
timemodule added tostdin its 0.7 release. It later moved tolibextra, and then to alibtimelibrary shipped alongside the standard library. In 2014 work on chrono started in order to provide a full-featured date and time library in Rust. Some improvements from chrono made it into the standard library; notably,chrono::Durationwas included asstd::time::Duration(rust#15934) in 2014.In preparation of Rust 1.0 at the end of 2014
libtimewas moved out of the Rust distro and into thetimecrate to eventually be redesigned (rust#18832, rust#18858), like thenumandrandcrates. Of course chrono kept its dependency on thistimecrate.timestarted re-exportingstd::time::Durationduring this period. Later, the standard library was changed to have a more limited unsignedDurationtype (rust#24920, RFC 1040), while thetimecrate kept the full functionality withtime::Duration.time::Durationhad been a part of chrono's public API.By 2016
time0.1 lived under therust-lang-deprecatedorganisation and was not actively maintained (time#136). chrono absorbed the platform functionality andDurationtype of thetimecrate in chrono#478 (the work started in chrono#286). In order to preserve compatibility with downstream crates depending ontimeandchronosharing aDurationtype, chrono kept depending on time 0.1. chrono offered the option to opt out of thetimedependency by disabling theoldtimefeature (swapping it out for an effectively similar chrono type). In 2019, @jhpratt took over maintenance on thetimecrate and released what amounts to a new crate astime0.2.Security advisories
In November of 2020 CVE-2020-26235 and RUSTSEC-2020-0071 were opened against the
timecrate. @quininer had found that calls tolocaltime_rmay be unsound (chrono#499). Eventually, almost a year later, this was also made into a security advisory against chrono as RUSTSEC-2020-0159, which had platform code similar totime.On Unix-like systems a process is given a timezone id or description via the
TZenvironment variable. We need this timezone data to calculate the current local time from a value that is in UTC, such as the time from the system clock.time0.1 and chrono used the POSIX functionlocaltime_rto do the conversion to local time, which reads theTZvariable.Rust assumes the environment to be writable and uses locks to access it from multiple threads. Some other programming languages and libraries use similar locking strategies, but these are typically not shared across languages. More importantly, POSIX declares modifying the environment in a multi-threaded process as unsafe, and
getenvin libc can't be changed to take a lock because it returns a pointer to the data (see rust#27970 for more discussion).Since version 4.20 chrono no longer uses
localtime_r, instead using Rust code to query the timezone (from theTZvariable or viaiana-time-zoneas a fallback) and work with data from the system timezone database directly. The code for this was forked from the tz-rs crate by @x-hgg-x. As such, chrono now respects the Rust lock when reading theTZenvironment variable. In general, code should avoid modifying the environment.Removing time 0.1
Because time 0.1 has been unmaintained for years, however, the security advisory mentioned above has not been addressed. While chrono maintainers were careful not to break backwards compatibility with the
time::Durationtype, there has been a long stream of issues from users inquiring about the time 0.1 dependency with the vulnerability. We investigated the potential breakage of removing the time 0.1 dependency in chrono#1095 using a crater-like experiment and determined that the potential for breaking (public) dependencies is very low. We reached out to those few crates that did still depend on compatibility with time 0.1.As such, for chrono 0.4.30 we have decided to swap out the time 0.1
Durationimplementation for a local one that will offer a strict superset of the existing API going forward. This will prevent most downstream users from being affected by the security vulnerability in time 0.1 while minimizing the ecosystem impact of semver-incompatible version churn.Thanks to all contributors on behalf of the chrono team, @djc and @pitdicker!
v0.4.29Compare Source
This release fixes a panic introduced in chrono 0.4.27 in
FromStr<DateTime<Utc>>(#1253).Chrono now has a Discord channel.
Fixes
parse_rfc3339_relaxed(#1254)Deprecations
TimeZone::datetime_from_str(#1251)Documentation
FromStrforWeekdayandMonth(#1226, thanks @wfraser)Internal improvements
i686andwasm32-wasi(#1237)This allows us to upgrade the criterion dependency to 5.1 without changing our MSRV.
Thanks to all contributors on behalf of the chrono team, @djc and @pitdicker!
v0.4.28Compare Source
This release fixes a test failure on 32-bit targets introduced with 0.4.27, see https://github.com/chronotope/chrono/issues/1234.
v0.4.27Compare Source
This release bumps the MSRV from 1.56 to 1.57. This allows us to take advantage of the panicking in const feature. In this release most methods on
NaiveDateandNaiveTimeare made const,NaiveDateTimeand others will follow in a later release.The parser for the
%+formatting specifier and theRFC3339formatting item is switched from a strict to a relaxed parser (see https://github.com/chronotope/chrono/pull/1145). This matches the existing documentation, and the parser used byDateTime::from_str. If you need to validate the input, consider usingDateTime::from_rfc3339.Deprecations
DateTime::{from_local, from_utc}(https://github.com/chronotope/chrono/pull/1175)Additions
DateTime::signed_duration_sincetake argument withBorrow(https://github.com/chronotope/chrono/pull/1119)PartialOrdforMonth(https://github.com/chronotope/chrono/pull/999, thanks @Munksgaard)OrdandEqfor types which already derivePartialOrdandPartialEq(https://github.com/chronotope/chrono/pull/1128, thanks @totikom)FusedIteratorforNaiveDateDaysIteratorandNaiveDateWeeksIterator(https://github.com/chronotope/chrono/pull/1134)NaiveDateDaysIteratorandNaiveDateWeeksIteratorpublic (https://github.com/chronotope/chrono/pull/1134)FromStrforFixedOffset(https://github.com/chronotope/chrono/pull/1157, thanks @mcronce)Tz::Offset: Displayrequirement fromDateTime::to_rfc*(https://github.com/chronotope/chrono/pull/1160)StrftimeItemswithunstable-localeswork without allocating (https://github.com/chronotope/chrono/pull/1152)NaiveDate::from_ymd_optconst (https://github.com/chronotope/chrono/pull/1172, thanks @kamadorueda)Errortrait forParseWeekdayErrorandParseMonthError(https://github.com/chronotope/chrono/pull/539, thanks @mike-kfed)NaiveTimeconst, update MSRV to 1.57 (https://github.com/chronotope/chrono/pull/1080)NaiveDateconst (https://github.com/chronotope/chrono/pull/1205)core::time::DurationonDateTimetypes (https://github.com/chronotope/chrono/pull/1229)Fixes
timestamp_nanospanics on overflow in release builds (https://github.com/chronotope/chrono/pull/1123)offset_from_local_datetimeforwasm_bindgen(https://github.com/chronotope/chrono/pull/1131)%sto be a timestamp in UTC (https://github.com/chronotope/chrono/pull/1136)%#z(https://github.com/chronotope/chrono/pull/1140, thanks @domodwyer)%cand%r(https://github.com/chronotope/chrono/pull/1165)unstable-localesfeature (https://github.com/chronotope/chrono/pull/1168)Offset'sDebugimpl when serializingDateTime(https://github.com/chronotope/chrono/pull/1035)NaiveTime::from_str(https://github.com/chronotope/chrono/pull/1181)android-tzdataif theclockfeature is not enabled (https://github.com/chronotope/chrono/pull/1220, thanks @AlexTMjugador)Documentation
NaiveTimedoc typo (https://github.com/chronotope/chrono/pull/1146, thanks @zachs18)Datelike::with_*(https://github.com/chronotope/chrono/pull/1199)Utc::nowandLocal::now(https://github.com/chronotope/chrono/pull/1192)Weekday::num_days_from_monday(https://github.com/chronotope/chrono/pull/1193)Internal improvements
DateTime::to_rfc_*optimizations (https://github.com/chronotope/chrono/pull/1200)format/formatting.rs(https://github.com/chronotope/chrono/pull/1156)saturating_abs(https://github.com/chronotope/chrono/pull/1124)Makefile(https://github.com/chronotope/chrono/pull/1133)wasm-bindgenfeature (https://github.com/chronotope/chrono/pull/1131)try_verify_against_date_command(https://github.com/chronotope/chrono/pull/1161)no_std(https://github.com/chronotope/chrono/pull/1166)test_parse(https://github.com/chronotope/chrono/pull/1170)#test_date_extreme_offset(https://github.com/chronotope/chrono/pull/1195)features-check(https://github.com/chronotope/chrono/pull/1216)Thanks to all contributors on behalf of the chrono team, @djc and @pitdicker!
clap-rs/clap (clap)
v4.5.53Compare Source
Features
default_values_if,default_values_ifsv4.5.52Compare Source
Fixes
args_conflicts_with_subcommandsconflicts with anArgGroupv4.5.51Compare Source
Fixes
ArgAction::Countv4.5.50Compare Source
Features
CowwhereStringand&strare acceptedv4.5.49Compare Source
Fixes
v4.5.48Compare Source
Documentation
typed_derivecookbook entryv4.5.47Compare Source
Features
impl FromArgMatches for ()impl Args for ()impl Subcommand for ()impl FromArgMatches for Infallibleimpl Subcommand for InfallibleFixes
clapv4.5.46Compare Source
Features
StyledStr::push_strv4.5.45Compare Source
Fixes
ValueEnumvariants now use the full doc comment, not summary, forPossibleValue::helpv4.5.44Compare Source
Features
Command::mut_subcommandsv4.5.43Compare Source
Fixes
v4.5.42Compare Source
Fixes
--helpv4.5.41Compare Source
Features
Styles::contextandStyles::context_valueto customize the styling of[default: value]like notes in the--helpv4.5.40Compare Source
Features
arg!()macro (e.g.arg!("check-config": ...))v4.5.39Compare Source
Fixes
v4.5.38Compare Source
Fixes
--or-v4.5.37Compare Source
Features
ArgMatches::try_clear_id()v4.5.36Compare Source
Fixes
v4.5.35Compare Source
Fixes
help_headingv4.5.34Compare Source
Fixes
flatten_help(true)and subcommands without argumentsv4.5.33Compare Source
Fixes
v4.5.32Compare Source
Features
Error::removeDocumentation
humantimetojiffInternal
pulldown-cmarkv4.5.31Compare Source
Features
ValueParserFactoryforSaturating<T>v4.5.30Compare Source
Fixes
num_args(0..=1)to be used withSetTruetakes_valuesassertionsv4.5.29Compare Source
Fixes
ArgMatches::args_presentso not-present flags are considered not-present (matching the documentation)v4.5.28Compare Source
Features
unstable-markdownv4.5.27Compare Source
Documentation
v4.5.26Compare Source
Fixes
suggestionsfeaturev4.5.25Compare Source
Fixes
v4.5.24Compare Source
Fixes
ignore_errors(true)and when a suggestion is provided for an unknown argumentv4.5.23Compare Source
Fixes
allow_negative_numbers, allowEagainv4.5.22Compare Source
Fixes
v4.5.21Compare Source
Fixes
ignore_errors(true)v4.5.20Compare Source
Features
CommandExtv4.5.19Compare Source
Internal
v4.5.18Compare Source
Features
Arg::get_display_orderandCommand::get_display_orderv4.5.17Compare Source
Fixes
v4.5.16Compare Source
Fixes
derivefeature is missingv4.5.15Compare Source
Compatiblity
Arg::removechanged return typesFixes
Arg::removereturn the removed itemv4.5.14Compare Source
Features
Arg::addfor attaching arbitrary state, like completion hints, toArgwithoutArgknowing about itv4.5.13Compare Source
Fixes
#[flatten]ing an optional#[group(skip)]v4.5.12Compare Source
v4.5.11Compare Source
v4.5.10Compare Source
v4.5.9Compare Source
Fixes
v4.5.8Compare Source
Fixes
v4.5.7Compare Source
Fixes
num_argsv4.5.6Compare Source
v4.5.5Compare Source
Features
default_values_if,default_values_ifsv4.5.4Compare Source
Fixes
v4.5.3Compare Source
Fixes
v4.5.2Compare Source
Fixes
ArgMatches::args_presentso not-present flags are considered not-present (matching the documentation)v4.5.1Compare Source
Internal
v4.5.0Compare Source
Compatibility
v4.4.18Compare Source
Fixes
usagefeature, ensure the list of required arguments is uniquev4.4.17Compare Source
Fixes
panic!when mixingargs_conflicts_with_subcommandswithArgGroup(which is implicit withderive) introduced in 4.4.15v4.4.16Compare Source
Fixes
v4.4.15Compare Source
Fixes
args_conflicts_with_subcommandsargs_conflicts_with_subcommandswhen using subcommand short and long flagsv4.4.14Compare Source
Documentation
findcookbook entry to allow repeats of flags/optionsFeatures
num_args(0)on options which allows making them emulate being a flag for position-tracking flagsv4.4.13Compare Source
Documentation
v4.4.12Compare Source
Performance
TypedValueParserfor possible values if neededv4.4.11Compare Source
Features
Command::mut_groupv4.4.10Compare Source
Documentation
v4.4.9Compare Source
Fixes
Command::aboutunder flattened headingshidewhen flattening subcommandsv4.4.8Compare Source
Features
Command::flatten_helpto allowgit stash -hlike help for subcommandsv4.4.7Compare Source
Performance
v4.4.6Compare Source
Internal
anstreamv4.4.5Compare Source
Fixes
nameorlong_flag, allow ambiguous-looking matches that unambiguously map back to the same commandlong_flag, don't panicv4.4.4Compare Source
Internal
terminal_sizeto 0.3v4.4.3Compare Source
Documentation
v4.4.2Compare Source
Performance
once_celldependencyv4.4.1Compare Source
Fixes
usagefeature, ensure the list of required arguments is uniquev4.4.0Compare Source
compatibility
v4.3.24Compare Source
Fixes
--helpwith custom templatesv4.3.23Compare Source
Fixes
UnknownArgumentValueParserto not error on flag's absencev4.3.22Compare Source
Features
UnknownArgumentValueParserfor injecting errors for improving the experience with errorsv4.3.21Compare Source
Features
TryMapValueParserso the type can be namedv4.3.20Compare Source
Features
Command::mut_argsfor modifying all arguments en massev4.3.19Compare Source
Fixes
value_terminatoreven in the presence of later multiple-value positional argumentsv4.3.18Compare Source
Fixes
--in fewer places where it won't workv4.3.17Compare Source
Fixes
PossibleValuedescriptions in--helpv4.3.16Compare Source
Fixes
v4.3.15Compare Source
Features
anstyleDocumentation
v4.3.14Compare Source
Features
ArgAction::HelpShortandArgAction::HelpLongfor explicitly specifying which style of help to displayFixes
[OPTIONS]in usage if a help or versionArgActionis usedv4.3.13Compare Source
v4.3.12Compare Source
Fixes
v4.3.11Compare Source
Features
num::Wrapping,Box, orArcBox<str>,Box<OsStr>, andBox<Path>v4.3.10Compare Source
Performance
v4.3.9Compare Source
Fixes
Command::ignore_errorsno longer masks help/versionv4.3.8Compare Source
Fixes
infer_long_arg, rather than arbitrarily picking one, matching the documentation and subcommand's behaviorv4.3.7Compare Source
Documentation
v4.3.6Compare Source
Documentation
cliov4.3.5Compare Source
ColorChoice::possible_valuesis added to simplify things for builder usersFixes
ColorChoice::to_possible_valueno longer includes descriptions, encouraging shorter help where possiblelaunchbadge/sqlx (sqlx)
v0.8.6Compare Source
9 pull requests were merged this release cycle.
Added
Changed
tempfiledependency [[@paolobarbolini]]Fixed
attrubutetypo in doc [[@kujeger]]v0.8.5Hotfix release to address two new issues:
sqlx-cli@0.8.4broke.envdefault resolution mechanismsqlx@0.8.4broke test fixture setupThe
0.8.4release will be yanked as of publishing this one.Added
sqlx-clinow accepts--no-dotenvin subcommand arguments.sqlx-clito CI.#[sqlx::test]twice in CI to cover cleanup.Fixed
sqlx-clicorrectly reads.envfiles by default again.#[sqlx::test].v0.8.450 pull requests were merged this release cycle.
Added
push_valuesis passed an empty set of tuples [[@chanmaoganda]]transaction_depththroughget_transaction_depth()method [[@mpyw]]Connection::is_in_transactionin [#3765]begin_withmethods to support database-specific transaction options [[@bonsairobo]]Changed
#[track_caller]toRow::get()[[@karambarakat]]futures-core/futures-utilAPIs withstdvariants [[@paolobarbolini]]Fixed
SQLITE_OPEN_URIon in-memory sqlite [[@LecrisUT]]PgCopyIn[[@joeydewaal]]CARGO_MANIFEST_DIR[[@joeydewaal]]limit: 0for allExecutemessagesCertificateInput::frominfer any PEM-encoded documentPGSSLKEYnot being parsed correctly when containing a PEM-encoded private key.PgConnectOptionsPGHOSTADDRnow can be used to overridePGHOST.v0.8.3Compare Source
41 pull requests were merged this release cycle.
Added
Uuidanduuid::fmt::Hyphenated[[@abonander]]Changed
.pgpassfile warning to a debug message. [[@denschub]]PgListener::try_recv[[@swlynch99]]UNION ALLinstead ofUNIONin nullable check [[@Suficio]]Fixed
no-transactionflag in down migrations [[@manifest]]sqlformat[[@tbar4]]query_as[[@xuehaonan27]]INTERVAL[][[@Ddystopia]]EXPLAINin nullability check for QuestDB [[@Suficio]]v0.8.2Compare Source
10 pull requests were merged this release cycle.
This release addresses a few regressions that have occurred, and refines SQLx's MSRV policy (see the FAQ).
Added
Changed
Cargo.tomlfiles in examples [[@carschandler]]Fixed
#[sqlx(no_pg_array)]being forbidden on#[derive(Type)]structs.PgListener,PgStream::recv()[[@abonander]]unknown message: "\\0"errorv0.8.1Compare Source
16 pull requests were merged this release cycle.
This release contains a fix for RUSTSEC-2024-0363.
Postgres users are advised to upgrade ASAP as a possible exploit has been demonstrated:
#3440 (comment)
MySQL and SQLite do not appear to be exploitable, but upgrading is recommended nonetheless.
Added
MySqlConnectOptions::no_engine_substitution()[[@kolinfluence]]MySqlConnectOptions::no_engine_subsitution()(oops) in favor of the correctly spelled version.Changed
spec_errormodule [[@abonander]]Use at your own risk.
libsqlite3-sys=0.30.1to support sqlite 3.46 [[@CommanderStorm]]ring(the existing implementation),and
aws-lc-rswhich has optional FIPS certification.runtime-tokio-rustls,runtime-async-std-rustls,tls-rustls)enable the
ringprovider of RusTLS to match the existing behavior so this should not be a breaking change.tls-rustls-aws-lc-rsfeature to use theaws-lc-rsprovider.runtime-tokio-rustlsorruntime-async-std-rustls,this will necessitate switching to the appropriate non-legacy runtime feature:
runtime-tokioorruntime-async-stdFixed
sqlx::Type[[@alu]]node12inSQLxaction [[@hamirmahal]]v0.18.1to avoid yankedv0.14.3[[@CommanderStorm]]v0.8.0Compare Source
70 pull requests were merged this release cycle.
#2697 was merged the same day as release 0.7.4 and so was missed by the automatic CHANGELOG generation.
Breaking
#[sqlx::test]usages are applied in the correct order now.MigrateError.-- no-transactionto the beginning.Migrationi64as intermediate when decoding [[@abonander]]#[derive(sqlx::Type)]in Postgres [[@abonander]]#[sqlx(no_pg_array)]where conflicts occur.PgTypeInfo::with_name()infers types that start with_to be arrays of the un-prefixed type. Wrap type names in quotes to bypass this behavior.FromRow, returnError::ColumnDecodeforTryFromerrors [[@abonander]]#[sqlx(try_from = "T")]now returnError::ColumnDecodeinstead ofError::ColumnNotFound.#[sqlx(default)]on an individual field or the struct itself would have previously suppressed the error.This doesn't seem like good behavior as it could result in some potentially very difficult bugs.
Fromand apply the default explicitly.#[sqlx(rename)]and#[sqlx(rename_all)]to match the expected behavior (renamewins).ConnectOptions::to_url_lossy()to match what parsing expects.Added
MySqlTime, auditmysql::typesfor panics [[@abonander]]NonZero*scalar types [[@AlphaKeks]]Changed
Sendtrait bound from argument binding [[@bobozaur]]libsqlite3-sysare not considered breaking changes as per our semver guarantees.MySqlConnectionto reduce sizes of futures [[@stepantubanov]]sqlx migrate add ...[[@CommanderStorm]]Fixed
ConnectionHandleRawtype [[@abonander]]docker composeinstead ofdocker-compose[[@abonander]]pathownership problems when usingsqlx_macros_unstable[[@lily-mosquitoes]]sqlx_postgres::any[[@Zarathustra2]]migrateerror message. (#3275) [[@nk9]]persistentquery setting when preparing queries with theAnydriver [[@etorreborre]]select_input_type!()being unhygenic [[@CommanderStorm]]MorCNotice fields are not UTF-8 [[@YgorSouza]]json-feature should activatesqlx-postgres?/jsonas well [[@CommanderStorm]]clockandstdfeatures ofworkspace.dependencies.chrono.v0.7.4Compare Source
38 pull requests were merged this release cycle.
This is officially the last release of the 0.7.x release cycle.
As of this release, development of 0.8.0 has begun on
mainand only high-priority bugfixes may be backported.Added
to_url_lossyto connect options [[@lily-mosquitoes]]query!for cargo-free systems [[@kshramt]]raw_sqlAPI [[@abonander]]prepared statement interfaces
query*()andquery!().query*()functions.execute_many()andfetch_many()on interfaces that use prepared statements.interface is the only way to execute SQL. All other database flavors forbid multiple statements in
one prepared statement string as an extra defense against SQL injection.
raw_sqlAPI retains this functionality because it explicitly does not use prepared statements.Raw or text-mode query interfaces generally allow multiple statements in one query string, and this is
supported by all current databases. Due to their nature, however, one cannot use bind parameters with them.
Changed
create_newinstead ofatomic-file-write[[@mattfbacon]]PgConnectOptions[[@Fyko]]#[sqlx::test][[@ciffelia]]Fixed
sqlx::migrate::Migrator.migrate!().v0.7.3Compare Source
38 pull requests were merged this release cycle.
Added
fixtures_pathin sqlx::test args [[@ripa1995]]fn PgConnectOptions::get_host(&self)[[@boris-lok]]FromRowfor the unit type [[@nanoqsh]]MySqlConnectOptions::get_database()[[@shiftrightonce]]Textadapter [[@abonander]]Changed
BOOLEANand the query macros [[@abonander]]NUMERICsupport [[@abonander]]libsqlite3-systo 0.27.0libsqlite3-sysis considered semver-exempt;see the release notes for 0.7.0 below for details.
Fixed
rust_decimal::Decimalfor high-precision values [[@abonander]]sqlx migrate addhelp text [[@cryeprecision]]try_stream!()[[@abonander]]cargo build[[@nyurik]]AtomicUsizefor thread IDs [[@abonander]]v0.7.2Compare Source
23 pull requests were merged this release cycle.
Added
FromRowderive [[@95ulisse]]Type,Decode, andEncodeforBox<str>andBox<[u8]>[[@grant0417]]Changed
remove_dir_allcrate fromsqlx-cli, fixes RUSTSEC-2023-0018 [[@aldur]]Fixed
min_connections[[@hakoerber]]v0.7.1Compare Source
This release mainly addresses issues reported with the 0.7.0 release.
16 pull requests were merged this release cycle.
Added
PgHasArrayTypewith#[derive(sqlx::Type)][[@abonander]]#[derive(sqlx::Type)]with#[sqlx(transparent)]regarding
PgHasArrayTypenot being implemented, add#[sqlx(no_pg_array)]to fix.Changed
Fixed
CloneforPoolOptionsmanually (#2548) [[@alilleybrinker]]tls-native-tlsin the documentation. [[@denschub]]v0.7.0Compare Source
At least 70 pull requests were merged this release cycle! (The exact count is muddied with pull requests for alpha
releases and such.) And we gained 43 new contributors! Thank you to everyone who helped make this release a reality.
Breaking
Many revisions were made to query analysis in the SQLite driver; these are all potentially breaking changes
as they can change the output of
sqlx::query!()et al. We'd like to thank [[@tyrelr]] for their numerous PRs tothis area.
The MSSQL driver has been removed as it was not nearly at the same maturity level as the other drivers.
As previously announced, we have plans to introduce a fully featured replacement as a premium offering,
alongside drivers for other proprietary databases, with the goal to support full-time development on SQLx.
If interested, please email your inquiry to sqlx@launchbadge.com.
The offline mode for the queries has been changed to use a separate file per
query!()invocation,which is intended to reduce the number of conflicts when merging branches in a project that both modified queries.
This means that CLI flag
--mergedis no longer supported. See [#2363] for details and make sure that yoursqlx-cliversion is in sync with thesqlxversion in your project.The type ascription override syntax for the query macros has been deprecated,
as parse support for it has been removed in
syn 2.0, which we'll be upgrading to in the next breaking release.This can be replaced with type overrides using casting syntax (
as).See [#2483] for details.
mssqlfeature and associated database driver has been deleted from the source tree. It will return as part of our planned SQLx Pro offering as a from-scratch rewrite with extra features (such as TLS) and type integrations that were previously missing.runtime-actix-*features have been deleted. They were previously changed to be aliases of theirruntime-tokio-*counterparts for backwards compatibility reasons, but their continued existence is misleading as SQLx has no special knowledge of Actix anymore.runtime-actix-*feature with itsruntime-tokio-*equivalent.git2feature has been removed. This was a requested integration from a while ago that over time made less and less sense to be part of SQLx itself. We have to be careful with the crates we add to our public API as each one introduces yet another semver hazard. The expected replacement is to make#[derive(sqlx::Type)]useful enough that users can write wrapper types for whatever they want to use without SQLx needing to be specifically aware of it.Executorimpls forTransactionandPoolConnectionhave been deleted because they cannot exist in the new crate architecture without rewriting theExecutortrait entirely.impl Executoris expected, as they both dereference to the inner connection type which will still implement it:&mut transaction->&mut *transaction&mut connection->&mut *connectionthe driver crates cannot provide their own impls due to the orphan rule.
This will mean another major release of SQLx but ideally most API usage will not need to change significantly, if at all.
Migratorare now#[doc(hidden)]and semver-exempt; they weren't meant to be public.offlinefeature has been removed from thesqlxfacade crate and is enabled unconditionally as most users are expected to have enabled it anyway and disabling it doesn't seem to appreciably affect compile times.decimalfeature has been renamed torust_decimalto match the crate it actually provides integrations for.AnyDriverandAnyConnectionnow require eithersqlx::any::install_drivers()orsqlx::any::install_default_drivers()to be called at some point during the process' lifetime before the first connection is made, as the set of possible drivers is now determined at runtime. This was determined to be the least painful way to provide knowledge of database drivers toAnywithout them being hardcoded.AnyEncodetrait has been removed.libsqlite3-systo be semver-exempt,and we reserve the right to upgrade it as necessary. If you are using
libsqlite3-sysdirectly or a crate thatlinks it such as
rusqlite, you should pin the versions of both crates to avoid breakages fromcargo update:time: Assume UTC when decoding a DATETIME column in sqlite [[@nstinus]]OffsetDateTimeto be the first type used when deserializing atimestamptype.Added
try_fromwhen derivingFromRow[[@95ulisse]]PRAGMA optimize;on close of a connection [[@miles170]]Connection::shrink_buffers,PoolConnection::close[[@abonander]]sqlx_macros_unstablein config.toml [[@df51d]]AsMutfor advisory lock types (#2520) [[@alilleybrinker]]Changed
tracing[[@CosmicHorrorDev]]let elsestatements in favor of macro [[@OverHash]]dirswithhome&etcetera[[@utkarshgupta137]]ConnectOptionstypes implFromStr[[@abonander]]Fixed
search_path[[@95ulisse]]sqlx::test[[@kenkoooo]]try_acquire[[@abonander]]tracked_path[[@df51d]]PrepareOkfails to decode [[@stepantubanov]]tokio-rs/tokio (tokio)
v1.48.0: Tokio v1.48.0Compare Source
1.48.0 (October 14th, 2025)
The MSRV is increased to 1.71.
Added
File::max_buf_size(#7594)ChainofAsyncReadExt::chain(#7599)SocketAddr::as_abstract_name(#7491)TcpStream::quickackandTcpStream::set_quickack(#7490)AsRef<Self>forTcpStreamandUnixStream(#7573)LocalKey::try_get(#7666)Ordfortask::Id(#7530)Changed
max_buf_sizewhen cloning aFile(#7593)clippy::unwrap_in_resultin#[tokio::main](#7651)PollEventednoise from Debug formats (#7675)Command::spawn_withto useFnOnce(#7511)SetOnce(#7554)UnsafeCell::get_mutinMutex::get_mutandRwLock::get_mut(#7569)Timeout<T>::poll(#7535)Fixed
join!andtry_join!(#7638)wake_by_ref()even if already woken (#7622)broadcast::Senderinbroadcast::Sender::new()(#7629)RwLock::try_*methods (#7587)Unstable
--cfgflags fortaskdumpandio_uring(#7655, #7621)io_uringinfs::write(#7567)io_uringwithFile::open()(#7617)io_uringwithOpenOptions(#7321)localruntime flavor (#7375, #7597)Documented
AsyncRead::poll_read(#7580)AsyncFdreadiness guards (#7583)UCred::pid()on Cygwin (#7611)set_reuseport()andreuseport()(#7628)SO_REUSEADDRis only set on Unix (#7533)Handle::block_on(#7665)Builder::global_queue_interval()(#7605)tokio::sync::watch::Receiver(#7584)SetOnce::wait(#7506)parking_lotfeature flag (#7663)UnboundedSender::send(#7661)sync::watch(#7601)spawn_localmethods (#7669)poll_proceed(#7586)v1.47.2Compare Source
v1.47.1: Tokio v1.47.1Compare Source
1.47.1 (August 1st, 2025)
Fixed
asyncio.EventinSetOncedocs (#7485)v1.47.0: Tokio v1.47.0Compare Source
1.47.0 (July 25th, 2025)
This release adds
poll_proceedandcooperativeto thecoopmodule forcooperative scheduling, adds
SetOnceto thesyncmodule which providessimilar functionality to [
std::sync::OnceLock], and adds a new methodsync::Notify::notified_owned()which returns anOwnedNotifiedwithouta lifetime parameter.
Added
cooperativeandpoll_proceed(#7405)SetOnce(#7418)sync::Notify::notified_owned()(#7465)Changed
AtomicWaker::wakeperformance (#7450)Documented
Readiness<'_>(#7415)v1.46.1: Tokio v1.46.1Compare Source
1.46.1 (July 4th, 2025)
This release fixes incorrect spawn locations in runtime task hooks for tasks spawned using
tokio::spawnrather thanRuntime::spawn. This issue only effected the spawn location inTaskMeta::spawned_at, and did not effect task locations in Tracing events.Unstable
TaskMeta::spawn_locationtracking where a task was spawned (#7440)v1.46.0: Tokio v1.46.0Compare Source
1.46.0 (July 2nd, 2025)
Fixed
TcpStream::shutdownincorrectly returning an error on macOS (#7290)Added
mpsc::OwnedPermit::{same_channel, same_channel_as_sender}methods (#7389)biasedoption forjoin!andtry_join!, similar toselect!(#7307)pope::OpenOptions::read_writeon Android (#7426)Cloneimplementation fornet::unix::SocketAddr(#7422)Changed
queue::Local<T>(#7340)LocalSet::{poll,drop}(#7372)Unstable
TaskMeta::spawn_locationtracking where a task was spawned (#7417)LocalOptionsparameter toruntime::Builder::build_local(#7346)Documented
start_seekis not used (#7366)AsyncWriteExt::flush(#7364)recv_buffer_sizemethod (#7336)RawFdinTcpSocketdocs (#7416)AsRawFddoc link to current Rust stdlib location (#7429)on_*_task_pollis unstable (#7311)time::advance(#7394)v1.45.1: Tokio v1.45.1Compare Source
1.45.1 (May 24th, 2025)
This fixes a regression on the wasm32-unknown-unknown target, where code that previously did not panic due to calls to
Instant::now()started failing. This is due to the stabilization of the first time-based metric.Fixed
v1.45.0: Tokio v1.45.0Compare Source
Added
worker_total_busy_duration,worker_park_count, andworker_unpark_count(#6899, #7276)Command::spawn_with(#7249)Changed
Unpinfor some trait impls (#7204)runtime::Handleas unwind safe (#7230)Unstable
v1.44.2: Tokio v1.44.2Compare Source
This release fixes a soundness issue in the broadcast channel. The channel
accepts values that are
Sendbut!Sync. Previously, the channel calledclone()on these values without synchronizing. This release fixes the channelby synchronizing calls to
.clone()(Thanks Austin Bonander for finding andreporting the issue).
Fixed
clone()call in broadcast channel (#7232)v1.44.1: Tokio v1.44.1Compare Source
1.44.1 (March 13th, 2025)
Fixed
block_in_placecontext (#7216)v1.44.0: Tokio v1.44.0Compare Source
1.44.0 (March 7th, 2025)
This release changes the
from_stdmethod on sockets to panic if a blocking socket is provided. We determined this change is not a breaking change as Tokio is not intended to operate using blocking sockets. Doing so results in runtime hangs and should be considered a bug. Accidentally passing a blocking socket to Tokio is one of the most common user mistakes. If this change causes an issue for you, please comment on #7172.Added
task::coopmodule (#7116)Command::get_kill_on_drop()(#7086)broadcast::Sender::closed(#6685, #7090)broadcast::WeakSender(#7100)oneshot::Receiver::is_empty()(#7153)oneshot::Receiver::is_terminated()(#7152)Fixed
Fileshould not start a background read (#7139)start_killon exited child should not fail (#7160)CTRL_CLOSE,CTRL_LOGOFF,CTRL_SHUTDOWNon windows (#7122)Changes
select!budget-aware (#7164)from_std(#7166)Changes to unstable APIs
Documented
select!alternatives (#7110)send_to(#7146)Childstdout (#7141)Child::killbehavior (#7162)ChildStdinstruct doc comment (#7192)worker_threadsinstead ofcore_threads(#7186)v1.43.3Compare Source
v1.43.2: Tokio v1.43.2Compare Source
1.43.2 (August 1st, 2025)
Fixed
v1.43.1Compare Source
v1.43.0: Tokio v1.43.0Compare Source
1.43.0 (Jan 8th, 2025)
Added
UdpSocket::peekmethods (#7068)Command::into_std()(#7014)SignalKind::infoon illumos (#6995)Fixed
set_lenbefore initializing vector inBlocking(#7054)clippy::needless_returnin#[tokio::main](#6874)Changes
unsync_load(#7073)Buf::put_bytesinRepeatread impl (#7055)Changes to unstable APIs
Documented
ReadBuf::uninitallows initialized buffers as well (#7053)TcpStream::try_write_vectoreddocs (#7067)LocalRuntimedoc links (#7074)watch::Receiver::wait_for(#7038)OnceCelldocs (#7047)v1.42.1: Tokio v1.42.1Compare Source
This release fixes a soundness issue in the broadcast channel. The channel accepts values that are
Sendbut!Sync. Previously, the channel calledclone()on these values without synchronizing. This release fixes the channel by synchronizing calls to.clone()(Thanks Austin Bonander for finding and reporting the issue).Fixed
clone()call in broadcast channel (#7232)v1.42.0: Tokio v1.42.0Compare Source
1.42.0 (Dec 3rd, 2024)
Added
AsyncFd::{try_io, try_io_mut}(#6967)Fixed
ptr->ref->ptrroundtrip in RegistrationSet (#6929)yield_nowinsideblock_in_place(#6999)Changes
Documented
tokio::net::unix::{pid_t, gid_t, uid_t}(#6791)Instantdocs (#6982)v1.41.1: Tokio v1.41.1Compare Source
1.41.1 (Nov 7th, 2024)
Fixed
netrequirement fornet::UdpSocketin docs (#6938)TcpStreaminternal comment (#6944)v1.41.0: Tokio v1.41.0Compare Source
1.41.0 (Oct 22th, 2024)
Added
global_queue_depth(#6854, #6918)SocketAddr(#6868)watch::Sender::sender_count(#6836)mpsc::Receiver::blocking_recv_many(#6867)Idapis (#6793, #6891)Added (unstable)
LocalRuntime(#6808)Changed
#[must_use]toNotified(#6828)watchcooperative (#6846)broadcast::Receivercooperative (#6870)cfg_fsforwasitarget (#6822)Fixed
Documented
OwnedFdwithAsyncFd(#6821)AsyncFdmethods (#6890)joinandtry_join(#6814, #6841)TcpSocket::set_nodelayandTcpSocket::nodelay(#6840)v1.40.0: Tokio v1.40.0Compare Source
1.40.0 (August 30th, 2024)
Added
util::SimplexStream(#6589)Command::process_group(#6731){TrySendError,SendTimeoutError}::into_inner(#6755)JoinSet::join_all(#6784)Added (unstable)
Builder::{on_task_spawn, on_task_terminate}(#6742)Changed
write_all_bufwhen possible (#6724)UnwindSafe(#6783)SleepandBatchSemaphoreinstrumentation explicit roots (#6727)NonZeroU64fortask::Id(#6733)JoinError(#6753)#[must_use]toJoinHandle::abort_handle(#6762)Documented
[build]section doesn't go in Cargo.toml (#6728)select!(#6774)v1.39.3: Tokio v1.39.3Compare Source
1.39.3 (August 17th, 2024)
This release fixes a regression where the unix socket api stopped accepting the abstract socket namespace. (#6772)
v1.39.2: Tokio v1.39.2Compare Source
1.39.2 (July 27th, 2024)
This release fixes a regression where the
select!macro stopped accepting expressions that make use of temporary lifetime extension. (#6722)v1.39.1: Tokio v1.39.1Compare Source
1.39.1 (July 23rd, 2024)
This release reverts "time: avoid traversing entries in the time wheel twice" because it contains a bug. (#6715)
v1.39.0: Tokio v1.39.0Compare Source
1.39.0 (July 23rd, 2024)
Added
AsyncSeekforEmpty(#6663)num_alive_tasks(#6619, #6667)Command::as_std_mut(#6608)watch::Sender::same_channel(#6637){Receiver,UnboundedReceiver}::{sender_strong_count,sender_weak_count}(#6661)Defaultforwatch::Sender(#6626)CloneforAbortHandle(#6621)consume_budget(#6622)Changed
ReadBuf::put_slice()(#6629)copy_bidirectionalandcopy(#6532)num_cpuswithavailable_parallelism(#6709)block_on(#6692)IntoFuturewithtimeout(#6666)IntoFuturewithjoin!andselect!(#6710)Fixed
Interval(#6612)Added (unstable)
unhandled_panicbehavior for#[tokio::main]and#[tokio::test](#6593)spawned_tasks_count(#6114)worker_park_unpark_count(#6696)Documented
tokio::io::stdoutdocumentation (#6674)join.rsandtry_join.rs(#6641)unhandled_panic(#6660)JoinSet::try_join_nextwhen all tasks are running (#6671)v1.38.2: Tokio v1.38.2Compare Source
This release fixes a soundness issue in the broadcast channel. The channel accepts values that are
Sendbut!Sync. Previously, the channel calledclone()on these values without synchronizing. This release fixes the channel by synchronizing calls to.clone()(Thanks Austin Bonander for finding and reporting the issue).Fixed
clone()call in broadcast channel (#7232)v1.38.1: Tokio v1.38.1Compare Source
1.38.1 (July 16th, 2024)
This release fixes the bug identified as (#6682), which caused timers not
to fire when they should.
Fixed
wake_upwhile holding all the locks of sharded time wheels (#6683)v1.38.0: Tokio v1.38.0Compare Source
This release marks the beginning of stabilization for runtime metrics. It
stabilizes
RuntimeMetrics::worker_count. Future releases will continue tostabilize more metrics.
Added
File::create_new(#6573)copy_bidirectional_with_sizes(#6500)AsyncBufReadforJoin(#6449)CloneforNamedPipeInfo(#6586)Notify::notify_last(#6520)mpsc::Receiver::{capacity,max_capacity}(#6511)splitmethod to the semaphore permit (#6472, #6478)tokio::task::join_set::Builder::spawn_blocking(#6578)Changed
#[tokio::test]append#[test]at the end of the attribute list (#6497)blocking_threadscount (#6551)RuntimeMetrics::worker_count(#6556)lifo_slotinblock_in_place(#6596)global_queue_intervalis zero (#6445)Semaphorefor task dumps (#6499)LocalKey::getwork with Clone types (#6433)true_whenfield inTimerShared(#6563)Fixed
Interval::poll_tick(#6487)is_emptyon mpsc block boundaries (#6603)Documented
stdindocumentation (#6581)ReadHalf::unsplit()documentation (#6498)select!(#6468)NamedPipeServerexample (#6590)SemaphorePermit,OwnedSemaphorePermit(#6477)Barrier::waitis not cancel safe (#6494)watch::Sender::{subscribe,closed}(#6490)spawn_blockingtasks (#6571)LocalSet::run_until(#6599)v1.37.0: Tokio v1.37.0Compare Source
1.37.0 (March 28th, 2024)
Added
set_max_buf_sizetotokio::fs::File(#6411)try_newandtry_with_interesttoAsyncFd(#6345)forget_permitsmethod to semaphore (#6331)is_closed,is_empty, andlento mpsc receivers (#6348)rwlock()method to ownedRwLockguards (#6418)Cloneforwatch::Sender(#6388)TaskLocalFuture::take_value(#6340)FromIteratorforJoinSet(#6300)Changed
io::splituse a mutex instead of a spinlock (#6403)Fixed
Documented
AsyncBufReadExt::fill_buf(#6431)AsyncReadExt's primitive read functions (#6337)Runtimeto#[tokio::main](#6366)enterexample deterministic (#6351)mpsc::Sender::downgradewith#[must_use](#6326)const_newbeforenew_with(#6392)Changed (unstable)
Idin taskdumps (#6328)unhandled_panicis enabled when not supported (#6410)v1.36.0: Tokio v1.36.0Compare Source
1.36.0 (February 2nd, 2024)
Added
tokio::io::Join(#6220)AsyncWriteforEmpty(#6235)UnixSocket(#6290)TcpSocket(#6311){Receiver,UnboundedReceiver}::poll_recv_many(#6236)Sender::{try_,}reserve_many(#6205)watch::Receiver::mark_unchanged(#6252)JoinSet::try_join_next(#6280)Changed
copycooperative (#6265)repeatandsinkcooperative (#6254)Documented
clear_readydocs (#6304)*Fdtraits onTcpSocketare unix-only (#6294)tokio::sync::Mutex(#6279)v1.35.1: Tokio v1.35.1Compare Source
1.35.1 (December 19, 2023)
This is a forward part of a change that was backported to 1.25.3.
Fixed
tokio::runtime::io::registration::async_io(#6221)v1.35.0: Tokio v1.35.0Compare Source
1.35.0 (December 8th, 2023)
Added
Changed
Sizedrequirements fromAsyncReadExt.read_buf(#6169)Runtimeunwind safe (#6189)Fixed
--cfg docsrswork without net feature (#6166)unsync_loadon miri (#6179)Documented
AsyncWriteExtexamples (#6149)LocalSet::run_until(#6147)v1.34.0: Tokio v1.34.0Compare Source
Fixed
clear_readinessafter io driver shutdown (#6067)take(#6080)broadcast::channellink (#6100)Changed
::corequalified imports instead of::stdinsidetokio::testmacro (#5973)Added
fs::read_dirto includeaix(#6075)mpsc::Receiver::recv_many(#6010)v1.33.0: Tokio v1.33.0Compare Source
1.33.0 (October 9, 2023)
Fixed
Interest::addwith#[must_use](#6037)watch::Receiver::wait_for(#6021)spawn_localsource location (#5984)Changed
watch(#6018)Added
tokio::fs::File(#5958)Interest::removemethod (#5906)DuplexStream(#5985)?Sizedbound to{MutexGuard,OwnedMutexGuard}::map(#5997)watch::Receiver::mark_unseen(#5962, #6014, #6017)watch::Sender::new(#5998)OnceCell::from_value(#5903)Removed
statsfeature (#5952)Documented
Child::waitis cancel safe (#5977)Semaphore(#5939, #5956, #5978, #6031, #6032, #6050)broadcastcapacity is a lower bound (#6042)const_newis not instrumented (#6002)mpsc::Sender::send(#5947)watchchannel (#5954)Unstable
v1.32.1: Tokio v1.32.1Compare Source
1.32.1 (December 19, 2023)
This is a forward part of a change that was backported to 1.25.3.
Fixed
tokio::runtime::io::registration::async_io(#6221)v1.32.0: Tokio v1.32.0Compare Source
Fixed
broadcast::Receiver(#5925)Added
Command::raw_arg(#5930)Unstable
v1.31.0: Tokio v1.31.0Compare Source
Fixed
WriteHalf::poll_write_vectored(#5914)Unstable
v1.30.0: Tokio v1.30.0Compare Source
1.30.0 (August 9, 2023)
This release bumps the MSRV of Tokio to 1.63. (#5887)
Changed
--cfg mio_unsupported_force_poll_pollflag (#5881)const_newmethods always available (#5885)Added
broadcast::Sender::new(#5824)UCredfor espidf (#5868)File::options()(#5869)Interval(#5878){ChildStd*}::into_owned_{fd, handle}(#5899)Removed
tokio_*cfgs (#5890)Documented
broadcast::send(#5820)AsyncReadExt::read_exact(#5863)Sleepas!Unpinin docs (#5916)raw_argnot showing up in docs (#5865)Unstable
v1.29.1: Tokio v1.29.1Compare Source
Fixed
block_in_placewith ablock_onbetween (#5837)v1.29.0: Tokio v1.29.0Compare Source
Technically a breaking change, the
Sendimplementation is removed fromruntime::EnterGuard. This change fixes a bug and should not impact most users.Breaking
EnterGuardshould not beSend(#5766)Fixed
fs::read_dir(#5653)JoinSet(#5693)EnterGuarddropped incorrect order (#5772)File(#5803)Changed
Added
broadcast::Receiver::blocking_recv(#5690)raw_argmethod toCommand(#5704)JoinSet::poll_join_next(#5721)Unstable
Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Enabled.
♻ Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.
👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.
This PR has been generated by Renovate Bot.
⚠ Artifact update problem
Renovate failed to update artifacts related to this branch. You probably do not want to merge this PR as-is.
♻ Renovate will retry this branch, including artifacts, only when one of the following happens:
The artifact failure details are included below:
File name: Cargo.lock
File name: Cargo.lock
614275f8d5to4b53fc21a74b53fc21a7to3c6e6c76673c6e6c7667tof804b33070f804b33070to3c16adf58a3c16adf58atofabc70bd31fabc70bd31tocfe21690aacfe21690aatoa57270c286a57270c286toebfdfe541eebfdfe541etobaceaf990abaceaf990ato7bc33d44877bc33d4487toe68a110b33e68a110b33toce086980f4ce086980f4tod8c2626919d8c2626919toed2eb3cad2ed2eb3cad2toe3ae519648e3ae519648to3bf6c521a73bf6c521a7to42366da19542366da195to6b5271a86c6b5271a86ctoe1e5ee4b59e1e5ee4b59toa45900d272a45900d272to63fc7c4c2063fc7c4c20tobefe7feb62befe7feb62to072e778d3e072e778d3eto373fc93319373fc93319to76aa3353cf76aa3353cfto1f06d4be981f06d4be98tob2cc47b903b2cc47b903to02789d118702789d1187toa847a2b5e9a847a2b5e9to5b050e4abc5b050e4abctob269e54f1eb269e54f1eto94d02d96a294d02d96a2toeaf435406eeaf435406etoae4b63dda3ae4b63dda3toe2752866e4e2752866e4toc85594ef6bc85594ef6bto05e816447905e8164479to59198e7fb359198e7fb3to543287c07f543287c07ftof21ab17d87f21ab17d87toc3f7d14b89c3f7d14b89to72bb56d9f372bb56d9f3tod33b1919fad33b1919fato83bac0f23683bac0f236to0e358aa3e40e358aa3e4toeea0ce98d9eea0ce98d9to7f39a640ca7f39a640catoa353d1a004a353d1a004tofea7fb49c0⚠️ Artifact update problem
Renovate failed to update an artifact related to this branch. You probably do not want to merge this PR as-is.
♻ Renovate will retry this branch, including artifacts, only when one of the following happens:
The artifact failure details are included below:
File name: Cargo.lock
fea7fb49c0to19f5c9180819f5c91808to6dcafd3fa76dcafd3fa7to1bfb85dfdb1bfb85dfdbto2ea0d9c65b2ea0d9c65btoe0d8cb19ebe0d8cb19ebto19f3dd7df619f3dd7df6to9b18e35a789b18e35a78to7938d19e4e7938d19e4eto55dcdb53ca55dcdb53cato5d279b05f15d279b05f1toed0df1b468ed0df1b468to067f4ac5eb067f4ac5ebtob1787bbd08b1787bbd08to59e8b79a3a59e8b79a3atodc724123f2dc724123f2to9afc3e59309afc3e5930toc7d67d9778c7d67d9778to07119373220711937322to404707bf5a404707bf5atoc29263e628c29263e628to746e5a30e1746e5a30e1to9a8addca8f9a8addca8ftoc233f0a77bc233f0a77bto053ef2f822053ef2f822to8e44deb41c8e44deb41ctob74cdc32e5b74cdc32e5tob7cd81cb34b7cd81cb34to5d89d2f63e5d89d2f63etocf763e456ecf763e456eto02e2ff184902e2ff1849to69eb1f0ad769eb1f0ad7to4748ba2fff4748ba2ffftodec992f0b4dec992f0b4to4b209d795e4b209d795eto4c5357c2b84c5357c2b8to0fd6cf1a260fd6cf1a26to50f0f725cc50f0f725ccto5ba19466c95ba19466c9toab32af45e3ab32af45e3toa794e3ef71a794e3ef71to31514c615a31514c615ato7a52b0090d7a52b0090dtoca267acd54ca267acd54to261a106521261a106521to0fbebcd7240fbebcd724to6dd34341fe6dd34341fetod3d9cecf27d3d9cecf27toa21d4268eda21d4268edtod9423e7b8bd9423e7b8bto64b8ee6c9c64b8ee6c9ctod0c2ddbf10d0c2ddbf10todc049e83f0dc049e83f0todead4ebfafdead4ebfafto949077241f949077241ftof912d7ad24f912d7ad24to8379bba31f8379bba31ftoe0b51da71de0b51da71dto4f0c83fb334f0c83fb33tof61315ad87f61315ad87to8e7f0a109b8e7f0a109bto9f508316d69f508316d6tocebc808442cebc808442to6041b3e9126041b3e912to8ec7a5420b8ec7a5420bto3d07f52f8a3d07f52f8atoe70beb5ba8e70beb5ba8to9d1d8eca179d1d8eca17to12d1c6ca7b12d1c6ca7bto15023a00da15023a00dato58ff60ecac58ff60ecactoeb3c71859aeb3c71859ato56ca98b07656ca98b076to37f63200fb37f63200fbto2137d10bf12137d10bf1toe2210531fde2210531fdto95c965ead195c965ead1toeb5d09944eeb5d09944etoa7edc6d80fa7edc6d80ftof877658d9af877658d9ato401ba3657c401ba3657ctoc4017f4c95c4017f4c95to60dd1e922860dd1e9228toc3f0f8f47cc3f0f8f47cto05cab17d6c05cab17d6ctoa280b434aaa280b434aatoe965a52be6e965a52be6tocb76d20bffcb76d20bfftofe3394bbbafe3394bbbatobd30117e31bd30117e31to3057bae7f03057bae7f0todf9c90b08edf9c90b08eto3d833495a73d833495a7to0a21fc28cf0a21fc28cfto4979b1a4ff4979b1a4ffto90776ffe4990776ffe49to4da741dc954da741dc95tod8e404fec5d8e404fec5to742903040f742903040fto7973ff2d3a7973ff2d3ato494a4adb64494a4adb64to6193c7af486193c7af48to611aea9282611aea9282to3bc717bbaa3bc717bbaato96f81b0b9e96f81b0b9eto172fa45e76172fa45e76to09248e4fe809248e4fe8to0dad38324e0dad38324etode715a72fede715a72fetoa60d753ae1a60d753ae1to3be6f368db3be6f368dbto0b782707910b78270791to6042dfec766042dfec76to91f9fed4fc91f9fed4fctof766ab4edff766ab4edftof6831644f0f6831644f0toc1c811ff8fc1c811ff8fto39877dc9d739877dc9d7tobb3bdac3c9bb3bdac3c9to79b1d9e69e79b1d9e69eto8a3e2a6b058a3e2a6b05to93a667a37193a667a371tobf864c0afbbf864c0afbto67609214fe67609214fetobbd242a68dbbd242a68dto7922e576ab7922e576abto64ede2028f64ede2028ftob9315dd8b9b9315dd8b9tod79de2b55ed79de2b55eto35a99b9b5735a99b9b57to1a8896f02b1a8896f02btod767292a71d767292a71to5ccf73d71f5ccf73d71ftoafd14c46ddafd14c46ddto27d0c1dbde27d0c1dbdeto8a18d051f08a18d051f0to5e126086345e12608634toab981e36d4ab981e36d4todabd6cda76dabd6cda76tod1ce682a90d1ce682a90tob4d0448eb9b4d0448eb9to3b190a3ec93b190a3ec9to69331fb9d069331fb9d0to4642e2e4364642e2e436to93d9f8a09893d9f8a098to5d02971c285d02971c28to7cd68c5a977cd68c5a97toc2fde97eaec2fde97eaeto5f798823075f79882307toc142c83efec142c83efeto3c65212f3b3c65212f3btoe5f656e547e5f656e547to7df86ddcbd7df86ddcbdtoe82cf14774e82cf14774to2bb1fcc2152bb1fcc215to05db1c5eac05db1c5eacto62404fdd0b62404fdd0bto6a72bf13086a72bf1308tof20ca552e9f20ca552e9to9fcff60e759fcff60e75tod7081c1eead7081c1eeato48a4b25ff548a4b25ff5todcff2a68bfdcff2a68bfto9643de444c9643de444cto7e4cd4c3f67e4cd4c3f6to80a1bdb3b180a1bdb3b1to02f563b7e102f563b7e1tob248ffc5edb248ffc5edtocd6c613a34cd6c613a34to259890e8cf259890e8cftoc80281ed53c80281ed53to6e57cd0e796e57cd0e79tof2eca5a6d7f2eca5a6d7to0c5d34f0150c5d34f015to353be64b20353be64b20toea13ce857eea13ce857eto203201daa7203201daa7toeee867a747eee867a747to5aba7b2da45aba7b2da4to0e7ae465660e7ae46566toedaf7fd7bcedaf7fd7bcto492d771df0492d771df0to49a55291bf49a55291bfto4b219d42044b219d4204to3fb7b772083fb7b77208to5a537e94ee5a537e94eeto3706a171153706a17115toc1bfd14962c1bfd14962to45b413d91745b413d917to54fdeb731654fdeb7316toa8ee5c23a7a8ee5c23a7to3383fb4f5e3383fb4f5eto335afbfa2b335afbfa2bto2ffd291e062ffd291e06toec7634c3e3ec7634c3e3to0a0d8227650a0d822765to569519d744569519d744to8523b7f7228523b7f722to8ca9f3939f8ca9f3939fto80adc77a8b80adc77a8btoce362d3ed7ce362d3ed7to1d280de4091d280de409tobb04223e14bb04223e14to94c10d918094c10d9180tod5c8d96c83d5c8d96c83to913f153717913f153717to4c8b7f55264c8b7f5526to66e52048ff66e52048ffto4ff3d82f9b4ff3d82f9btoa5832e83b5a5832e83b5tocd9d19a2d2cd9d19a2d2to42a6dc1b6542a6dc1b65toa05d448ea2a05d448ea2to62c552ecdc62c552ecdctob8607bb0f6b8607bb0f6toce4cca58efce4cca58efto1a4351286c1a4351286cto19568571f419568571f4toc2159bf6cec2159bf6ceto29bbc8122a29bbc8122atob8a328b526b8a328b526to8cbcb2305d8cbcb2305dto06e84bc1e506e84bc1e5to5cf38ff3275cf38ff327to8ae70c26358ae70c2635toa6d25acff2a6d25acff2to4b2173ea974b2173ea97to12792642d312792642d3to57a4d8614057a4d86140to2b6d9528d92b6d9528d9tofbd8526accfbd8526acctoa340852ef1a340852ef1to1fae648e791fae648e79toe689eb39a4e689eb39a4to7d49fd95687d49fd9568to4d504c44184d504c4418toa3eb588d23a3eb588d23to2d392bf3d22d392bf3d2to144a168b9e144a168b9etod52304481cd52304481cto77f1af17bf77f1af17bfto6503bec8756503bec875tof7305feb1bf7305feb1btobfae7c9cb5bfae7c9cb5toaaaf096feaaaaf096featobd4cf46d8dbd4cf46d8dto0c4683553a0c4683553atoa23eba0f47a23eba0f47tobcecf7cec6bcecf7cec6to2af94e5e582af94e5e58toc3ddb5f3ffc3ddb5f3fftoca0ff854e9ca0ff854e9toab960e4485ab960e4485to4673878ade4673878adeto6e2f21204b6e2f21204btoeeada4701ceeada4701cto48ec68516848ec685168to70cb6beadd70cb6beaddto61b51fad8e61b51fad8etoc459a833f7c459a833f7to120969e68d120969e68dtofbe62aa483fbe62aa483to1701e230571701e23057tobd3787c9e7bd3787c9e7to8b6b981f398b6b981f39to26d74cf4f126d74cf4f1toa6dfe50307a6dfe50307to626931e7be626931e7beto6712ada3c46712ada3c4to5e01cd3b3c5e01cd3b3ctob2ce1d86c3b2ce1d86c3to50ebd7d19350ebd7d193toa4f4921a47a4f4921a47toc94702721bc94702721btoe3d2f7fe95e3d2f7fe95tofad586ab5ffad586ab5ftocf3b52116acf3b52116ato26dfdf244326dfdf2443to8ecf5ee5eb8ecf5ee5ebto60927559236092755923to3f0899f8a23f0899f8a2to6aa1449ade6aa1449adetoae15e3abdfae15e3abdfto0d92a057750d92a05775to3d2f43f9a13d2f43f9a1tofe34e04bb5fe34e04bb5to672fa30bda672fa30bdato2a3b9034222a3b903422to36948753e436948753e4tob37603dee0b37603dee0todd31cf3e6edd31cf3e6eto514b2ab795514b2ab795to582dfa7bb5582dfa7bb5toee17b7e3bcee17b7e3bcto37fca9ea1537fca9ea15toe4c1cae120e4c1cae120tob2ecaa03a3b2ecaa03a3to842a01b0f3842a01b0f3to4db8bdc4464db8bdc446to71b81b8fbe71b81b8fbeto5389570bab5389570babtof6e018d8e1f6e018d8e1toe4e96980a1e4e96980a1tod590f28b2bd590f28b2btof7e0cd890ef7e0cd890eto388149f2ed388149f2edto47bcf1d69647bcf1d696todcfc1c18d2dcfc1c18d2to8e765022228e76502222to60d821035660d8210356to6b701bfb9f6b701bfb9fto8a90de16f68a90de16f6tode06aeb581de06aeb581to1c8d4d42001c8d4d4200toe28bae579de28bae579dto49e69b94c949e69b94c9to045547f1d2045547f1d2to4a742668974a74266897to92aef4e8c392aef4e8c3tobb2a1f0222bb2a1f0222to8f019cd4e28f019cd4e2to11185d060e11185d060eto20d91b0f8f20d91b0f8ftof89d067409f89d067409to54bb7692bb54bb7692bbto427a49cf0e427a49cf0etoaa254e5a27aa254e5a27tof02faf7a99f02faf7a99to0d457054420d45705442to8edd8285a18edd8285a1to153a50ee11153a50ee11to150eb9c389150eb9c389to6e45b5bb8a6e45b5bb8ato17a4a0954617a4a09546to406e31a3a3406e31a3a3toa84b656530a84b656530to7b85eb591a7b85eb591ato1d0fa86d6a1d0fa86d6ato5ac08629275ac0862927tod7f924608cd7f924608ctoa951c990dda951c990ddtoc7c5009510c7c5009510toba2fe0f225ba2fe0f225tob9539032ffb9539032fftofe45bde3fefe45bde3feto5bda2424c05bda2424c0tocf8eb23331cf8eb23331tod333fcc7b6d333fcc7b6to8fd9a0b8a98fd9a0b8a9to80247bad1680247bad16to2adf1054b42adf1054b4to9f8989b7659f8989b765tod6b2930b91d6b2930b91to2081de26e52081de26e5to7a1cab93217a1cab9321tob25c61e09fb25c61e09ftoc5224dc66dc5224dc66dtoff78bd3932ff78bd3932toa9e22dcb0ea9e22dcb0etod00ab4f1c5d00ab4f1c5to1b67a1871f1b67a1871fto5cf9e9ab3f5cf9e9ab3fto3021923cf73021923cf7to21a7579b4e21a7579b4eto5a11c5b2925a11c5b292to4f50bcffbd4f50bcffbdto3ae36217343ae3621734to3a7e12371c3a7e12371cto628e862dca628e862dcato38c48d7d1438c48d7d14to9823fa2c0d9823fa2c0dto613b2f799d613b2f799dto4abfef8a954abfef8a95to6dfd11d6db6dfd11d6dbto9537fc10e69537fc10e6to7b9a464f2b7b9a464f2btoe00c3a3bbfe00c3a3bbfto90369d42d290369d42d2to88271b469b88271b469bto7f22fb57477f22fb5747toe067642897e067642897todc282e23b1dc282e23b1to9b86825acb9b86825acbto1463582bf51463582bf5to22177708322217770832to917e57dc15917e57dc15to34ad0561c934ad0561c9to64d21efb5864d21efb58tof67c60b5adf67c60b5adto2b8bd53e3e2b8bd53e3eto1823906b8d1823906b8dto63ff2edf6f63ff2edf6fto64f03c776564f03c7765to2ed8bc40772ed8bc4077to397a349e83397a349e83to8a876bf0568a876bf056tof5bf7a8d37f5bf7a8d37tod19bac34dad19bac34datoc716a5c079c716a5c079to33fcb53a6c33fcb53a6cto6342d19afa6342d19afatod89828c2eed89828c2eetodcab563c9adcab563c9ato5eaddda3c15eaddda3c1toef971b5985ef971b5985to3c5be158113c5be15811to5dc08ec4335dc08ec433to5ae185faea5ae185faeatoae162bed64ae162bed64toa7ee6e1cd8a7ee6e1cd8to0b3b95f9c00b3b95f9c0tobd189f0d45bd189f0d45toc94ee419cdc94ee419cdto570520b111570520b111to7353c361447353c36144to15a98fa81815a98fa818to5880b3bc7d5880b3bc7dtoc58b15907cc58b15907cto2c86e9b0042c86e9b004to7d0e6f77577d0e6f7757to8712dc24238712dc2423to8fca81971f8fca81971ftoec736a8167ec736a8167tof7278b89fef7278b89feto598657be46598657be46to47eaf6412c47eaf6412ctoffb212ae9dffb212ae9dto993f0b13a3993f0b13a3tob89624ce4ab89624ce4atoc92750acaec92750acaeto8e7ea7be2f8e7ea7be2ftob735289585b735289585to3d5364c5303d5364c530tod2c9105c88d2c9105c88to59b260304159b2603041toe60f68111be60f68111btoe528a8a35ce528a8a35ctoc9edb40f7ec9edb40f7etobcdbbf3a9cbcdbbf3a9cto141d9fd8f5141d9fd8f5to0bc2e5b4280bc2e5b428toefb2b3f364efb2b3f364to521c410db5521c410db5to6f9e20fc3a6f9e20fc3ato4b100fd3f84b100fd3f8toc97aa228eac97aa228eatof80cb152f8f80cb152f8tod899751d08d899751d08to0fb11b8c410fb11b8c41to85be41aba585be41aba5toa5cde7035aa5cde7035atof2d0388769f2d0388769tod2c68beab2d2c68beab2tobd629f8ed4bd629f8ed4to697d07b939697d07b939to88b207c4d688b207c4d6toaf8208ee40af8208ee40tof0a59b90f6f0a59b90f6tobad71da886bad71da886to1d7cb1eda81d7cb1eda8toa3ffd5e9dfa3ffd5e9dftoa0feee0beea0feee0beeto0b56f057ca0b56f057catoc5dbe5ce8fc5dbe5ce8ftobfe5db9d94bfe5db9d94to93c9726ee993c9726ee9tod136523634d136523634to60a88ceb4560a88ceb45to92bb292bca92bb292bcato72b7b3473872b7b34738to908a8b32ed908a8b32edto8b84cdad688b84cdad68to0ba4e25de40ba4e25de4to037a3a5a1f037a3a5a1ftoe2bf7514cbe2bf7514cbtob925db69d0b925db69d0toe0acef5fa5e0acef5fa5toa994c6cec3a994c6cec3to9aa63ba0c39aa63ba0c3to12f857f22c12f857f22cto4d24b469804d24b46980toe40b69cffae40b69cffato431aecb08c431aecb08cto4b5821e7574b5821e757toe1854594d7e1854594d7to2a9bc353662a9bc35366to49e7e552c549e7e552c5to2af0f56d9b2af0f56d9bto9397eb5cd09397eb5cd0to2203d32b152203d32b15to2389ad0bfc2389ad0bfctodde8d70e47dde8d70e47tob09428a1dcb09428a1dcto8eddb86ddd8eddb86dddto54438e936554438e9365to36e281434a36e281434ato7a83b0eef77a83b0eef7toc369329f3ac369329f3atoce1563f082ce1563f082toa3efc25d68a3efc25d68to0e4258e52a0e4258e52ato11099311cf11099311cfto7049232fdb7049232fdbto20ec510f4e20ec510f4etobf3ae6525bbf3ae6525btoaefa5dc636aefa5dc636to645ec9652c645ec9652cto94fa52026a94fa52026atofb96fac8a5fb96fac8a5to99795924989979592498to7f03bd8ae27f03bd8ae2to3ec3d3c47d3ec3d3c47dtob9d7de2492b9d7de2492to09a7da0cf709a7da0cf7to95793f214b95793f214bto0533eac1c60533eac1c6to4b4adc30c54b4adc30c5to14fcd932c314fcd932c3to58544e657a58544e657ato80567f1d5c80567f1d5cto291e9971cf291e9971cftoc9c3863a49c9c3863a49tob76d710eb5b76d710eb5to0d76e65fff0d76e65fffto2361d1c1282361d1c128to2ef71610362ef7161036to01fc143af801fc143af8to01fa6b95b701fa6b95b7to37084f8bfa37084f8bfato70cc77e84d70cc77e84dto37770275223777027522to5c6ddb7c725c6ddb7c72tocd343dcfaacd343dcfaatob6c94f4b5db6c94f4b5dto8c49a37fcd8c49a37fcdto38daffaf4738daffaf47to37367432323736743232toab4d922e4fab4d922e4fto12b31a18aa12b31a18aato7d8b383bfd7d8b383bfdtof1c05baba6f1c05baba6to94243dd25694243dd256to7becb0e0897becb0e089to0c02c158910c02c15891to180de24b60180de24b60to226b11a6aa226b11a6aato59a169091359a1690913to4b60f499264b60f49926toc937538f61c937538f61to35d5416e3335d5416e33to2c363ed5762c363ed576tocb35e7ab0acb35e7ab0atofd84fea03efd84fea03eto543ab70614543ab70614to06e303d6f806e303d6f8tod5ec4b65b6d5ec4b65b6to231db1e282231db1e282to77d42cfebb77d42cfebbtoec266feb74ec266feb74tod669570456d669570456to717b79b906717b79b906to7449eb87667449eb8766to9fc99981de9fc99981deto753ece341b753ece341bto6a8ebdac526a8ebdac52to1ba72b96711ba72b9671to3060adca6f3060adca6fto4be8647aa04be8647aa0to2f1a9cdfae2f1a9cdfaetod6dcbe24a1d6dcbe24a1to40c848f38c40c848f38ctocafc0b17a2cafc0b17a2to956d00c54f956d00c54fto16a8ca1f9416a8ca1f94to53116425825311642582to628dbb40e7628dbb40e7to69ac3c75ef69ac3c75efto5dc11dda205dc11dda20to6b956e61b36b956e61b3to5ba5323ba35ba5323ba3to87fecc26e087fecc26e0to1407a3dfa11407a3dfa1to152689113f152689113fto3e464954fd3e464954fdtobcd37259b9bcd37259b9to5ed88a29cc5ed88a29ccto4f9159c2ef4f9159c2efto92211af11692211af116toaab8ad0527aab8ad0527to21a1eba24021a1eba240to8af4bc77688af4bc7768tod792d4cda7d792d4cda7to933ac46b41933ac46b41to2e8537da2c2e8537da2cto2097ffe9a52097ffe9a5toaee9c0d8cdaee9c0d8cdto2bdd35201c2bdd35201cto318b0eed23318b0eed23to2a73dc0ab52a73dc0ab5toc9f2fa01aec9f2fa01aeto22f93aae3922f93aae39to40dd0418e340dd0418e3toe950aee5a4e950aee5a4toe1cf1f8ce4e1cf1f8ce4to7769cd7a427769cd7a42to5c009936515c00993651toe690cfe60ae690cfe60ato73fd8f615873fd8f6158tob377bb4d90b377bb4d90todf2e6569e0df2e6569e0to212858a981212858a981tod761181ad1d761181ad1to73254f7dff73254f7dffto33c526ceef33c526ceefto1402d0c9bb1402d0c9bbto3fb379b6983fb379b698to2627f9f33b2627f9f33bto42054c77b342054c77b3to55f95ed78055f95ed780toe103529e90e103529e90to968afac179968afac179to7e6e34136a7e6e34136atod6036d8820d6036d8820toccb77e7224ccb77e7224tocbd36cb231cbd36cb231to704b2ea587704b2ea587to0157e139c20157e139c2to9e4e7244ca9e4e7244cato63470034fb63470034fbto928ef31160928ef31160to1953b5abb51953b5abb5toa4102ddba6a4102ddba6to63a313e94763a313e947toac99b33e3dac99b33e3dtoa1ff517238a1ff517238to274c0117d5274c0117d5tod13869fe9dd13869fe9dtoa7d2ba74d9a7d2ba74d9to595fe39bf1595fe39bf1to14383d9f2e14383d9f2eto18ab7c2d1518ab7c2d15tod3419dedfbd3419dedfbto6caf3436e86caf3436e8to3e1aaca4893e1aaca489to57f71aea8157f71aea81tobd7b6eda30bd7b6eda30to2428d15b332428d15b33toa438955ea5a438955ea5to1494e05cfc1494e05cfcto65f6bb1f0765f6bb1f07to0d0869ad690d0869ad69to0486a1866b0486a1866bto9fc27128b09fc27128b0tobbec64ff01bbec64ff01to7b3008059a7b3008059ato83ac29c64683ac29c646to45a84ad7e145a84ad7e1to08ae58cde208ae58cde2to0cf23ca8f80cf23ca8f8to7ad6dd58b87ad6dd58b8tof1cb583dcef1cb583dceto43c901469b43c901469bto9da3acb4239da3acb423tod1b6cf526ad1b6cf526atoe1c3596072e1c3596072to20ae1a847820ae1a8478to5b9246a5935b9246a593to66072edc8566072edc85to133b8285bf133b8285bftoeb64945dd5eb64945dd5to39c002520e39c002520eto06a681e30106a681e301to80e6ee78fd80e6ee78fdtofe15136a5dfe15136a5dto1350c31dd21350c31dd2tod9788eea66d9788eea66tof9464188eff9464188efto0cef106f470cef106f47tofb59f22e0bfb59f22e0btod385167a23d385167a23to0d152dbdc70d152dbdc7to329b3a0157329b3a0157to36f08e986636f08e9866to16464df87616464df876to51b20bc18051b20bc180to888882dcc9888882dcc9to76c4ff5fd776c4ff5fd7to46992aa1c846992aa1c8to0c673470860c67347086to81f68007e981f68007e9toe0f35dd7c9e0f35dd7c9tob9e0dfebb4b9e0dfebb4to80cd853a1c80cd853a1ctoa773747475a773747475toe074f88abfe074f88abftof8c44e2a4af8c44e2a4ato8672146a3e8672146a3eto860a340468860a340468to92f54f358192f54f3581to1535f437a01535f437a0toc02c85f5acc02c85f5actobf59d69426bf59d69426to3eead05c853eead05c85to46b85593e746b85593e7to6fee641f686fee641f68todb1f7bc2f8db1f7bc2f8tof971d6b383f971d6b383to07242d4c2107242d4c21toc869ff7286c869ff7286to0b310956310b31095631to76ef19c46f76ef19c46ftob9c03700d7b9c03700d7to9af098c6969af098c696toe651589221e651589221to59f3e3f8de59f3e3f8deto1f3cbf613f1f3cbf613fto4ca48b52874ca48b5287to08375c726108375c7261toa0502b8a99a0502b8a99to19dbc2081519dbc20815tof3d3a4d3d9f3d3a4d3d9to7e883942437e88394243to0bd837e5de0bd837e5detoc095e137fcc095e137fcto2e9ce189702e9ce18970to1cc8f837dd1cc8f837ddto07abe4b77407abe4b774to3d31fea4183d31fea418to28df6c22de28df6c22detoe07ca10e41e07ca10e41to21c3b09efc21c3b09efcto556fd07c12556fd07c12to274430b28b274430b28bto4dcaba7af94dcaba7af9to690b76503f690b76503ftodc7050a041dc7050a041to9666d73eef9666d73eefto96637b648496637b6484to28725dbcf528725dbcf5toae6b0ff2c8ae6b0ff2c8tob7857698d3b7857698d3to97d6e295cf97d6e295cfto4612d4fd204612d4fd20tod667909a60d667909a60to11931dedb311931dedb3to6f209f6cfd6f209f6cfdtodb9fb0ebacdb9fb0ebacto5e04863e605e04863e60toa24c2c7f0da24c2c7f0dtob628edaf88b628edaf88to8623e29f638623e29f63to76cb7beffe76cb7beffetoa2d51f614ca2d51f614ctoc96c95fd87c96c95fd87to5f180f3a505f180f3a50tod5632421fbd5632421fbto954bd57217954bd57217tof566b42a64f566b42a64to6e318c9a696e318c9a69to240c255d96240c255d96to5324a8e1845324a8e184to9fdc02030a9fdc02030ato75c60c0eef75c60c0eefto61918083c661918083c6to4699abc6244699abc624to3dcfb96f8b3dcfb96f8btoc07682adabc07682adabtoea0a59c398ea0a59c398toe790e9468ee790e9468etofd44fad0d3fd44fad0d3to81c7dfb90681c7dfb906todad9c56413dad9c56413tobe76dcaa21be76dcaa21to9e0001202f9e0001202fto27e1470cee27e1470ceetoc85016d570c85016d570to965abffc3e965abffc3etof6b9d209c1f6b9d209c1todfe97356c9dfe97356c9toe637265c40e637265c40tob78dfa964bb78dfa964bto73a7b1b68f73a7b1b68fto679f5cd71f679f5cd71fto5950fdbb805950fdbb80to5ce8692f3b5ce8692f3bto50dbdacb8c50dbdacb8cto7726bd407e7726bd407eto1ebb5833021ebb583302toa44999aa0ba44999aa0bto34f52f35d434f52f35d4to169b832b57169b832b57to01115195dd01115195ddtob1e33ea5cab1e33ea5cato22851163b822851163b8to79d3453efa79d3453efatoa9433aa57da9433aa57dto05f130322905f1303229to1baec07afa1baec07afato90fcde932d90fcde932dto940b62b3d3940b62b3d3to64480b1ec464480b1ec4to36d9cbc4ac36d9cbc4actocc5af3bc09cc5af3bc09toa3a1fa0db4a3a1fa0db4tod2d7713a74d2d7713a74to7c80151df27c80151df2to403c2dd353403c2dd353tob18cf4271fb18cf4271ftodfb6bff23fdfb6bff23ftofab338cd87fab338cd87toaa40846ec0aa40846ec0to1df62806181df6280618to2e3a110ee22e3a110ee2tobed434f64dbed434f64dto8429b491b58429b491b5to85ba47c81685ba47c816to3c24f5dfa83c24f5dfa8tofc4d0752b8fc4d0752b8toe9d73e5466e9d73e5466toc1817f6377c1817f6377to6cb500594a6cb500594atoeb57d330f9eb57d330f9to3a3cb682433a3cb68243toa67c36458aa67c36458ato7fa8c7491e7fa8c7491eto0f167aca7d0f167aca7dtob29c87e4f6b29c87e4f6to4961b559dd4961b559ddtodd922e5384dd922e5384toa002d55ba9a002d55ba9toe9f8a1775ee9f8a1775eto813a950ed2813a950ed2to117de1b071117de1b071tob77d26d15db77d26d15dto7eb8bc589d7eb8bc589dtoedab9957bdedab9957bdto5df3fde53d5df3fde53dto02064bb65302064bb653tob12f95014db12f95014dtocee7ec6dabcee7ec6dabto6c72c2c29a6c72c2c29ato40ff199c5040ff199c50toe2f147fdbfe2f147fdbfto897859eefb897859eefbtodd08849749dd08849749tod810e6f8d9d810e6f8d9toe2aaa4342echore(deps): update all dependenciesto fix(deps): update all dependenciese2aaa4342etocb9fb7207acb9fb7207atod012b2cbefd012b2cbefto6341ee4a5b6341ee4a5bto6b422c5e1f6b422c5e1fto260ff568f2260ff568f2to0304383d9b0304383d9btoee5e7936ccee5e7936ccto97f8577b5897f8577b58tobc41277f8ebc41277f8eto834cbb176f834cbb176fto1d3d3cfd6e1d3d3cfd6eto9784f011499784f01149to299be25c92299be25c92to8944d874408944d87440tof96c90de06f96c90de06tod4ad80722cd4ad80722cto205191b839205191b839to7ee97302cf7ee97302cftoeb8586a2d3eb8586a2d3to93f4d0dba993f4d0dba9to8684ab3afe8684ab3afetofadaab424efadaab424eto83e39ba33883e39ba338to02959e274502959e2745to39dfb13d2f39dfb13d2fto007fa227e7007fa227e7tod449f16f9ad449f16f9atoe91f5e9dd7e91f5e9dd7tob738c4b641b738c4b641tof37833c960f37833c960to06ff6715d006ff6715d0to5e16a77b935e16a77b93tocf049efa29cf049efa29tode6b15d925de6b15d925toabfde18677abfde18677toa7e0e5d5dca7e0e5d5dctodb0f37eb7edb0f37eb7etocb098d1c47cb098d1c47to95681e378895681e3788to18f2adc03f18f2adc03ftoad5d877ea7ad5d877ea7toafb037b26dafb037b26dtoc22eb14ca5c22eb14ca5to672ea55b88672ea55b88tob8e4ae68dbb8e4ae68dbto9c783d5d609c783d5d60to2bb4d205b02bb4d205b0to29fc0f97d329fc0f97d3toe795185542e795185542to278bb97164278bb97164to2a82af74562a82af7456to7f3ea9bec77f3ea9bec7to43c5207b4443c5207b44to2b1ccc797c2b1ccc797ctof83c426a56f83c426a56tof7f06ef11cf7f06ef11cto2e113539952e11353995toa5b0930c4ba5b0930c4bto5b5dd4301c5b5dd4301ctoc9344b277ac9344b277atoc8dd80da9fc8dd80da9fto907fb4789f907fb4789ftoc963fdb387c963fdb387to55b322988d55b322988dto664efb9ecf664efb9ecfto67398774d367398774d3tob85e6c1666b85e6c1666tof2dbd26350f2dbd26350toe6e0f5aa8ee6e0f5aa8eto39757796cf39757796cftoa4e01b493fa4e01b493fto7109471f237109471f23to8acf3a40558acf3a4055toa8456b9285a8456b9285to34d8ee6ef634d8ee6ef6to09ade2c58b09ade2c58btocb7de07f8fcb7de07f8fto4c4c0e41af4c4c0e41aftod252947624d252947624toc74ce1bf0bc74ce1bf0btof276864cb0f276864cb0toa7bd4960f8a7bd4960f8to53f843118e53f843118eto03404793fa03404793fatoe06e18c15fe06e18c15fto01ffecf59901ffecf599to0b526ffe550b526ffe55to1c61a782871c61a78287tof5a93f805df5a93f805dtoa46822fab7a46822fab7to96155ce0f596155ce0f5to2f664d8e292f664d8e29to7fafeb2e6c7fafeb2e6cto9625ec35709625ec3570to8092b354888092b35488to8079c3d1738079c3d173to3bb23f3f873bb23f3f87to1fe14b710f1fe14b710fto61380101676138010167to9d13c24d019d13c24d01to2cdd66b3972cdd66b397to65bcacf48465bcacf484toa00f1f5beca00f1f5becto9feeda1c749feeda1c74toa04763dfa5a04763dfa5tob9a1f02145b9a1f02145to5e9533b2955e9533b295toe5f044cac2e5f044cac2todc5c19c821dc5c19c821tofc975a896cfc975a896cto165f05f35b165f05f35btocd5cafd0b7cd5cafd0b7to889e7009da889e7009datoa97ff9171da97ff9171dtob8e2510797b8e2510797to19d83f010819d83f0108to88c7c4c09e88c7c4c09etocbc3abbd4bcbc3abbd4bto2f55a00b992f55a00b99todf66272cc4df66272cc4tof9f8a2c4e5f9f8a2c4e5toe735eeb577e735eeb577to49d9d36fe949d9d36fe9to42eaff77ec42eaff77ecto5d4ca313975d4ca31397tod9be173da0d9be173da0tob71fcdd336b71fcdd336tobbcd6c0e08bbcd6c0e08to9efd87b15c9efd87b15cto94909a81d194909a81d1to8de5ba04918de5ba0491to09d413516009d4135160to57638404825763840482to44554da7ce44554da7ceto4ce9fc8c664ce9fc8c66to5d435e51135d435e5113toe8f16829f1e8f16829f1to9b7352d6f69b7352d6f6to215d312120215d312120to977775ac25977775ac25to2d1a73391c2d1a73391cto2bc2daea8a2bc2daea8ato48cfeec36a48cfeec36atodc97ecf47fdc97ecf47fto6621adee9c6621adee9cto27dd4a45e727dd4a45e7to7778e0141f7778e0141fto5e23fe4e7f5e23fe4e7fto41ae2df47c41ae2df47cto027a8dd016027a8dd016to6dceacc17c6dceacc17cto56eca5a81556eca5a815to400fb16397400fb16397to34c9d86ed634c9d86ed6to2f1e3f03d12f1e3f03d1to334d8096ea334d8096eatof07f1c4a6ff07f1c4a6fto406a92e1a1406a92e1a1toe536bc917fe536bc917ftoaf658f24e9af658f24e9tof631f94340f631f94340to23fd3c14c423fd3c14c4tod014283fa9d014283fa9to754396650c754396650ctob4d5b8cb58b4d5b8cb58to260135e4f8260135e4f8tocd625e4b79cd625e4b79to0be37f3af90be37f3af9to87c17fea8087c17fea80toe127e22040e127e22040to4352d47a4a4352d47a4atof6bb22f002f6bb22f002tob84ef4f4b7b84ef4f4b7to846252c442846252c442to64b2f213eb64b2f213ebto4fab34a0494fab34a049to22c14faa0b22c14faa0bto11e0181f8b11e0181f8btoc2e7cb99d8c2e7cb99d8toe1025a26e8e1025a26e8to9ddc34e6c19ddc34e6c1to131a8775f1131a8775f1to2897803d0e2897803d0etof8633dcd93f8633dcd93tof7bd843ff5f7bd843ff5to2224ec37292224ec3729toee5a7b6404ee5a7b6404toa737e3b0d6a737e3b0d6to046ad38b23046ad38b23tof5a76b8aa6f5a76b8aa6tobcc2cf39cabcc2cf39catoe991d7ad55e991d7ad55to3a96a786fc3a96a786fctoc57a7d07e3c57a7d07e3toec47db71e7ec47db71e7toa698884b87a698884b87to08404cb51008404cb510toef5aa1e6f3ef5aa1e6f3tof5c6f330d9f5c6f330d9to9563cd9b719563cd9b71to9e80b2d2c69e80b2d2c6to885c7cbfc8885c7cbfc8toc45386d80ac45386d80ato8c69e275278c69e27527to0409717fa40409717fa4to14e89a42d814e89a42d8tocf68270939cf68270939to840d86181d840d86181dtoe60c4ddfbce60c4ddfbcto240be10cb3240be10cb3to14015b984714015b9847tof7166895ccf7166895cctob6ad4e8a72b6ad4e8a72to8171aa814f8171aa814fto7436b744737436b74473todf9c8233a6df9c8233a6tod2919c68add2919c68adto61df0de88561df0de885tod5e68b8960d5e68b8960to7d916415e07d916415e0to04ecf5beab04ecf5beabto5678845a885678845a88toe9b8f3a47ee9b8f3a47eto0fb31ab8f00fb31ab8f0to44700267624470026762toafab52c067afab52c067to662f3c71a0662f3c71a0to1a57043b421a57043b42to89457a122189457a1221to9c7be458379c7be45837to0ee314d6c30ee314d6c3toedf7f69743edf7f69743to9ac4cafbc49ac4cafbc4to5a2d5569e75a2d5569e7to3e24aeacf53e24aeacf5to7429ad06687429ad0668to57103764b657103764b6to0fb869849b0fb869849bto222753019b222753019btob830e11a6fb830e11a6ftoe065fb8333e065fb8333to681fa52d58681fa52d58tof12eaa18f8f12eaa18f8to9b68505c1d9b68505c1dto950a368883950a368883to931ca5c04a931ca5c04ato285c6193e4285c6193e4to35aee2e15735aee2e157to528be43e22528be43e22to9a9825ea829a9825ea82to7f499b5a1f7f499b5a1fto5f0a299fd85f0a299fd8to16f686370016f6863700tofa093b6708fa093b6708to0eb3d8fe1b0eb3d8fe1bto7ffb19d6f37ffb19d6f3to14d291b7fb14d291b7fbtoa65a771ce3a65a771ce3to2b822c34592b822c3459to7453021a8c7453021a8cto6906f8405a6906f8405ato177e02a0fd177e02a0fdto250ee851ad250ee851adto254e85781e254e85781etoe63a7d52f9e63a7d52f9tof76f690c15f76f690c15to151c57390a151c57390ato80fbbd51f880fbbd51f8to9014675b349014675b34to0634fe48bf0634fe48bftoa67cadfc03a67cadfc03tofa2d8e23b1fa2d8e23b1to3734fe97ec3734fe97ecto7378ab93b57378ab93b5to04b5978a7c04b5978a7cto4011fce2aa4011fce2aato0e14beff210e14beff21to311ddbae12311ddbae12to69fdbed3ab69fdbed3abtoaf1751bc3caf1751bc3ctofa3effc46afa3effc46ato35080c320e35080c320etoe4a5d98bcbe4a5d98bcbtoe607ba6127e607ba6127to23e268506f23e268506fto6e320acd516e320acd51to2f472edac02f472edac0toa559741afca559741afctoc7bf8ee9d0c7bf8ee9d0to8eeabb71448eeabb7144to587e7f2cc1587e7f2cc1tof5f541e2e5f5f541e2e5to8519d9881c8519d9881ctoe836c6169ce836c6169cto5e67282a105e67282a10to3554dbb15f3554dbb15fto30e58a262130e58a2621to69410629496941062949to154a0ccc47154a0ccc47to8c33f19f728c33f19f72to66a7e324c866a7e324c8to90ca08a56290ca08a562to560533623f560533623ftob3b0c61974b3b0c61974to7770deacfb7770deacfbtocc39fcae37cc39fcae37toffb16a948affb16a948ato2144f645662144f64566to121b3a63ce121b3a63ceto939238084b939238084bto290c242d11290c242d11to8ee8d5ad468ee8d5ad46toef3a19552eef3a19552etoe22ae6cdd2e22ae6cdd2to85630b649c85630b649ctoe03171f8d3e03171f8d3tof3295e7d8af3295e7d8atob401e16683b401e16683to56916e2f2f56916e2f2ftod8fd8c3ef9d8fd8c3ef9toc06d04b1c2c06d04b1c2to154e76d696154e76d696to72c449cffc72c449cffcto99632754e899632754e8to79a1525d4f79a1525d4fto4297a5d53c4297a5d53cto3a68aa37373a68aa3737tode9a3efe0cde9a3efe0ctof6e8b3c44af6e8b3c44ato20b1b3a90f20b1b3a90fto51943511595194351159tod3137466fad3137466fato78fcf014e678fcf014e6to3b19e8c8053b19e8c805to49c72a81a949c72a81a9toaa11977821aa11977821to4b1e0a25624b1e0a2562toef57454090ef57454090to314cb8ed43314cb8ed43to8eb295868f8eb295868fto1cc491d8c61cc491d8c6to9b804a0cd29b804a0cd2to03b2a69a1f03b2a69a1ftobe1897cbe8be1897cbe8to7a6ef70e427a6ef70e42toe68de67babe68de67babto85e16d905185e16d9051to439a3458b1439a3458b1to7a0211dd167a0211dd16to41765c0f2041765c0f20to77c11218bf77c11218bftod857eaa0e1d857eaa0e1tof1e3b7a904f1e3b7a904toafe740fdbcafe740fdbctoc61f03788cc61f03788ctoa2fe1be320a2fe1be320to7b9d124b197b9d124b19toe95e11e4b7e95e11e4b7to7cd6129bbc7cd6129bbcto28b5d77f6128b5d77f61tob33b1d4583b33b1d4583to99654a601f99654a601fto76c2a4527976c2a45279toaa20df2229aa20df2229tobcf4101f75bcf4101f75tob968f46485b968f46485tod9e59da68cd9e59da68cto7ec1cd4dcaView command line instructions
Checkout
From your project repository, check out a new branch and test the changes.