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:
0.4.24->0.4.424.2.1->4.5.530.6.2->0.6.50.2.19->0.19.00.6.8->0.6.120.16.1->0.20.01.0.95->1.0.1450.9.19->0.9.341.27.0->1.48.0Release Notes
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!
v0.4.26Compare Source
The changes from #807 we merged for 0.4.25 unfortunately restricted parsing in a way that was incompatible with earlier 0.4.x releases. We reverted this in #1113. A small amount of other changes were merged since.
DurationRoundpanics from issue #1010 (#1093, thanks to @pitdicker)Thanks on behalf of the chrono team (@djc and @esheppa) to all contributors!
v0.4.25Compare Source
Time for another maintenance release. This release bumps the MSRV to 1.56; given MSRV bumps in chrono's dependencies (notably for syn 2), we felt that it no longer made sense to support any older versions. Feedback welcome in our issue tracker!
Additions
NaiveDateTime::and_utc()method (#952, thanks to @klnusbaum)Hashfor most pub types that also derivePartialEq(#938, thanks to @bruceg)parse_and_remainder()methods (#1011, thanks to @pitdicker)DateTime::fix_offset()(#1030, thanks to @pitdicker)#[track_caller]toLocalResult::unwrap(#1046, thanks to @pitdicker)#[must_use]to some methods (#1007, thanks to @aceArt-GmbH)PartialOrdforMonth(#999, thanks to @Munksgaard)impl From<NaiveDateTime> for NaiveDate(#1012, thanks to @pezcore)Fixes
NaiveWeek::last_day(#1070, thanks to @pitdicker)LocaltoFixedOffset(#1041, thanks to @pitdicker)Refactoring
Local(#992, thanks to @nekevss)Documentation
Internal improvements
clockfeature (#1061, thanks to @pitdicker)--no-default-features(#1059, thanks to @pitdicker)bench_year_flags_from_yearfrom being optimized out (#1034, thanks to @pitdicker)test_datetime_parse_from_str(#1078, thanks to @pitdicker)set -eux, use bash (#1103, thanks to @jtmoon79)LANGtocin gnudate(#1089, thanks to @scarf005)TryFrom(#1086, thanks to @pitdicker)On behalf of @djc and @esheppa, thanks to all contributors!
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 possiblev4.3.4Compare Source
Features
Error::exit_codev4.3.3Compare Source
Features
Command::deferfor delayed initialization of subcommands to reduce startup times of large applications like denov4.3.2Compare Source
Fixes
--helpwith custom templatesv4.3.1Compare Source
Fixes
value_terminatoreven in the presence of later multiple-value positional argumentsv4.3.0Compare Source
Fixes
lastassertionvalue_terminatorhas higher precedence thanallow_hyphen_values--helpv4.2.7Compare Source
Fixes
ArgMatchesv4.2.6Compare Source
Features
impl Eq<std::any::TypeId> for clap_builder::util::AnyValueIdv4.2.5Compare Source
Fixes
v4.2.4Compare Source
Documentation
Command::stylev4.2.3Compare Source
Features
Command::stylesfor theming help/errors (behindunstable-styles)v4.2.2Compare Source
Internal
eyre-rs/eyre (color-eyre)
v0.6.5Compare Source
v0.6.4Compare Source
v0.6.3Compare Source
dagger/dagger (dagger-sdk)
v0.19.7Compare Source
Added
--eager-runtimeflag todagger functionsby @TomChv in https://github.com/dagger/dagger/pull/11413Fixed
Contributors
Special thanks to our external contributors this release!
What to do next?
v0.19.6Compare Source
Fixed
Contributors
Special thanks to our external contributors this release!
What to do next?
v0.19.5Compare Source
Fixed
Contributors
Special thanks to our external contributors this release!
What to do next?
v0.19.4Compare Source
Added
Function calls now have configurable caching behavior, including TTLs. Function calls with cached results can skip execution, which often significantly speeds up your workflows. Instructions and more details on the configuration options can be found in the docs.
🚨 Modules initialized before v0.19.4 will need to explicitly opt-in to the new caching behavior.
GitRepository.uncommitedAPI to get changeset of dirty changes in the working directory by @jedevc in https://github.com/dagger/dagger/pull/11241engine clientsAPI by @matipan in https://github.com/dagger/dagger/pull/11308Fixed
Dependencies
Contributors
Special thanks to our external contributors this release!
What to do next?
v0.19.3Compare Source
Added
This is for instance really useful from inside self-chainable blocks (using with) where an error can't be returned.
Changeset.isEmptyAPI by @jedevc in https://github.com/dagger/dagger/pull/11237Fixed
Directory.diffon identical directories by @jedevc in https://github.com/dagger/dagger/pull/11268Dependencies
What to do next?
v0.19.2Compare Source
Fixed
What to do next?
v0.19.1Compare Source
Added
User defaults: persist any dagger function argument to .env by @shykes in https://github.com/dagger/dagger/pull/11034
This feature allows user to save arguments to their dagger functions to a local file, instead of re-typing them at every call. This way, the sandboxing of functions is preserved without sacrificing end-user convenience.
To use this feature, simply add variables to a local
.envfile reachable from your working directory. The format of the variables should be as follows:v0.19.0Compare Source
🔥 Breaking Changes
GitRepository.branch/GitRepository.tag/GitRepository.commitnow only accept valid branches/tags/commits by @jedevc in https://github.com/dagger/dagger/pull/11038GitRepository'swithAuthTokenandwithAuthHeaderare now no-ops by @jedevc in https://github.com/dagger/dagger/pull/11032Instead authentication should only be provided at the top-level
gitquery, since it's now queried immediately.Host.setSecretFilemethod by @jedevc in https://github.com/dagger/dagger/pull/11115Use the
file://secret provider instead.LocalCache.keepBytesfield by @jedevc in https://github.com/dagger/dagger/pull/11115Instead use the more specific
LocalCache.reservedSpace, which it was an alias for.Container.buildAPI by @jedevc in https://github.com/dagger/dagger/pull/11118Use
Directory.dockerBuildinstead.Added
engine.jsonby @matipan in https://github.com/dagger/dagger/pull/11040Fixed
What to do next?
v0.18.19Compare Source
Added
addressAPI: a unified address to load containers, directories, secrets, etc by @shykes in https://github.com/dagger/dagger/pull/10770Changeset.exportfunction to allow exporting changesets from the API by @jedevc in https://github.com/dagger/dagger/pull/11064Fixed
Directory.withFileswhich set the wrong path by @jedevc in https://github.com/dagger/dagger/pull/11087What to do next?
v0.18.18Compare Source
Added
EnvFiletype by @shykes in https://github.com/dagger/dagger/pull/10949~/.config/dagger/ca-certificatesto engine by @jedevc and @matipan in https://github.com/dagger/dagger/pull/11019Changesettype by @vito in https://github.com/dagger/dagger/pull/10946Directory.findUpperforms a find-up search in a directory snapshotHost.findUp(): performs a find-up search in the host filesystemFixed
originon git checkouts by @jedevc in https://github.com/dagger/dagger/pull/11031defaultPathvalues to contain/by @jedevc in https://github.com/dagger/dagger/pull/11048What to do next?
v0.18.17Compare Source
🔥 Breaking Changes
Automatically apply
.gitignorepatterns on directory loading for module call by @TomChv and @jedevc in https://github.com/dagger/dagger/pull/10883 \Add
NoGitAutoIgnoreargument toHost.Directoryto disable this behavior.Added
Host.containerImageAPI to load images from the host container image store by @jedevc in https://github.com/dagger/dagger/pull/10810Container.combinedAPI to get both standard output and standard error afterwithExecby @eunomie https://github.com/dagger/dagger/pull/10924GitRepository.urlAPI to get the fully resolved URL of a git repository by @jedevc in https://github.com/dagger/dagger/pull/10959Containers,Directorys and runningServicesby @jedevc in https://github.com/dagger/dagger/pull/10867.netrcfile by @jedevc in https://github.com/dagger/dagger/pull/10957Fixed
gitnow automatically determines the protocol when using a scheme-less URL (instead of defaulting tohttps://) by @jedevc in https://github.com/dagger/dagger/pull/10960What to do next?
v0.18.16Compare Source
What to do next?
v0.18.15Compare Source
Added
container.Existsanddirectory.ExistsAPI for testing if a file exists, and optionally type (e.g. file or directory) by @alexcb in https://github.com/dagger/dagger/pull/10449containerpodmannerdctlfinchgitRef.commonAncestorAPI to find the common ancestor between two references by @jedevc in https://github.com/dagger/dagger/pull/10849Fixed
httpandgitstdlib commands by @helderco in https://github.com/dagger/dagger/pull/10845includeDeprecatedarg by @jedevc in https://github.com/dagger/dagger/pull/10889Contributors
Special thanks to our external contributors this release!
What to do next?
v0.18.14Compare Source
Fixed a regression causing the LLM to see malformed non-string scalar responses.
What to do next?
v0.18.13Compare Source
Added
GitRepository.latestVersionfield to get a git ref of the latest semver tag by @jedevc in https://github.com/dagger/dagger/pull/10679Fixed
~), commonly used in Bitbucket Server for user-scoped repositories (e.g.,extranet.example.com/bitbucket/scm/~user/repo.git) by @grouville in https://github.com/dagger/dagger/pull/10692What to do next?
v0.18.12Compare Source
Changed
OrbStack users were by default ending up with a custom CA in their engine and automatically installed in each container, adding overhead. We now ignore that CA cert by default to improve performance in the default case.
Fixed
What to do next?
v0.18.11Compare Source
🔥 Breaking Changes
value) for SDKs that support enum members (see SDK-specific release notes).
This may break loading modules (including in compat mode) that were
previously setting enum default values in function signatures, if those values
weren't valid - these would only trigger an error on calling that function,
while now it's triggered during module initialization.
namespaceargument fromCacheVolumeby @sipsma in https://github.com/dagger/dagger/pull/10586This arg was only ever meant for internal usage within the API's
implementation, but previously couldn't be hidden from the public API. Now it
is properly internal-only and thus not accessible to external clients. Any use
of the arg should just be removed.
sweepengine option name tosweepSizeby @jedevc in https://github.com/dagger/dagger/pull/10560This option was previously incorrectly named - the docs were correct, but the
code was not properly updated.
Added
New top-level
cloudAPI for getting information about the dagger cloud session by @marcosnils in https://github.com/dagger/dagger/pull/10580This includes the
cloud.traceURLfield for getting the current trace URL.Allow
--no-mod/-Mflag in more places to disable automatic module loading by @jedevc in https://github.com/dagger/dagger/pull/10595Propagate exit codes properly in shell by @helderco in https://github.com/dagger/dagger/pull/10438
The
.exitbuiltin was added.The
.waitbuiltin now accepts a list of job ids to wait for. For example:The above example should exit with status code 1 because
.waitreturnsthe exit of the first command that failed. This is different from Bash
which returns the exit status of the last command in the list, even if
it succeeded when others have failed.
Add
httpAuthUsernameparameter togitto allow basic auth with usernames by @grouville in https://github.com/dagger/dagger/pull/10605Additionally this field is populated from the client's git credential helper,
similarly to passwords.
You can now set
$DAGGER_PROGRESSto configure your preferred progress format globally, instead of passing the--progressflag every time by @vito in https://github.com/dagger/dagger/pull/10617Added a new
dotsprogress format, which is a much quieter alternative toplainsuitable for use in CI by @vito in https://github.com/dagger/dagger/pull/10617This format focuses on printing logs and reduces everything else to just
green dots and red Xes for success/failure, similar to test runners like RSpec.
Demo
Changed
.help <module>by @helderco in https://github.com/dagger/dagger/pull/10487ExecErrorso you can see the stdout/stderr and exit code programmatically by @vito in https://github.com/dagger/dagger/pull/10585Fixed
In one scenario this reduced heap usage from 14GB to 7GB.
In the same scenario as the high log volume fix, this further reduced heap usage from 7GB to 1.4GB.
plainprogress format being way more verbose than intended by @vito in https://github.com/dagger/dagger/pull/10636Directory.withSymlinkaccidentally escaping from the selected sub-directory by @alexcb in https://github.com/dagger/dagger/pull/10563What to do next?
v0.18.10Compare Source
Added
Improved TUI progress visualizer by @vito in https://github.com/dagger/dagger/pull/10468
Added
Ehotkey in TUI for-E/--no-exitat runtime by @vito in https://github.com/dagger/dagger/pull/10511Add support for using engine-wide default GC policy when triggering manual local cache prunes by @sipsma in https://github.com/dagger/dagger/pull/10505
The manual prune API now supports an optional arg to enable honoring the engine-wide default automatic GC configuration. e.g.
dagger core engine local-cache prune --use-default-policy
New
container.WithSymlinkanddirectory.WithSymlinkAPI for creating symbolic links by @alexcb in https://github.com/dagger/dagger/pull/10435Unbundle the SDK interface to support partial implementation by @TomChv in https://github.com/dagger/dagger/pull/10525
When you implement a custom SDK, you can now choose to just implement part of the
SDKinterface depending on your needs.That means:
dagger developno longer fails if your SDK just implement theRuntimeinterface, it will simply not callCodegenif not defined.dagger callanddagger functionsgive a clear error message if it's not supported by the SDK.See https://github.com/dagger/dagger/issues/7707 for more information.
Fixed
Dependencies
What to do next?
v0.18.9Compare Source
Added
gc.sweepSizesetting forengine.jsonby @jedevc in https://github.com/dagger/dagger/pull/10420This setting allows controlling how much data to clear in a single GC sweep.
Changed
noCachearg toHost.directoryto auto reload contextual directories in persistent shell/prompt sessions by @cwlbraa in https://github.com/dagger/dagger/pull/10342Fixed
_prefix not being reserved for interpreter builtins by @helderco in https://github.com/dagger/dagger/pull/10452What to do next?
v0.18.8Compare Source
Fixed
What to do next?
v0.18.7Compare Source
Fixed
gitAPI calls consistently respect proxy settings by @jedevc in https://github.com/dagger/dagger/pull/10352Added
Query.httpby @jedevc in https://github.com/dagger/dagger/pull/10317nameallows overriding the filename to downloadpermissionsallows setting the permissions on the resulting fileauthHeaderallows passing a secret in theAuthorizationHTTP headerWhat to do next?
v0.18.6Compare Source
🔥 Breaking Changes
Cache URI-based secrets based on their plaintext value rather than the URI by @sipsma in https://github.com/dagger/dagger/pull/10311
Previously, the "cache key" for URI-based secrets (e.g.
env://FOO,file:///some/path, etc.) was the URI string. This meant that operations including the secret (e.g. as an environment variable in a Container) would be cached based on the URI value. If two secrets from different clients had the same URI but different plaintext values, cache for operations that include them would be shared.In many cases, even when URIs were the same, the plaintext of secrets could be meaningfully different, which made this behavior surprising and lead to unexpected results.
Now, URI-based secrets are cached based on secure hashes of their plaintext value. Two secrets that have the same URI but different plaintext values will be cached separately, and operations that include them will not share cache.
However, there are cases where users do want secrets with different plaintexts to share cache, e.g. secrets that rotate in plaintext value frequently but aren't meaningfully different and thus shouldn't bust the cache of operations that include them.
To continue supporting those use cases, there is a new optional
cacheKeyargument toSecretthat can be used to specify a custom cache key. If provided, the cache key will be used instead of the default plaintext-based cache key, allowing any secrets sharing that cache-key to be cached together.SDKs can provide this as an optional argument to the
Secretconstructor. Other example usages:dagger shell:
dagger shell -c "some-function --secret-arg $(secret env://FOO --cache-key my-cache-key)"dagger call (supports a special syntax that sets the cache key via a query param in the URI):
dagger call some-function --secret-arg env://FOO?cacheKey=my-cache-keyAdded
GitRepository.branchesAPI by @jedevc in https://github.com/dagger/dagger/pull/10250Filetop-level field added to allow easier creation ofFileobjects by @jedevc in https://github.com/dagger/dagger/pull/10290Fixed
GitRepository.tagspatternsarg is now respected for local git repositories by @jedevc in https://github.com/dagger/dagger/pull/10250dagger callby @helderco in https://github.com/dagger/dagger/pull/10305Container.buildwith a Dockerfile that isFROM scratchby @sipsma in https://github.com/dagger/dagger/pull/10332What to do next?
v0.18.5Compare Source
Added
deptharg toGitRef.treeto control the depth of a clone by @jedevc in https://github.com/dagger/dagger/pull/9980GitRef.reffield for resolving the full ref string for a reference by @jedevc in https://github.com/dagger/dagger/pull/9980Fixed
Git.treecheckouts by @jedevc in https://github.com/dagger/dagger/pull/9980withExecwhen secrets created bySetSecretin function calls are included by @sipsma in https://github.com/dagger/dagger/pull/10260What to do next?
v0.18.4Compare Source
Fixed
DirectoryandFileflags by @helderco in https://github.com/dagger/dagger/pull/10169CurrentModuleAPI during SDK module initialization by @sipsma in https://github.com/dagger/dagger/pull/10213llm.withModelfrom a module function by @sipsma in https://github.com/dagger/dagger/pull/10230.plaintexton a URI-based secret from a module w/ cache hit by @sipsma in https://github.com/dagger/dagger/pull/10223setSecretprovided empty plaintext value and passed between function calls by @sipsma in https://github.com/dagger/dagger/pull/10223Experimental
What to do next?
v0.18.3Compare Source
Added
--recursiveflag fordagger developby @jedevc in https://github.com/dagger/dagger/pull/9860Container.buildandDirectory.dockerBuildby @sipsma in https://github.com/dagger/dagger/pull/10088ttlfor local secret caching for vault by @rajatjindal in https://github.com/dagger/dagger/pull/9997Fixed
Experimental
What to do next?
v0.18.2Compare Source
Changed
with-execpositional arguments by @helderco in https://github.com/dagger/dagger/pull/10063Fixed
What to do next?
v0.18.1Compare Source
Added
addressAPI: a unified address to load containers, directories, secrets, etc by @shykes in https://github.com/dagger/dagger/pull/10770Changeset.exportfunction to allow exporting changesets from the API by @jedevc in https://github.com/dagger/dagger/pull/11064Fixed
Directory.withFileswhich set the wrong path by @jedevc in https://github.com/dagger/dagger/pull/11087What to do next?
v0.18.0Compare Source
Changed
Fixed
What to do next?
v0.17.2Compare Source
Added
Directory.filterAPI for improved ergonomics by @rajatjindal in https://github.com/dagger/dagger/pull/9976This was previously possible by doing
Query.directory.withDirectory("", dir), but this breaks the chain.Changed
What to do next?
v0.17.1Compare Source
dag.Llm. To fix, simply change todag.LLMWhat to do next?
v0.17.0Compare Source
Added
Stabilized Dagger Shell by @helderco in https://github.com/dagger/dagger/pull/9896
Find out more at https://docs.dagger.io/features/shell/
New top-level
LLMAPI to allow integrating LLMs with native Dagger types in https://github.com/dagger/dagger/pull/9628Find out more at https://docs.dagger.io/ai-agents/
Changed
/run/dagger/engine.sockby @sipsma in https://github.com/dagger/dagger/pull/9866The previous socket path still exists for backwards compatibility but may be removed in a future version.
Directory.globandDirectory.entriesnow return a trailing slash to distinguish from regular files by @jedevc in https://github.com/dagger/dagger/pull/9118What to do next?
v0.16.3Compare Source
Added
Directory.asGitAPI for converting a directory into a git repository by @jedevc in https://github.com/dagger/dagger/pull/9730dagger callforGitRepositoryandGitReftypes by @jedevc in https://github.com/dagger/dagger/pull/9844Container.asTarballby @jedevc in https://github.com/dagger/dagger/pull/9395Changed
Dependencies
What to do next?
v0.16.2Compare Source
Added
Directory.namefield to retrieve current directory name by @TomChv in https://github.com/dagger/dagger/pull/9617Fixed
dagger callordagger functionscalled in directory with no modules - it now errors cleanly by @sipsma in https://github.com/dagger/dagger/pull/9658dagger.jsonby @sipsma in https://github.com/dagger/dagger/pull/9659Dependencies
What to do next?
v0.16.1Compare Source
Fixed
cannot sub-select 1th item from *dagql.PostCallTypedby @sipsma in https://github.com/dagger/dagger/pull/9634What to do next?
v0.16.0Compare Source
🔥 Breaking Changes
To match automatic configuration,
insecure-entitlementsnow includessecurity.insecurewhen configuring the engine manually by @jedevc in https://github.com/dagger/dagger/pull/9513Module load performance is improved and related API refactored by @sipsma in https://github.com/dagger/dagger/pull/9505
Loading of modules (the
load modulestep shown in progress output) is faster now in many cases. In particular:Users of modules with large numbers of dependencies or in large git repositories are expected to see the most immediate benefit.
For some concrete numbers, here are
load moduletimes for thedagger-dev's module in Dagger's repository under different scenarios:dagger call --helpon new engines with an empty cachedagger call --helpwith no file changes in the repo:dagger call --helpafter making a change to a random source code file in the repo:These improvements in cache utilization are also setup for future improvements not only in
load moduletimes but function call times more generally.This improvement comes with a few breaking changes that are not expected to impact most users. However, the changes require that users upgrade their CLI to v0.16.0 in order to connect to v0.16.0 engines. Older CLIs will error when connecting to newer engines.
In terms of the breaking changes, impacted users are those who:
They may need to update their dagger.json configuration file to add an explicit
"include"setting to ensure those extra files or directories are loaded with the module. This is because numerous files previously implicitly loaded are now skipped by default, which contributes to the performance improvements.For example, if your module code is in
.daggerand relies on thego.modfile in the parent directory, you would add the following to yourdagger.jsonfile:The values in the
"include"array are relative to the directory containingdagger.json. They can be also be glob patterns (e.g."**/*.txt"). To explicitly exclude some files matched by a previous include pattern, you can prepend the include pattern with a!character (e.g."!**/foo.txt").excludesetting existed but has now been superseded by prefixing an include pattern with a!character. However, this is backwards-compatible, so existingexcludesettings will be automatically turned into equivalent!-prefixed include settings when runningdagger develop. No user intervention is needed.The core API's
ModuleSourceandModuletypes have also undergone some cleanup that includes breaking changes. Most users do not interact with these APIs, but any that do may need some minor adjustments to their code. In particular:Module.initializeno longer needs to be called; the module is initialized on creationResolveFromCallerno longer needs to be called for local module sources; context is automatically loaded and resolved efficiently as needed by other API callsAdded
dag.Hostoperations by @jedevc in https://github.com/dagger/dagger/pull/9610What to do next?
v0.15.4Compare Source
Added
dagger.jsonsdkfield tosdk.sourceby @rajatjindal in https://github.com/dagger/dagger/pull/9454Fixed
What to do next?
v0.15.3Compare Source
Added
Note: the precision of float is limited to float64 inside the engine.
Fixed
Container.WithFilesby @jedevc in https://github.com/dagger/dagger/pull/9457Dependencies
What to do next?
v0.15.2Compare Source
Added
dagger updatecommand to update dependencies indagger.jsonby @rajatjindal in https://github.com/dagger/dagger/pull/8839$schemaproperty indagger.jsonby @JacobLey in https://github.com/dagger/dagger/pull/9069Changed
CacheVolumesare now namespaced between different modules by @rajatjindal in https://github.com/dagger/dagger/pull/8724CACHEDoperations for--progress=plainoutput by @marcosnils in https://github.com/dagger/dagger/pull/9344Fixed
AsServiceby @marcosnils in https://github.com/dagger/dagger/pull/9247Container.terminalby @jedevc in https://github.com/dagger/dagger/pull/9338Container.upbehaves as identically as possible toContainer.AsService.upby @jedevc in https://github.com/dagger/dagger/pull/9231dagger installalways inserts dependencies in the right order by @jedevc in https://github.com/dagger/dagger/pull/9052What to do next?
v0.15.1Compare Source
Fixed
What to do next?
v0.13.7Added
expectarg forContainer.withExecby @jedevc in https://github.com/dagger/dagger/pull/8466This enum arg allows specifying valid return statuses for which the command
can return without failing immediately.
Container.exitCodefield to get the exit code of the lastwithExecby @jedevc in https://github.com/dagger/dagger/pull/8466Changed
The new policies attempt to co-operate with other applications using the disk
and will adjust its cache usage accordingly.
Previously, when a function chain in
dagger callended in an object, we'dprint all functions that return a simple value and don't have any arguments.
Now, only object fields will be included, not all functions.
Fixed
withExecs using theExperimentalPrivilegedNestingflag by @sipsma in https://github.com/dagger/dagger/pull/8776What to do next?
v0.11.9Compare Source
Fixed
What to do next?
v0.9.8Compare Source
🔥 Breaking Changes
Added
What to do next?
v0.3.3Compare Source
v0.3.2Compare Source
v0.3.1Compare Source
v0.3.0Compare Source
v0.2.22Compare Source
Changelog
Changes
286d86d: Fix regression when printing 0.1 compat error msg (@marcosnils)5213e0d: Manually flush events in case of exiting without returning from (@marcosnils)c423fcd: Send telemetry event when plan does not evaluate (@marcosnils)0ce2907: feat(universe): add codecov uploader to alpha (@sagikazarmark)455e318: feat: add python aws cdk package (@Butterneck)5b27724: feat: add support for HTTP, HTTPS proxy (@samalba)a855c66: feat: restore code to generate docs from a package name (@samalba)49956f4: feat: restore doc generation for the whole library + index (@samalba)33bf208: feat: support parsing and providing Pulumi outputs as secret (#2745) (@rawkode)3e5f13a: fix: prevent auth panic and handle auth race condition (@marcosnils)f640234: universe: bash: #RunSimple (@shykes)Full Changelog: https://github.com/dagger/dagger/compare/v0.2.21...v0.2.22
What to do next?
v0.2.21Compare Source
Changelog
Changes
a54b635: Add a possible configuration to use dagger in TravisCi (@jjuarez)0b24557: Avoid to make more complex the build command adding the cache stuff (@jjuarez)7be1a51: Change to follow the style in the original guide (@jjuarez)d456665: Effectively use embedding (@Butterneck)7404748: Fixes a markdown issue (@)d3796b8: Fixes a somekind of markdown issue (@)2e707d2: [Docs] Categories UI improvement (@crjm)f0b86d6: [Docs] Fix hyperlinks rendering inside admonitions (@crjm)9bc90e2: enforce configuration mount (@Butterneck)d958b46: feat: add support for aws sso credentials and container credentials relative (@Butterneck)3127b4a: fix: Correct case for private definition per style (#2691) (@jpadams)2b1ad9d: fix: Correct case for private definition per style (#2691) (@jpadams)2d6cd10: fix: Correct docs routes (@jpadams)5e04ea5: fix: redirect better visually (@jpadams)08c9f60: fix: visual fix (@)992fe08: print Dagger Cloud URL when starting plan (@marcosnils)ccf81d7: revert useless image configurations (@Butterneck)bc64ebc: universe: php: composer: Allow container to accept a docker.#image (@rob-vanderlee-jvs)07c5397: universe: php: composer: Formatted code (@rob-vanderlee-jvs)7b40538: universe: php: composer: Make image and repository configurable (@rob-vanderlee-jvs)3355703: universe: php: composer: Pulled apart image and container to seperate file and made package more extensible (@rob-vanderlee-jvs)d95417a: universe: php: composer: Removed string as argument for repository (@rob-vanderlee-jvs)386d74a: universe: php: composer: Use env directly and restructure output to be one entry (@rob-vanderlee-jvs)Full Changelog: https://github.com/dagger/dagger/compare/v0.2.20...v0.2.21
What to do next?
v0.2.20Compare Source
Changelog
Changes
e21acdd: Add alpha and beta paths (@jpadams)901269c: Added package to use the package manager composer (#2620) (@rob-vanderlee-jvs)14bf990: Merge branch 'main' into dependabot/npm_and_yarn/website/concurrently-7.2.2 (@slumbering)0b89d1f: Start w getting started (#2690) (@jpadams)2f8e6d6: Use a worker pool to send telemetry data (@marcosnils)c314506: add offline_access scope so refresh token flow can be performed (@marcosnils)209f6d5: core:#Mountsupports inline file (@TomChv)5a7762a: feat: Add install directory customization (@clly)4d0730b: feat: Support Helm upgrade and custom namespace (#2674) (@olljanat)3e6491c: feat: add golangci to alpha universe (#2654) (@sagikazarmark)a064577: feat: allow custom image usage on go.#Build (#2632) (@Butterneck)4714f91: fix: add additional flags to command (#2641) (@Siafu)1c60cdd: fix: added a variable to customize the binary in go.#Build (@xocasdashdash)ba2d442: fix: correct GitHub camel case (#2678) (@jpadams)61e6971: fix: reversego.modchange in merged PR (@helderco)46b9b0d: universe(x): add experimental Scaleway package (@TomChv)240f1a9: universe(x): add experimental Scaleway package tests (@TomChv)14e4b86: universe(x): move Scaleway pkg from x to alpha (@TomChv)35baced: updated the dagger cloud doc (@mircubed)Full Changelog: https://github.com/dagger/dagger/compare/v0.2.19...v0.2.20
What to do next?
rust-lang/git2-rs (git2)
v0.20.2Compare Source
0.20.1...0.20.2
Added
Status::WT_UNREADABLE.#1151
Fixed
GIT_EDIRECTORY,GIT_EMERGECONFLICT,GIT_EUNCHANGED,GIT_ENOTSUPPORTED, andGIT_EREADONLYtoError::raw_code.#1153
Indexer::new.#1160
v0.20.1Compare Source
0.20.0...0.20.1
Added
Repository::branch_upstream_merge()#1131
Index::conflict_get()#1134
Index::conflict_remove()#1133
opts::set_cache_object_limit()#1118
Repo::merge_file_from_index()and associatedMergeFileOptionsandMergeFileResult.#1062
Changed
urldependency minimum raised to 2.5.4#1128
#1121
CredentialHelper::config) now checks for helpers that start with something that looks like an absolute path, rather than checking for a/or\anywhere in the helper string (which resolves an issue if the helper had arguments with/or\).#1137
Fixed
Remote::url_bytesif the url is empty.#1120
Patch::delta,Patch::hunk, andPatch::line_in_hunk. The return values must not outlive thePatch.#1141
#1143
v0.20.0Compare Source
0.19.0...0.20.0
Added
Debugis now implemented fortransport::Service#1074
Repository::commondir#1079
Repository::merge_base_octopus#1088
PartialOrd,Ord, andHashfor bitflags types that were inadvertently removed in a prior release.#1096
CheckoutBuilder::disable_pathspec_match#1107
PackBuilder::write#1110
Changed
#1111
ssh_key_from_memoryCargo feature, it was unused.#1087
Tree::walkare now correctly reported to the caller.#1098
trace_setcallback now takes a&[u8]instead of a&str.#1071
Error::last_errornow returnsErrorinstead ofOption<Error>.#1072
Fixed
OdbReader::readreturn value.#1061
#1075
v0.19.0Compare Source
0.18.3...0.19.0
Added
optsfunctions to control server timeouts (get_server_connect_timeout_in_milliseconds,set_server_connect_timeout_in_milliseconds,get_server_timeout_in_milliseconds,set_server_timeout_in_milliseconds), and addErrorCode::Timeout.#1052
Changed
#1032
Errorstruct.#1053
Fixed
#1043
v0.18.3Compare Source
0.18.2...0.18.3
Added
opts::functions to get / set libgit2 mwindow options#1035
Changed
#1007
v0.18.2Compare Source
0.18.1...0.18.2
Added
opts::set_ssl_cert_fileandopts::set_ssl_cert_dirfor setting Certificate Authority file locations.#997
TreeIter::nthwhich makes jumping ahead in the iterator more efficient.#1004
Repository::find_commit_by_prefixto find a commit by a shortened hash.#1011
Repository::find_tag_by_prefixto find a tag by a shortened hash.#1015
Repository::find_object_by_prefixto find an object by a shortened hash.#1014
Changed
This fixes CVE-2024-24575 and CVE-2024-24577.
#1017
v0.18.1Compare Source
0.18.0...0.18.1
Added
FetchOptions::depthto set the depth of a fetch or clone, adding support for shallow clones.#979
Fixed
TreeWalkCbData) to not assume it is a transparent type while casting.#989
DiffPatchidOptionsandStashSaveOptionsare publicly exported allowing the corresponding APIs to actually be used.#988
v0.18.0Compare Source
0.17.2...0.18.0
Added
Blame::blame_bufferfor getting blame data for a file that has been modified in memory.#981
Changed
#968
#982
#973
Revwalk::with_hide_callbackto take a mutable reference to its callback to enforce type safety.#970
FusedIteratorfor many iterators that can support it.#955
Fixed
-Zminimal-versions.#960
v0.17.2Compare Source
0.17.1...0.17.2
Added
#930
v0.17.1Compare Source
0.17.0...0.17.1
Changed
#948
v0.17.0Compare Source
0.16.1...0.17.0
Added
IntoIteratorimplementation forStatuses.#880
Reference::symbolic_set_target#893
Copy,Clone,Debug,PartialEq, andEqimplementations forAutotagOptionandFetchPrune.#889
EqandPartialEqimplementations forSignature.#890
Repository::discover_path.#883
Submodule::repo_init.#914
Tag::is_valid_name.#882
Repository::set_head_bytes.#931
Indexertype which is a low-level API for storing and indexing pack files.#911
Index::find_prefix.#903
FileMode.#887
PushCallbacks::push_negotiationcallback and the correspondingPushUpdatetype for getting receiving information about the updates to perform.#926
Changed
This brings in many changes, including better SSH host key support on Windows and better SSH host key algorithm negotiation.
1.6.3 is now the minimum supported version.
#935
This brings in numerous changes, including SHA2 algorithm support with RSA.
#919
RemoteCallbacks::credentialscallback error handler to correctly set the libgit2 error class.#918
DiffOptions::flagnow takes agit_diff_option_ttype.#935
serde-rs/json (serde_json)
v1.0.145Compare Source
v1.0.144Compare Source
v1.0.143Compare Source
v1.0.142Compare Source
v1.0.141Compare Source
v1.0.140Compare Source
v1.0.139Compare Source
v1.0.138Compare Source
v1.0.137Compare Source
v1.0.136Compare Source
v1.0.135Compare Source
v1.0.134Compare Source
RawValueassociated constants for literalnull,true,false(#1221, thanks @bheylin)v1.0.133Compare Source
v1.0.132Compare Source
v1.0.131Compare Source
Map<String, Value>and&Map<String, Value>(#1135, thanks @swlynch99)v1.0.130Compare Source
Numberfrom i128 and u128 (#1141, thanks @druide)v1.0.129Compare Source
serde_json::Map::sort_keysandserde_json::Value::sort_all_objects(#1199)v1.0.128Compare Source
v1.0.127Compare Source
v1.0.126Compare Source
v1.0.125Compare Source
v1.0.124Compare Source
v1.0.123Compare Source
v1.0.122Compare Source
json!in no-std crates (#1166)v1.0.121Compare Source
v1.0.120Compare Source
indexmapdependency (#1152, thanks @cforycki)v1.0.119Compare Source
serde_json::Map::shift_insert(#1149, thanks @joshka)v1.0.118Compare Source
v1.0.117Compare Source
v1.0.116Compare Source
v1.0.115Compare Source
v1.0.114Compare Source
v1.0.113Compare Source
swap_removeandshift_removemethods on Map (#1109)v1.0.112Compare Source
v1.0.111Compare Source
v1.0.110Compare Source
v1.0.109Compare Source
v1.0.108Compare Source
v1.0.107Compare Source
v1.0.106Compare Source
Value::as_numberaccessor (#1069, thanks @chanced)Number::as_straccessor under "arbitrary_precision" feature (#1067, thanks @chanced)v1.0.105Compare Source
v1.0.104Compare Source
v1.0.103Compare Source
v1.0.102Compare Source
v1.0.101Compare Source
v1.0.100Compare Source
-Z minimal-versionsv1.0.99Compare Source
v1.0.98Compare Source
v1.0.97Compare Source
io_error_kind()method to serde_json::Error:fn io_error_kind(&self) -> Option<std::io::ErrorKind>(#1026)v1.0.96Compare Source
to_writeronly writes valid UTF-8 strings (#1011, thanks @stepancheg)dtolnay/serde-yaml (serde_yaml)
v0.9.34Compare Source
As of this release, I am not planning to publish further versions of
serde_yamlas none of my projects have been using YAML for a long time, so I have archived the GitHub repo and marked the crate deprecated in the version number. An official replacement isn't designated for those who still need to work with YAML, but https://crates.io/search?q=yaml&sort=relevance and https://crates.io/keywords/yaml has a number of reasonable-looking options available.v0.9.33Compare Source
v0.9.32Compare Source
v0.9.31Compare Source
swap_removeandshift_removemethods on Mapping (#408)v0.9.30Compare Source
v0.9.29Compare Source
deny(unsafe_op_in_unsafe_fn)lintv0.9.28Compare Source
unsafe-libyamldependency to pull in unaligned write fixv0.9.27Compare Source
v0.9.26Compare Source
.nanis deserialized as a positive NaN (#392, #393)v0.9.25Compare Source
v0.9.24Compare Source
v0.9.23Compare Source
v0.9.22Compare Source
v0.9.21Compare Source
Tag::newpanic if given empty string, since YAML has no syntax for an empty tagv0.9.20Compare Source
NoneorValue::Null, in addition to the previously supported empty vector, empty map, and struct with no required fieldstokio-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
v1.28.2: Tokio v1.28.2Compare Source
1.28.2 (May 28, 2023)
Forward ports 1.18.6 changes.
Fixed
v1.28.1: Tokio v1.28.1Compare Source
1.28.1 (May 10th, 2023)
This release fixes a mistake in the build script that makes
AsFdimplementations unavailable on Rust 1.63. (#5677)v1.28.0: Tokio v1.28.0Compare Source
1.28.0 (April 25th, 2023)
Added
AsyncFd::async_io(#5542)recv_bufforUdpSocketandUnixDatagram(#5583)OwnedSemaphorePermit::semaphore(#5618)same_channelto broadcast channel (#5607)watch::Receiver::wait_for(#5611)JoinSet::spawn_blockingandJoinSet::spawn_blocking_on(#5612)Changed
read_to_endnot grow unnecessarily (#5610)RwLock(#5647)Notify(#5503)Fixed
get_peer_credon AIX (#5065)broadcastwith custom wakers (#5578)Documented
Semaphore::MAX_PERMITS(#5645)tokio::sync::watch::Senderdocs (#5587)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.
00a2af5c16tod9370f1844d9370f1844toed47dcf246ed47dcf246to0a5020faba0a5020fabatof988b30491f988b30491to843f09c2ff843f09c2ffto9138aa171d9138aa171dtoa3251e8890a3251e8890to6e1d1c5b396e1d1c5b39to672ddcd640672ddcd640tofbc3179807fbc3179807to5a51d7e6655a51d7e665to43af4743f343af4743f3tod9a5a3f52cd9a5a3f52cto78b1fa0c3978b1fa0c39to9debb514619debb51461tof9a4a5bf33f9a4a5bf33toed121cbffbed121cbffbtoa42bcd328fa42bcd328fto0ad9ed72d70ad9ed72d7toc9d7e999d1c9d7e999d1to063ad6f047063ad6f047to0bc3ce97010bc3ce9701to17f7e208a417f7e208a4to39320639023932063902tofeeebedbf4feeebedbf4to6067d854d16067d854d1toa53a9ba00ca53a9ba00cto25443dafbc25443dafbctob92ac12ad7b92ac12ad7toc95c6dcd2bc95c6dcd2btodd4358316add4358316atod231a80a32d231a80a32to2db6e5cc312db6e5cc31tof50e30000bf50e30000bto5d840101985d84010198toae4824e875ae4824e875toabd2ab2a75abd2ab2a75to101918d785101918d785to21e3500d9121e3500d91to200085b7db200085b7dbtoc994980fc2c994980fc2to08a4e14b6308a4e14b63to25373185a325373185a3to72a58e660e72a58e660etobd76ddd819bd76ddd819to342bccfd27342bccfd27to15f085dd0e15f085dd0eto48ac3a04e348ac3a04e3to7d40c15be67d40c15be6to4966a5c2064966a5c206tof2779444b6f2779444b6toce2c5b4d8ace2c5b4d8ato74cb812f4374cb812f43to438f61a582438f61a582to77a3a3543777a3a35437to0a167c866d0a167c866dto1ad773c07c1ad773c07cto96bfd2b89296bfd2b892tob0669487f1b0669487f1tob4bfbaa9a7b4bfbaa9a7tof09d2ac09df09d2ac09dto3172ad8f953172ad8f95tobe4a4910f5be4a4910f5toaea488b2f5aea488b2f5to4583c5a4614583c5a461to8deadf6b368deadf6b36toc955f3036dc955f3036dto603b1cc0aa603b1cc0aato907e42c9c4907e42c9c4to118dc8d890118dc8d890to2e5fea27a02e5fea27a0toed5b71e38bed5b71e38bto61825e537161825e5371to030ddc5be8030ddc5be8tobac0c03ce1bac0c03ce1toeff8d9e62eeff8d9e62etoa42be2a46da42be2a46dto48ef45482348ef454823tod0c951b304d0c951b304to83d8697c0f83d8697c0fto251547a1fe251547a1feto28fd0b5052Update all dependenciesto fix(deps): update all dependencies28fd0b5052toa2ac0d2bdfa2ac0d2bdfto429f487436429f487436to861862b4ac861862b4actofb6af9c61dfb6af9c61dtob90d556c1db90d556c1dtoa193172a6ea193172a6eto747e0dc267747e0dc267to99b2fdb64399b2fdb643to4f308d573e4f308d573eto0793b863aa0793b863aato5c81856b815c81856b81toc5f1b1b8cdc5f1b1b8cdto24e9ef3a5b24e9ef3a5bto43ea1f5c4b43ea1f5c4bto723812ab41723812ab41to242c6fb31c242c6fb31cto1db9ebe23f1db9ebe23fto2a26392d602a26392d60to140b1b7d64140b1b7d64to708e94c2bd708e94c2bdto3ec8e8f53c3ec8e8f53ctoab9dd1f6f0ab9dd1f6f0to49af9cf2ee49af9cf2eetoed6d3ee298ed6d3ee298to982ce0854c982ce0854ctoc3d6798a71c3d6798a71to196bda4485196bda4485to07e92161a807e92161a8toa9d879efc0a9d879efc0tob5b296d9f7b5b296d9f7tofc9210f254fc9210f254to8ec3e44ef08ec3e44ef0toad251876cbad251876cbtoc6fe79ffb5c6fe79ffb5to484c5e7f2f484c5e7f2fto9079c755fb9079c755fbtoa68be27151a68be27151tof3f7344c01f3f7344c01toa79bd13ed1a79bd13ed1tob7ff32bcc7b7ff32bcc7toc74617ee62c74617ee62tob14679fe63b14679fe63to6963c4eb086963c4eb08to5d3c8dbc7f5d3c8dbc7fto44280870584428087058to35b84c6e5135b84c6e51to7d58d362317d58d36231to99f3e4cc0499f3e4cc04to028d136334028d136334to272f1ba05c272f1ba05cto26e212973126e2129731to570e26c312570e26c312to0fdfcae37d0fdfcae37dtofe02684d14fe02684d14toa000af52c3a000af52c3toc7ada569c6c7ada569c6to3d65bf47463d65bf4746to44137ac72944137ac729toc1c13da66cc1c13da66cto0ad5c33a6e0ad5c33a6etob8ba3d5300b8ba3d5300to503c603a3c503c603a3ctoc8a71d2695c8a71d2695toc98f643598c98f643598to2ef9ca31d92ef9ca31d9tob90c607b95b90c607b95to8ac3a04f888ac3a04f88to43df8f7eac43df8f7eacto2a6dab78c32a6dab78c3toe80618b8ace80618b8acto4e48dffab44e48dffab4tob97e00c16db97e00c16dtocbb80ca68dcbb80ca68dtoc38326a4bfc38326a4bfto3a834ee52b3a834ee52btoc1f8b5ccb9c1f8b5ccb9tof7155121f6f7155121f6to1c472469e11c472469e1toa69342a0f8a69342a0f8to083812e848083812e848tobe9ce4b306be9ce4b306to9d22a3fd3c9d22a3fd3ctodbab6e71f4dbab6e71f4to1c7e74901c1c7e74901cto47389e333047389e3330toe72a1dced4e72a1dced4tobc1bdcce9cbc1bdcce9ctodb1c7298addb1c7298adto4aba5c1bec4aba5c1bectobaad7ea129baad7ea129to308aafc9e0308aafc9e0toe7c63afba2e7c63afba2toe32b224477e32b224477to27eba5c44e27eba5c44eto7414710d257414710d25tof744673045f744673045toe279084e18e279084e18to2afc992ad22afc992ad2to49c92ae32449c92ae324toa86e1b7c49a86e1b7c49tobfaff64096bfaff64096to99bb5ddb6599bb5ddb65tof92d4fb7c2f92d4fb7c2to5c0956cd525c0956cd52todb9a41b3e5db9a41b3e5to778145eba2778145eba2to8a7e85ba6f8a7e85ba6ftof743e0b6dcf743e0b6dcto2f963de0ac2f963de0acto0d0c86d3320d0c86d332toe8e745fd02e8e745fd02tof870f6c62ef870f6c62etof5a3de2c3ef5a3de2c3etoa35c3c9048a35c3c9048to54afcf49be54afcf49betof45131f26df45131f26dto849e647484849e647484tod41a369780d41a369780to97d52b604897d52b6048to46742221aa46742221aatoc5e18405a3c5e18405a3to262a269363262a269363to89fb894e6189fb894e61to86faf28f8186faf28f81to2b2628e50d2b2628e50dtocd39e6d164cd39e6d164tofd8bf34dfbfd8bf34dfbto93891d079d93891d079dtoeaf0933dd8eaf0933dd8to21b82dd2a421b82dd2a4toe64066a292e64066a292to7fe7c82e157fe7c82e15tobadde885a9badde885a9to2edd2445152edd244515to873150c42b873150c42btoc8ef8b8c2bc8ef8b8c2btoe4f1b01291e4f1b01291tobb84c88eb9bb84c88eb9to43b60f02d243b60f02d2toa1db5c9f64a1db5c9f64tof804691b9ff804691b9ftof3b33f04c5f3b33f04c5tod55471a0e6d55471a0e6to3666c7a1083666c7a108to595a53f053595a53f053to7320fbacb97320fbacb9to4e7ed3ed124e7ed3ed12to93586709b593586709b5to9879e7682c9879e7682ctof1de22c25ef1de22c25eto3612f120283612f12028to1170ec90981170ec9098tofa82d39194fa82d39194todd877bb0d8dd877bb0d8to4649a80d934649a80d93to2184720dfd2184720dfdto0415391e140415391e14to006331e60c006331e60ctoabd2d18e3aabd2d18e3ato974de22252974de22252tofa97e10d96fa97e10d96to65f072e34e65f072e34eto9d609356189d60935618toc4ca9e55d4c4ca9e55d4to737100f88c737100f88ctof1a2adb04cf1a2adb04cto09b3e51a9c09b3e51a9cto0f56624bdd0f56624bddto725de8728c725de8728cto4b5a0bb79d4b5a0bb79dto4d5c599d264d5c599d26tod763689c8ed763689c8eto12294e583912294e5839to69855e09a769855e09a7to31e9bc30f531e9bc30f5to75860a512475860a5124to6b7c04798e6b7c04798etocc83a2832ecc83a2832eto7744c949507744c94950tob63d769340b63d769340to2f9d43377d2f9d43377dto76f3b695b376f3b695b3to3b2332a0d43b2332a0d4to68bc9fe14368bc9fe143to1550ff44b51550ff44b5to89914254298991425429toc9d316c37bc9d316c37btoc00fa6e245c00fa6e245to9ca9992fb19ca9992fb1toa4f6507f17a4f6507f17toe15feaeaa6e15feaeaa6to71e33cb79871e33cb798to218bf61a27218bf61a27to78b21c750778b21c7507to5738608aa45738608aa4toc0936eee0fc0936eee0fto3f14d6c9d13f14d6c9d1to5c9d6d3d745c9d6d3d74to1dcd2197391dcd219739to01f84b06ce01f84b06ceto49b86a0e4f49b86a0e4fto9e182f84699e182f8469to09da5c900109da5c9001to232646daa9232646daa9to64ffbeab9664ffbeab96to43d9e166b743d9e166b7to0026f5b9580026f5b958to5b5450e5995b5450e599to952942438a952942438ato025a482292025a482292to85415593248541559324tobc629450fbbc629450fbto49fbd1bcba49fbd1bcbatofb842df19cfb842df19cto5ab00ac6235ab00ac623tod6f5ed800ad6f5ed800atod069e68ffad069e68ffatob0780ea244b0780ea244tocb4829b671cb4829b671to3064ea35f73064ea35f7to6375f567a56375f567a5to1f434038461f43403846to0f07cd60f80f07cd60f8toa81c46ce22a81c46ce22tocd5695e00bcd5695e00bto652f2f4b40652f2f4b40to4b812d972c4b812d972cto2ef6d6f8ce2ef6d6f8cetoba75d09f4aba75d09f4ato82e735394282e7353942to51a99f958f51a99f958fto2afe6720022afe672002tob58ec1073cb58ec1073cto2b2577ab9a2b2577ab9ato7dd1e268697dd1e26869toe97146639ee97146639eto6e3ee769896e3ee76989toc671f80eaac671f80eaato92a26d155192a26d1551to46186c5f8f46186c5f8ftoe92792afe9e92792afe9to76f12ba1a376f12ba1a3to8b9e015c258b9e015c25to2845f742592845f74259to70ab9c63f770ab9c63f7to2ad02d7de12ad02d7de1tod867158c79d867158c79toe6ce6d0dcfe6ce6d0dcftod405d3f27cd405d3f27cto8ab4d2903c8ab4d2903cto3180c8e2283180c8e228tofc29f4cf51fc29f4cf51to3e4b3f2b4f3e4b3f2b4fto6a04a7428d6a04a7428dtoc67200c2ffc67200c2ffto454d6dcb32454d6dcb32to009367ab89009367ab89to267cad25d4267cad25d4tod9a1cf59d9d9a1cf59d9tof4b74599aef4b74599aeto31e5ee577e31e5ee577etoc1bc735e64c1bc735e64to1a16d676131a16d67613to9d305a7c629d305a7c62to5b80269e7a5b80269e7atoa73a0885b8a73a0885b8to363085b843363085b843toee0881aadcee0881aadcto1e64301c061e64301c06to56a90d37dc56a90d37dcto0fead94eb90fead94eb9to1faa5c2c731faa5c2c73toafb0ca18abafb0ca18abtoe68f14c377e68f14c377toee8d8006e0ee8d8006e0to7759aa3b5d7759aa3b5dtof39e58cb01f39e58cb01to0ea9bb91770ea9bb9177to71ba59a97471ba59a974toa2eb093d63a2eb093d63toc2b6a23ae0c2b6a23ae0to12b7ca38aa12b7ca38aato285b988142285b988142to65e52b232f65e52b232fto822c46126e822c46126etoa09f48e795a09f48e795to3ee4b221773ee4b22177to3130b6c6703130b6c670to3d697833693d69783369to11c4e45e0c11c4e45e0ctoebb8f58a4eebb8f58a4eto016e45922c016e45922cto64671a309d64671a309dtodea317d57adea317d57ato1e826eaaa51e826eaaa5to67f83140fe67f83140feto01159cae9d01159cae9dto89d6f7ba4389d6f7ba43toc1eee78ee7c1eee78ee7to6c497c91386c497c9138toa80f0a96b5a80f0a96b5toa3fbc86398a3fbc86398toc9c1f43010c9c1f43010to4f6be232974f6be23297to8681e3e8058681e3e805toe514bc2352e514bc2352todf94f4ee25df94f4ee25to871b7b6d72871b7b6d72toa52f5a4f14a52f5a4f14to876b8cf07c876b8cf07ctoab058d0549ab058d0549to0a55f1d5350a55f1d535tod060e15533d060e15533to064cb361de064cb361deto603ef95c19603ef95c19tofe9d1007e8fe9d1007e8toa40d2c0a01a40d2c0a01to39b04ea38639b04ea386to3ab01afdcf3ab01afdcftob256d34073b256d34073toe50d8e8d8de50d8e8d8dtoce1dcd393cce1dcd393cto521a0665e9521a0665e9tod3c2e9d7f8d3c2e9d7f8to7ecac5543c7ecac5543cto32acddad6e32acddad6etob043d14700b043d14700to44933e048144933e0481toaac7c140d5aac7c140d5to9fbfe105df9fbfe105dfto90d303c5f990d303c5f9toa8905d5183a8905d5183todf73ffe6c1df73ffe6c1toe06a1141cee06a1141cetoef2034e398ef2034e398to8018cf3a288018cf3a28toad95df454bad95df454bto0dbb75e5740dbb75e574to179d6e0662179d6e0662to5128d853745128d85374toecd20ca87aecd20ca87ato46bc146a3546bc146a35toe2c108ba0be2c108ba0bto84a2cf2d4184a2cf2d41to64c3e20b8f64c3e20b8ftof521c99b80f521c99b80tof66818bafff66818baffto665621ad8d665621ad8dto00077cff3c00077cff3ctob07147889ab07147889atoba7148981eba7148981eto170f44750a170f44750atof80cbc3786f80cbc3786to4bf136c57b4bf136c57bto43da8e3ee843da8e3ee8to0e88982e690e88982e69toac47f1fc34ac47f1fc34toe3f75248a3e3f75248a3to9abe09e5149abe09e514to8407f66a348407f66a34toa87ddde88aa87ddde88atoe347e17184e347e17184to9ef9fea9259ef9fea925to762c188b1f762c188b1ftod3022a478ed3022a478eto98fb0a07af98fb0a07aftocd76cb84f4cd76cb84f4to57b88ca79657b88ca796to1731c15b811731c15b81tocbb6782bf0cbb6782bf0to146528e502146528e502tob83fd8ed4bb83fd8ed4bto88d46351ba88d46351bato97084e743997084e7439toe8a1795064e8a1795064toc191312f5fc191312f5fto907b73e702907b73e702tobae7e79343bae7e79343to0e28777ef50e28777ef5toef8b21dfbbef8b21dfbbto25ac9f631b25ac9f631bto50cf65791c50cf65791cto7eeaaf41d27eeaaf41d2to8063bdfe658063bdfe65to9ea0468fb59ea0468fb5to3b8ff73daf3b8ff73daftoc754e64e77c754e64e77to5bb6389c005bb6389c00to6cb3fada386cb3fada38to3623d3f5763623d3f576toe6e61de246e6e61de246to1aa475627a1aa475627atoaabe9c8538aabe9c8538to1fd690e38d1fd690e38dto4eef7d3dea4eef7d3deatod0e8b47f5fd0e8b47f5fto02e92d7e4202e92d7e42to6a47b70db86a47b70db8tode7910ee68de7910ee68to60d78bdf5c60d78bdf5ctoc7abb3acebc7abb3acebto9f0448a4369f0448a436tof5f38daa41f5f38daa41to7b46ea26307b46ea2630to927a81089f927a81089ftob7c77c7e1cb7c77c7e1cto550a4f84c7550a4f84c7to9394b0b6469394b0b646to9461fd01429461fd0142toda2ce41a07da2ce41a07toce4de2e4adce4de2e4adto5e58c2ec575e58c2ec57to306d8c244c306d8c244cto96fa34d0e196fa34d0e1to6633bc8c976633bc8c97toa9888e2bdea9888e2bdeto64b528970b64b528970btoefd3dc7da1efd3dc7da1toadf14d3bbaadf14d3bbatoce4becec5ace4becec5ato7ef90f98997ef90f9899tocd51b64247cd51b64247to28f36db66828f36db668to5362cb70145362cb7014toa758948018a758948018tob9ecf10d45b9ecf10d45todfa8b89edadfa8b89edato08f127097308f1270973tofa989d4f3bfa989d4f3btod198bc2c9cd198bc2c9cto32e59a92df32e59a92dfto9345d515779345d51577to7d84f3b3ea7d84f3b3eato17f66b97cf17f66b97cftodb9b109c08db9b109c08to446405e0e4446405e0e4to783872a981783872a981to7889a2dd4b7889a2dd4bto8e5d38bd408e5d38bd40to9f4a76f0069f4a76f006to039ce05644039ce05644to5b162908445b16290844to6a5390d59c6a5390d59cto1adf0ab3651adf0ab365toc114376a3bc114376a3bto842c7d4257842c7d4257to87c0f1310d87c0f1310dto4c4152f4ed4c4152f4edtof6054c2e3df6054c2e3dtoa865879754a865879754to21f5744de721f5744de7to8a96d9a5378a96d9a537to32b396489332b3964893to54ffaf79f954ffaf79f9toa318d093b7a318d093b7tof27f745a2ef27f745a2eto2399a250782399a25078to791474c57a791474c57ato4bb844467c4bb844467cto34cd097f9934cd097f99to6053237aa96053237aa9to49859c249449859c2494to0d94aace410d94aace41to6d9722c2526d9722c252toa83426d0faa83426d0fatoe50d76d5fde50d76d5fdto3caf52f9173caf52f917to600f74ffa9600f74ffa9to053499e1d4053499e1d4to757bfff009757bfff009to367a46da4a367a46da4atoef9ea1414def9ea1414dto0710bfb6a80710bfb6a8to7354340f687354340f68to72046ae61272046ae612to05957fa24105957fa241tocef0380039cef0380039to1876098cac1876098cacto56614568805661456880todbc51b7964dbc51b7964to312be6a544312be6a544tob62ef2c2f5b62ef2c2f5tof628d34c86f628d34c86toaa54623075aa54623075to7fbf10be097fbf10be09toaea929e9cfaea929e9cftoc7975a28d4c7975a28d4to447b167647447b167647to789ea0b925789ea0b925to9b17e161c89b17e161c8to813b117743813b117743tob4dac3cee8b4dac3cee8toe85ce73e65e85ce73e65to2d74ba25122d74ba2512to22362a6aa622362a6aa6tob9adab207fb9adab207ftoa47f6738e1a47f6738e1to8369e750a18369e750a1to919eaa6c51919eaa6c51toaf21b1042aaf21b1042atoa0338c2f32a0338c2f32to81ee4b0e9a81ee4b0e9atoe7eb4eefbbe7eb4eefbbtod5d6f6b346d5d6f6b346to1956e8e7521956e8e752to5a203300f35a203300f3to7b3ab2cb597b3ab2cb59tocd68cfdcaccd68cfdcactofb6b2f635dfb6b2f635dto1aafb63d8f1aafb63d8ftob6eb0fef19b6eb0fef19to1228f5745f1228f5745fto902716659a902716659atoe4323800c0e4323800c0tod7663b5b4fd7663b5b4fto4a38d9fbe74a38d9fbe7to7d715a684d7d715a684dto3a9d682c123a9d682c12to12d485ba8a12d485ba8ato40101342304010134230to8a7971f9798a7971f979to23f81622ab23f81622abto6c1b3ae8d46c1b3ae8d4toe63e8dfc27e63e8dfc27tob7e0199170b7e0199170to998a31b826998a31b826to168f79fc66168f79fc66toecd866669eecd866669eto913c4e07fd913c4e07fdto949d02ce07949d02ce07to1582c234111582c23411to794e01a14d794e01a14dto288792707c288792707ctoa727740320a727740320to8aab5997138aab599713tob54b9d96c3b54b9d96c3to5831ae4c2b5831ae4c2bto8cc0a18de08cc0a18de0to85031300738503130073to1794b1bf9b1794b1bf9btob836ef59bab836ef59bato577e5cff8f577e5cff8fto20a3d50b5720a3d50b57to75ffed4ff875ffed4ff8to965b96c0c8965b96c0c8to7437e378937437e37893tod7124cd871d7124cd871toef141f4b57ef141f4b57to074401d635074401d635toc73fab3df5c73fab3df5tob9ef95d0e7b9ef95d0e7to4985f5f18a4985f5f18ato82d4f1a1bd82d4f1a1bdtob0db4c8f2fb0db4c8f2ftoe5639d7e41e5639d7e41to6b28cc0f3d6b28cc0f3dto8fd9dc78aa8fd9dc78aato6b8a9b3c0e6b8a9b3c0eto0ebb9974da0ebb9974dato7629640f4c7629640f4cto8c0287160e8c0287160eto3beb183ff43beb183ff4todb9ff3197cdb9ff3197ctofad25e2784fad25e2784to75199ab02e75199ab02etofa400253b0fa400253b0to5d969c36af5d969c36afto54c61addf354c61addf3to38e8c7d62b38e8c7d62bto599adfbe7b599adfbe7btoc332a8cbb1c332a8cbb1to0c3bb6e60c0c3bb6e60ctobb93b4e909bb93b4e909to3c599ae2003c599ae200tob034832aa4b034832aa4tob1187594c0b1187594c0to8da61fff8a8da61fff8ato7e4c95bd027e4c95bd02to7d0560ad437d0560ad43to09c087c47209c087c472tob5a866ab43b5a866ab43tob0c1edfea8b0c1edfea8tob866a4289fb866a4289fto6fdd13abf56fdd13abf5to769637d423769637d423to6d54ace74d6d54ace74dto3b784ea7683b784ea768to1f02db860a1f02db860ato6dae6c99746dae6c9974to50c12e8dd050c12e8dd0toe4a32d6ce4e4a32d6ce4toe75cbee93ae75cbee93ato4afa723fd84afa723fd8to908ea0c52c908ea0c52ctof0bfa152dbf0bfa152dbtoc9f914e0e0c9f914e0e0to2a77ec96a62a77ec96a6to53b4b0a0d553b4b0a0d5to2da65c6ee82da65c6ee8tob516dc0e0ab516dc0e0atoe05c48724de05c48724dto8ecae9e86b8ecae9e86btod7ff4303fdd7ff4303fdtof42f947eb8f42f947eb8tof62a16427af62a16427ato85c86c80a885c86c80a8to6f5037965f6f5037965fto2060d4faa72060d4faa7to0d8e64397d0d8e64397dtob851693d3cb851693d3cto796b471a82796b471a82to8b90806c438b90806c43to608c690fc8608c690fc8toa8997d0806a8997d0806toa59f982a1ca59f982a1ctoa1becf30d7a1becf30d7to7cca23968f7cca23968fto0604a669eb0604a669ebto24b44307c324b44307c3tobde7256d6bbde7256d6bto78782b522e78782b522etoad41c64089ad41c64089to69d5146af969d5146af9to6d6046a0e76d6046a0e7to5bb0fe3a625bb0fe3a62to8cbca212b68cbca212b6toa2b721f034a2b721f034to967abba008967abba008toef145df364ef145df364to3e23cf2a7a3e23cf2a7atoe5fb3c7fcee5fb3c7fceto70611e176270611e1762to53035210fc53035210fcto61fe05152661fe051526to38bee0b4c238bee0b4c2to521b21be4b521b21be4btof3480bd551f3480bd551to4d67dc5cbe4d67dc5cbeto77addca22177addca221tof78552890ef78552890etod8876b0ff8d8876b0ff8toac6939bc0bac6939bc0btoc6de5822bdc6de5822bdto7e088f1ccb7e088f1ccbto5cfd3a2eaa5cfd3a2eaato0822469cf20822469cf2to25cb4a4e6425cb4a4e64to0930df72f20930df72f2to1ccdb01ce71ccdb01ce7tof6bf4f51c4f6bf4f51c4to5ec579c5975ec579c597to93478d07ba93478d07batodc04ceaa26dc04ceaa26to0557cca1710557cca171tobc6ba9a25ebc6ba9a25etoee5d81723eee5d81723etobb26702c39bb26702c39to645666cb3f645666cb3fto5a9937c5645a9937c564toefc15728deefc15728deto36fa9cb9b136fa9cb9b1to8cbf462f8c8cbf462f8ctoe4c1c25e7fe4c1c25e7fto2e002236912e00223691to04390044be04390044beto0839a7650c0839a7650cto8f3e193b168f3e193b16to03528136000352813600to47e470d37c47e470d37cto3a8bb7b6273a8bb7b627to0e3804b9ff0e3804b9fftocec73e19bfcec73e19bfto838fd95fab838fd95fabto8f9f5edefa8f9f5edefatoa329ec0140a329ec0140to1703ffabfe1703ffabfeto9082e967099082e96709to1800ed33171800ed3317tod5c55826f1d5c55826f1to807c969f7d807c969f7dtoedf6b7b27dedf6b7b27dto50a44e734450a44e7344to70a10dc70870a10dc708toacbdbbd1a2acbdbbd1a2tobbf427112fbbf427112fto042a6937e7042a6937e7toee901fb002ee901fb002to372e9e11fa372e9e11fatof93fb1a585f93fb1a585to7c6f1da0927c6f1da092tof76144c5a2f76144c5a2to6df3e6dcb16df3e6dcb1to44599158554459915855tob7160ab0ecb7160ab0ecto1db22b2deb1db22b2debto0c781bfafb0c781bfafbto1b0df49eaf1b0df49eaftobdafbd5810bdafbd5810to250bef3b56250bef3b56tob1c164c1a5b1c164c1a5to4c9a87fd8b4c9a87fd8btod00c3e96a4d00c3e96a4to05e1b80bb105e1b80bb1to985d0bed9f985d0bed9fto87d1cbd96687d1cbd966toa9e64478a9a9e64478a9to2d67683b482d67683b48toe3f005bd18e3f005bd18to3a8124a9873a8124a987to26f8d70bd926f8d70bd9to40b3659eed40b3659eedto9054aa24ad9054aa24adtof36257e2adf36257e2adto65e43da35e65e43da35eto125fe3ed25125fe3ed25tob5d3016ccab5d3016ccato5e92d1da215e92d1da21to6ac69aa87f6ac69aa87ftoa7e8c85d87a7e8c85d87toe6c5bef184e6c5bef184to4ff7d18f0e4ff7d18f0etoa841629cc5a841629cc5tob1134465a1b1134465a1to620a771630620a771630to2e846816462e84681646toeca3d735a4eca3d735a4to539c839158539c839158to908407d25f908407d25ftobecffe3284becffe3284to3d25e1ebe53d25e1ebe5to64876df70964876df709to4139cfd28e4139cfd28etoff28a2bae1ff28a2bae1toe8d55fb135e8d55fb135to1549352e981549352e98to7a80a831237a80a83123to2a18245fd82a18245fd8to371b144950371b144950to38f08a86af38f08a86aftobe5df82d04be5df82d04to29582c0e9329582c0e93to1b95f60eda1b95f60edato17dbd35e4e17dbd35e4eto8d29e8acab8d29e8acabtocc9e07e5bbcc9e07e5bbto54aa98ebc654aa98ebc6toa01961d98ca01961d98cto8511f47aca8511f47acato8935e0e42c8935e0e42cto5bb5b092525bb5b09252to38680bdea738680bdea7to69ae7e2b1a69ae7e2b1ato7b654029107b65402910to5d9143a3fb5d9143a3fbto9f4d7479c39f4d7479c3tob48f0dd35fb48f0dd35ftod0433a874fd0433a874fto6057d23b076057d23b07to9dc7b333819dc7b33381to3f5b5e676a3f5b5e676atod87fa1dcc1d87fa1dcc1toba37ea6cfbba37ea6cfbtof77250b496f77250b496to9ca3f3e7b49ca3f3e7b4to38a3d62ce838a3d62ce8to5b41aa13105b41aa1310toed7c06cb98ed7c06cb98to891f0cd60d891f0cd60dto1ebf50bbe01ebf50bbe0to000ad91a6f000ad91a6fto3ad05f750a3ad05f750atoe77292b06fe77292b06fto9cbb8495909cbb849590tocb6b59c9e7cb6b59c9e7to4f4aa2d0554f4aa2d055tofd883d1fb3fd883d1fb3to5f449f901a5f449f901ato2cba8817542cba881754tobaef801bb7baef801bb7to78b52f361078b52f3610to07ee845e5807ee845e58to7355fa8a8b7355fa8a8btoc42f7175d5c42f7175d5to26401621172640162117to5d2e868faf5d2e868fafto4efec17cfa4efec17cfato9ee23a56879ee23a5687to8971522f8b8971522f8btod61283529ad61283529ato03619b97a103619b97a1to9e2f43cdbd9e2f43cdbdtoe14f39f741e14f39f741to9e24af9d489e24af9d48to72a71a72f972a71a72f9to4b932938604b93293860to04c63b3ec604c63b3ec6to7ee0543f7d7ee0543f7dto37809dcd7237809dcd72toc6eaa0f023c6eaa0f023toc05bbd6427c05bbd6427toefa85bd359efa85bd359toe678f74940e678f74940to32dfe046e432dfe046e4to9cf2539e909cf2539e90to3a5397dfbd3a5397dfbdtoab2b02eda2ab2b02eda2tod9a77432d8d9a77432d8to9498486ba59498486ba5tobfb3414e1dbfb3414e1dto29a7b7639029a7b76390to52df1e7e1b52df1e7e1bto84a7438ec584a7438ec5tobca1bfb48cbca1bfb48cto73e6de2ed573e6de2ed5toe7a624f6fde7a624f6fdto41b4994da341b4994da3to40057ceda640057ceda6to44f76c550444f76c5504tof195c789aff195c789afto9b65eb9a739b65eb9a73tocaf62c6b76caf62c6b76to4e7918972f4e7918972fto24477dab9324477dab93to43e060726b43e060726btofccdd3ce54fccdd3ce54to34f6c430d234f6c430d2to95345f232d95345f232dtoff32a48745ff32a48745to1cb4966d371cb4966d37tofdf2ac4cd1fdf2ac4cd1tob96b2bc24fb96b2bc24fto812782d237812782d237to601d9b6900601d9b6900tobc1c823f9dbc1c823f9dtocf73bae705cf73bae705to274c434d7b274c434d7bto8a1637f2e68a1637f2e6to14ea6b31ea14ea6b31eatoab8b371967ab8b371967toaeddb0c404aeddb0c404to86766bf0c886766bf0c8tobec2e1677abec2e1677ato2774cb12f62774cb12f6toe9b5d8798ee9b5d8798etod0362b8b8ad0362b8b8atoafae91209cafae91209cto57d6f397fc57d6f397fcto58fe85d36858fe85d368tobc20d4706fbc20d4706ftod67eae0c5fd67eae0c5fto14ffb56f6314ffb56f63to94a8f646bb94a8f646bbto249c954823249c954823to6784d469a86784d469a8toddfc04b0dfddfc04b0dftoc01fe1b965c01fe1b965to0313e588970313e58897to6ee853be616ee853be61toc00ec09849c00ec09849to6768db37126768db3712tof379909d1cf379909d1ctoce23ecb8b4ce23ecb8b4tof283232fcaf283232fcatoe8e3d68987e8e3d68987to4d1ec24eb14d1ec24eb1to42a7e62ed242a7e62ed2to9c3d4430f89c3d4430f8to6d62603f886d62603f88to156e8b4d3c156e8b4d3ctod6f5cb98ffd6f5cb98fftod44403b66fd44403b66ftofb028bf237fb028bf237to8ec1eb53398ec1eb5339to723e3caecd723e3caecdto303bddaab7303bddaab7to8b7a515f2d8b7a515f2dto4085bdf5f84085bdf5f8to9f1181450f9f1181450ftob417a43b5bb417a43b5bto5efe1acfaa5efe1acfaato925ed3bc5a925ed3bc5atoa2a75010ada2a75010adto7de78df1197de78df119toc105629150c105629150toa72812c9aea72812c9aeto71abd4b81771abd4b817tof628fb3ab7f628fb3ab7to1bf9cac1051bf9cac105tob0773fbdd7b0773fbdd7to9cf022a0b09cf022a0b0tof3248faaf0f3248faaf0to40d0332b9b40d0332b9btob976a19fa4b976a19fa4to91731859a691731859a6to5000424ab55000424ab5to513b8458e5513b8458e5toe279e10fb3e279e10fb3tofb7385163dfb7385163dto55aca14b8155aca14b81to745f895c5d745f895c5dtoba1882379cba1882379cto6d039efab36d039efab3to3ad39881103ad3988110toa84f513680a84f513680to785065c19c785065c19cto52664860915266486091to6bf72911236bf7291123to873db6f161873db6f161toab141b37caab141b37cato3ccc29cf853ccc29cf85toc2d82afdb8c2d82afdb8to3dde6e2ed53dde6e2ed5to9779d83a179779d83a17to35baae8cd935baae8cd9to905ce9a21c905ce9a21ctoca9819c0d4ca9819c0d4to3ca45d32fb3ca45d32fbto879ba09a0c879ba09a0ctoa46ccea735a46ccea735to44180320ee44180320eetoc05913b9a1c05913b9a1toac22cc2ed4ac22cc2ed4tof62e104f82f62e104f82to24ebebf18324ebebf183todcda858c0edcda858c0eto23bf01f27623bf01f276to9ae8204e3e9ae8204e3eto0845d0278d0845d0278dtod7f2512b19d7f2512b19to84c8788ad784c8788ad7tof78d26974bf78d26974btobb20854aeabb20854aeato1b0b740f541b0b740f54to4b689d44424b689d4442to93b0c3395e93b0c3395eto3cfd39eee53cfd39eee5toc92564e6d6c92564e6d6tof7d78899a1f7d78899a1to3d4a5756313d4a575631to714de72f4c714de72f4ctofd59a4c7b7fd59a4c7b7toaf1b0df208af1b0df208tob995d9f5f8b995d9f5f8to979f3350d7979f3350d7to7f44753c6a7f44753c6ato45405057934540505793to702349d741702349d741toc459877addc459877addtoaf897de121af897de121to126ff9baf7126ff9baf7to1ed28d9aeb1ed28d9aebto153bb87c07153bb87c07toa3373edb48a3373edb48tofa233aff8dfa233aff8dtof458ae50a4f458ae50a4to76d360c7f576d360c7f5tod474d1ff90d474d1ff90toa289c39da9a289c39da9to909de8fd78909de8fd78to52d717a07d52d717a07dto79639cedb779639cedb7to84be006aa484be006aa4to4343e594e14343e594e1tod8d672f744d8d672f744to5bec2d58865bec2d5886toa896eff754a896eff754tob36c31e001b36c31e001tobb5c2628a3bb5c2628a3toe50dde578de50dde578dtofea75dd1d5fea75dd1d5toed95fa9d69ed95fa9d69toe7bd135a16e7bd135a16toc2aae20f22c2aae20f22todfd60ce0f5dfd60ce0f5todc788a8b06dc788a8b06toe214ae5018e214ae5018to4f184248474f18424847tofa1cc093d8fa1cc093d8to5888a9656b5888a9656btodbb582ab8ddbb582ab8dto6d5516720d6d5516720dto88000a92eb88000a92ebtoeacca1dd87eacca1dd87to732a4b7112732a4b7112to6206107f8e6206107f8etof8383b6ceff8383b6cefto62a95491f162a95491f1to2ecef16d8d2ecef16d8dto836c2594f2836c2594f2tob0c8a74a74b0c8a74a74to1186715cb31186715cb3tof56c9f036af56c9f036ato0b9381776d0b9381776dto57137110385713711038to79754e90bd79754e90bdtofed4ca3acbfed4ca3acbto7063c13e997063c13e99to9231ac71a99231ac71a9toe548bf5d7ee548bf5d7eto373037f3eb373037f3ebto6878fc108c6878fc108cto71b45388a771b45388a7todf11a0b0b8df11a0b0b8tof339b5d219f339b5d219to0bf2606a9e0bf2606a9eto2c01651b112c01651b11to863fc0299d863fc0299dto128558a0cd128558a0cdtof6fe3a0ea7f6fe3a0ea7toa8766feb9fa8766feb9fto2a655c64942a655c6494to51f43f5f2051f43f5f20to37f7ca158337f7ca1583to757c757c40757c757c40to3e22603ba83e22603ba8to427a5722b4427a5722b4to1a704332c41a704332c4to1b7218f57b1b7218f57btoc0d6205921c0d6205921to7aecc862a77aecc862a7to962f8fbd44962f8fbd44to5ecc306a615ecc306a61tod9b0a7ba87d9b0a7ba87to61832539006183253900tod00a241ac7d00a241ac7to664c121a89664c121a89toceaf957e64ceaf957e64to3e27680a233e27680a23tofbfe7952d5fbfe7952d5to5dbc4ead725dbc4ead72tob2e3daf901b2e3daf901tobe59239ad8be59239ad8todca4df3cdbdca4df3cdbtoa060c372c8a060c372c8tofcea569b48fcea569b48to2e23fe83d02e23fe83d0to66d55a592866d55a5928to475ea66f0d475ea66f0dto6f98df19096f98df1909tof31f153f83f31f153f83tob6b562862cb6b562862cto0000229bb20000229bb2to24ecc5455a24ecc5455atoa0c24be3aca0c24be3acto6269452bda6269452bdato037f8c1f5a037f8c1f5atoc79f95e267c79f95e267tobcd094c192bcd094c192toa5de9c254ea5de9c254eto9e7d82aefd9e7d82aefdtocffc779d5dcffc779d5dto6d7bd557506d7bd55750to02b0ff621002b0ff6210toe2448f92e7e2448f92e7tobef4479d71bef4479d71to22ed2d3e7e22ed2d3e7eto67f42daf8967f42daf89to977c06f0c0977c06f0c0to1a0cc376261a0cc37626toe2e25d237ee2e25d237etoa19a727ca5a19a727ca5tocb9cd14920cb9cd14920tob6cd26f7a7b6cd26f7a7toe2d47aaf51e2d47aaf51to22042107a122042107a1tocf1e6c4617cf1e6c4617to003d3f747c003d3f747cto37ba59a13a37ba59a13atodb75454c0cdb75454c0cto5687b1a9ee5687b1a9eetoa8dee0f6dba8dee0f6dbtoda5a88db35da5a88db35tod8f0fca303d8f0fca303to02c8c6fa6f02c8c6fa6ftoad1df990bcad1df990bcto649e6a3443649e6a3443to21a336c76f21a336c76ftoae7f0a5284ae7f0a5284to61587b7e0161587b7e01to978db6a3cc978db6a3cctoa220f58fd1a220f58fd1toeb9c6f7eebeb9c6f7eebto18558e102d18558e102dto7330324f467330324f46to19473275a219473275a2toc522c16916c522c16916to576b2ee55e576b2ee55eto0bbfea9ac80bbfea9ac8toeeccf3dd77eeccf3dd77to7d490a26387d490a2638to77095dda4c77095dda4cto2ed85c22f42ed85c22f4tof35a86c5cbf35a86c5cbto36f498d49236f498d492tocb4b4cc6f9cb4b4cc6f9tobd297c7123bd297c7123toe2ebf0a3abe2ebf0a3abto08429618270842961827tod0728dbf39d0728dbf39tof9cfca5661f9cfca5661to2b0d5c32a72b0d5c32a7to4df75387894df7538789to1e04c7c1e01e04c7c1e0to9274058e909274058e90to5cd9dffcf65cd9dffcf6to0c529cf85a0c529cf85ato854df8e178854df8e178tob79f03c3e6b79f03c3e6tobcd242b063bcd242b063tobeac093254beac093254to1af5398a7d1af5398a7dto6b0aa615ae6b0aa615aeto61c161424261c1614242to3ebd09dbdd3ebd09dbddto4c53ef88864c53ef8886to5141fb87725141fb8772to41471fb6e641471fb6e6tobd8f2f8305bd8f2f8305to57d96a575b57d96a575btoc2fcf7e5cec2fcf7e5cetobec1e4b185bec1e4b185to068e62354c068e62354cto3e3efa362a3e3efa362ato46279a3bde46279a3bdeto105c44b6e4105c44b6e4to63c18888c963c18888c9to6b5785cd6a6b5785cd6ato932b0c1c6a932b0c1c6ato7c4c5abb7d7c4c5abb7dtof6e2c4c496f6e2c4c496to1b7f0e294b1b7f0e294bto5539d720265539d72026to25d4fdc93e25d4fdc93eto76b80a5b3176b80a5b31to40e1f00d8e40e1f00d8eto79de7189be79de7189beto75467dafed75467dafedto3fe01296363fe0129636tobb104ba90ebb104ba90etofac984cd6dfac984cd6dtof43508e908f43508e908tof3c3f40b4bf3c3f40b4btoa8f08a3290a8f08a3290toc77f5718a0c77f5718a0tof46eee8537f46eee8537toecdcd6319aecdcd6319ato76d1ddc74f76d1ddc74fto12139b9f5c12139b9f5ctodf6fc1029ddf6fc1029dtof61528b3dbf61528b3dbto9c7158b1349c7158b134to999a8fa23c999a8fa23ctoed8105b1cfed8105b1cfto9ecc8d872e9ecc8d872etoa96849b095a96849b095to1e81b3e3801e81b3e380toafa9e7e410afa9e7e410to64b7761f1064b7761f10tobae98fe860bae98fe860tod1012576c1d1012576c1toe9854a65bee9854a65beto8d6db66ad28d6db66ad2tobac15a7990bac15a7990tof2d92ceb68f2d92ceb68to36231f87cf36231f87cftoebde279c82ebde279c82to820b98801a820b98801atoe9877fc9a3e9877fc9a3to21cc75cddfView command line instructions
Checkout
From your project repository, check out a new branch and test the changes.