fix(deps): update all dependencies #3

Merged
kjuulh merged 4 commits from renovate/all into main 2024-04-08 22:05:39 +02:00
Owner

This PR contains the following updates:

Package Type Update Change
anyhow dependencies patch 1.0.71 -> 1.0.81
axum dependencies minor 0.6.1 -> 0.7.5
chrono workspace.dependencies patch 0.4.23 -> 0.4.37
console_log dependencies major 0.2 -> 1.0
graphql_client dependencies minor 0.13.0 -> 0.14.0
serde_json dependencies patch 1.0.96 -> 1.0.115
tower-http dependencies minor 0.3.4 -> 0.5.2
tracing (source) dependencies patch 0.1.37 -> 0.1.40
tracing-subscriber (source) dependencies patch 0.3.16 -> 0.3.18
uuid workspace.dependencies minor 1.3.0 -> 1.8.0

Release Notes

dtolnay/anyhow

v1.0.81

Compare Source

  • Make backtrace support available when using -Dwarnings (#​354)

v1.0.80

Compare Source

  • Fix unused_imports warnings when compiled by rustc 1.78

v1.0.79

Compare Source

  • Work around improperly cached build script result by sccache (#​340)

v1.0.78

Compare Source

  • Reduce spurious rebuilds under RustRover IDE when using a nightly toolchain (#​337)

v1.0.77

Compare Source

v1.0.76

Compare Source

  • Opt in to unsafe_op_in_unsafe_fn lint (#​329)

v1.0.75

Compare Source

v1.0.74

Compare Source

v1.0.73

Compare Source

v1.0.72

Compare Source

  • Documentation improvements
tokio-rs/axum

v0.7.5: axum - v0.7.5

Compare Source

  • fixed: Fixed layers being cloned when calling axum::serve directly with
    a Router or MethodRouter (#​2586)
  • fixed: h2 is no longer pulled as a dependency unless the http2 feature
    is enabled (#​2605)

v0.7.4: axum - v0.7.4

Compare Source

  • fixed: Fix performance regression present since axum 0.7.0 (#​2483)
  • fixed: Improve debug_handler on tuple response types (#​2201)
  • added: Add must_use attribute to Serve and WithGracefulShutdown (#​2484)
  • added: Re-export axum_core::body::BodyDataStream from axum

v0.7.3: axum - v0.7.3

Compare Source

  • added: Body implements From<()> now (#​2411)
  • change: Update version of multer used internally for multipart (#​2433)
  • change: Update tokio-tungstenite to 0.21 (#​2435)
  • added: Enable tracing feature by default (#​2460)
  • added: Support graceful shutdown on serve (#​2398)
  • added: RouterIntoService implements Clone (#​2456)

v0.7.2: axum - v0.7.2

Compare Source

  • added: Add axum::body::to_bytes (#​2373)
  • fixed: Gracefully handle accept errors in serve (#​2400)

v0.7.1: axum - v0.7.1

Compare Source

  • fix: Fix readme.

v0.7.0: axum - v0.7.0

Compare Source

  • breaking: Update public dependencies. axum now requires
  • breaking: axum now requires tower-http 0.5
  • breaking: Remove deprecated WebSocketUpgrade::max_send_queue
  • breaking: The following types/traits are no longer generic over the request body
    (i.e. the B type param has been removed) (#​1751 and #​1789):
    • FromRequestParts
    • FromRequest
    • HandlerService
    • HandlerWithoutStateExt
    • Handler
    • LayeredFuture
    • Layered
    • MethodRouter
    • Next
    • RequestExt
    • RouteFuture
    • Route
    • Router
  • breaking: axum no longer re-exports hyper::Body as that type is removed
    in hyper 1.0. Instead axum has its own body type at axum::body::Body (#​1751)
  • breaking: extract::BodyStream has been removed as body::Body
    implements Stream and FromRequest directly (#​1751)
  • breaking: Change sse::Event::json_data to use axum_core::Error as its error type (#​1762)
  • breaking: Rename DefaultOnFailedUpdgrade to DefaultOnFailedUpgrade (#​1664)
  • breaking: Rename OnFailedUpdgrade to OnFailedUpgrade (#​1664)
  • breaking: TypedHeader has been move to axum-extra (#​1850)
  • breaking: Removed re-exports of Empty and Full. Use
    axum::body::Body::empty and axum::body::Body::from respectively (#​1789)
  • breaking: The response returned by IntoResponse::into_response must use
    axum::body::Body as the body type. axum::response::Response does this
    (#​1789)
  • breaking: Removed the BoxBody type alias and its box_body
    constructor. Use axum::body::Body::new instead (#​1789)
  • breaking: Remove RawBody extractor. axum::body::Body implements FromRequest directly (#​1789)
  • breaking: The following types from http-body no longer implement IntoResponse:
    • Full, use Body::from instead
    • Empty, use Body::empty instead
    • BoxBody, use Body::new instead
    • UnsyncBoxBody, use Body::new instead
    • MapData, use Body::new instead
    • MapErr, use Body::new instead
  • added: Add axum::extract::Request type alias where the body is axum::body::Body (#​1789)
  • added: Add Router::as_service and Router::into_service to workaround
    type inference issues when calling ServiceExt methods on a Router (#​1835)
  • breaking: Removed axum::Server as it was removed in hyper 1.0. Instead
    use axum::serve(listener, service) or hyper/hyper-util for more configuration options (#​1868)
  • breaking: Only inherit fallbacks for routers nested with Router::nest.
    Routers nested with Router::nest_service will no longer inherit fallbacks (#​1956)
  • fixed: Don't remove the Sec-WebSocket-Key header in WebSocketUpgrade (#​1972)
  • added: Add axum::extract::Query::try_from_uri (#​2058)
  • added: Implement IntoResponse for Box<str> and Box<[u8]> ([#​2035])
  • breaking: Simplify MethodFilter. It no longer uses bitflags (#​2073)
  • fixed: Fix bugs around merging routers with nested fallbacks (#​2096)
  • fixed: Fix .source() of composite rejections (#​2030)
  • fixed: Allow unreachable code in #[debug_handler] (#​2014)
  • change: axum's MSRV is now 1.66 (#​1882)
  • added: Implement IntoResponse for (R,) where R: IntoResponse (#​2143)
  • changed: For SSE, add space between field and value for compatibility (#​2149)
  • added: Add NestedPath extractor (#​1924)
  • added: Add handle_error function to existing ServiceExt trait (#​2235)
  • breaking: impl<T> IntoResponse(Parts) for Extension<T> now requires
    T: Clone, as that is required by the http crate (#​1882)
  • added: Add axum::Json::from_bytes (#​2244)
  • added: Implement FromRequestParts for http::request::Parts (#​2328)
  • added: Implement FromRequestParts for http::Extensions (#​2328)
  • fixed: Clearly document applying DefaultBodyLimit to individual routes (#​2157)

v0.6.20: axum - v0.6.20

Compare Source

  • added: WebSocketUpgrade::write_buffer_size and WebSocketUpgrade::max_write_buffer_size
  • changed: Deprecate WebSocketUpgrade::max_send_queue
  • change: Update tokio-tungstenite to 0.20
  • added: Implement Handler for T: IntoResponse (#​2140)

v0.6.19: axum - v0.6.19

Compare Source

  • added: Add axum::extract::Query::try_from_uri (#​2058)
  • added: Implement IntoResponse for Box<str> and Box<[u8]> (#​2035)
  • fixed: Fix bugs around merging routers with nested fallbacks (#​2096)
  • fixed: Fix .source() of composite rejections (#​2030)
  • fixed: Allow unreachable code in #[debug_handler] (#​2014)
  • change: Update tokio-tungstenite to 0.19 (#​2021)
  • change: axum's MSRV is now 1.63 (#​2021)

v0.6.18: axum - v0.6.18

Compare Source

  • fixed: Don't remove the Sec-WebSocket-Key header in WebSocketUpgrade (#​1972)

v0.6.17: axum - v0.6.17

Compare Source

  • fixed: Fix fallbacks causing a panic on CONNECT requests (#​1958)

v0.6.16: axum - v0.6.16

Compare Source

  • fixed: Don't allow extracting MatchedPath in fallbacks (#​1934)
  • fixed: Fix panic if Router with something nested at / was used as a fallback (#​1934)
  • added: Document that Router::new().fallback(...) isn't optimal (#​1940)

v0.6.15: axum - v0.6.15

Compare Source

  • fixed: Removed additional leftover debug messages (#​1927)

v0.6.14: axum - v0.6.14

Compare Source

  • fixed: Removed leftover "path_router hit" debug message (#​1925)

v0.6.13: axum - v0.6.13

Compare Source

  • added: Log rejections from built-in extractors with the
    axum::rejection=trace target (#​1890)
  • fixed: Fixed performance regression with Router::nest introduced in
    0.6.0. nest now flattens the routes which performs better (#​1711)
  • fixed: Extracting MatchedPath in nested handlers now gives the full
    matched path, including the nested path (#​1711)
  • added: Implement Deref and DerefMut for built-in extractors (#​1922)

v0.6.12: axum - v0.6.12

Compare Source

  • added: Implement IntoResponse for MultipartError (#​1861)
  • fixed: More clearly document what wildcards matches (#​1873)

v0.6.11: axum - v0.6.11

Compare Source

  • fixed: Don't require S: Debug for impl Debug for Router<S> (#​1836)
  • fixed: Clone state a bit less when handling requests (#​1837)
  • fixed: Unpin itoa dependency (#​1815)

v0.6.10: axum - v0.6.10

Compare Source

  • fixed: Add #[must_use] attributes to types that do nothing unless used (#​1809)
  • fixed: Gracefully handle missing headers in the TypedHeader extractor (#​1810)
  • fixed: Fix routing issues when loading a Router via a dynamic library (#​1806)

v0.6.9: axum - v0.6.9

Compare Source

  • changed: Update to tower-http 0.4. axum is still compatible with tower-http 0.3 (#​1783)

v0.6.8: axum - v0.6.8

Compare Source

  • fixed: Fix Allow missing from routers with middleware (#​1773)
  • added: Add KeepAlive::event for customizing the event sent for SSE keep alive (#​1729)

v0.6.7: axum - v0.6.7

Compare Source

  • added: Add FormRejection::FailedToDeserializeFormBody which is returned
    if the request body couldn't be deserialized into the target type, as opposed
    to FailedToDeserializeForm which is only for query parameters (#​1683)
  • added: Add MockConnectInfo for setting ConnectInfo during tests (#​1767)

v0.6.6: axum - v0.6.6

Compare Source

  • fixed: Enable passing MethodRouter to Router::fallback (#​1730)

v0.6.5: axum - v0.6.5

Compare Source

  • fixed: Fix #[debug_handler] sometimes giving wrong borrow related suggestions (#​1710)
  • Document gotchas related to using impl IntoResponse as the return type from handler functions (#​1736)

v0.6.4: axum - v0.6.4

Compare Source

  • Depend on axum-macros 0.3.2

v0.6.3: axum - v0.6.3

Compare Source

  • added: Implement IntoResponse for &'static [u8; N] and [u8; N] (#​1690)
  • fixed: Make Path support types using serde::Deserializer::deserialize_any (#​1693)
  • added: Add RawPathParams (#​1713)
  • added: Implement Clone and Service for axum::middleware::Next (#​1712)
  • fixed: Document required tokio features to run "Hello, World!" example (#​1715)

v0.6.2: axum - v0.6.2

Compare Source

  • added: Add body_text and status methods to built-in rejections (#​1612)
  • added: Enable the runtime feature of hyper when using tokio (#​1671)
chronotope/chrono

v0.4.37

Compare Source

Version 0.4.36 introduced an unexpected breaking change and was yanked. In it LocalResult was renamed to MappedLocalTime to avoid the impression that it is a Result type 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 name MappedLocalTime the 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.36

Compare Source

This release un-deprecates the methods on TimeDelta that 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:

use chrono::{Local, NaiveTime};
// Today at 12:00:00
let today_noon = Local::now().with_time(NaiveTime::from_hms_opt(12, 0, 0).unwrap());

Additions

Deprecations

  • Revert TimeDelta deprecations (#​1543)
  • Deprecate TimeStamp::timestamp_subsec_nanos, which was missed in the 0.4.35 release (#​1486)

Documentation

  • Correct version number of deprecation notices (#​1486)
  • Fix some typos (#​1505)
  • Slightly improve serde documentation (#​1519)
  • Main documentation: simplify links and reflow text (#​1535)

Internal

  • CI: Lint benchmarks (#​1489)
  • Remove unnessary Copy and Send impls (#​1492, thanks @​erickt)
  • Backport streamlined NaiveDate unit tests (#​1500, thanks @​Zomtir)
  • Rename LocalResult to TzResolution, add alias (#​1501)
  • Update windows-bindgen to 0.55 (#​1504)
  • Avoid duplicate imports, which generate warnings on nightly (#​1507)
  • Add extra debug assertions to NaiveDate::from_yof (#​1518)
  • Some small simplifications to DateTime::date_naive and NaiveDate::diff_months (#​1530)
  • Remove unwrap in Unix Local type (#​1533)
  • Use different method to ignore feature-dependent doctests (#​1534)

Thanks to all contributors on behalf of the chrono team, @​djc and @​pitdicker!

v0.4.35

Compare 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. The NaiveDateTime type 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 the DateTime<Utc> type, or from the TimeZone trait.

    Converting from NaiveDateTime to DateTime<Utc> is simple with .and_utc(), and in the other direction with .naive_utc().

  • The panicking constructors of TimeDelta (the new name of the Duration type) 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 NaiveDate now includes a niche. So now Option<NaiveDate>, Option<NaiveDateTime> and Option<DateTime<Tz>> are the same size as their base types.

  • format::Numeric and format::Fixed are marked as non_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

  • Add DateTime::{from_timestamp_micros, from_timestamp_nanos} (#​1234)
  • Add getters to Parsed (#​1465)

Deprecations

  • Deprecate timestamp methods on NaiveDateTime (#​1473)
  • Deprecate panicking constructors of TimeDelta (#​1450)

Changes/fixes

  • Use NonZeroI32 inside NaiveDate (#​1207)
  • Mark format::Numeric and format::Fixed as non_exhaustive (#​1430)
  • Parsed fixes to error values (#​1439)
  • Use overflowing_naive_local in DateTime::checked_add* (#​1333)
  • Do complete range checks in Parsed::set_* (#​1465)

Documentation

Internal

Thanks to all contributors on behalf of the chrono team, @​djc and @​pitdicker!

v0.4.34

Compare Source

Notable changes

  • In chrono 0.4.34 we finished the work to make all methods const where doing so is supported by rust 1.61.
  • We renamed the Duration type to TimeDelta. This removes the confusion between chrono's type and the later Duration type in the standard library. It will remain available under the old name as a type alias for compatibility.
  • The Windows implementation of Local is 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.
  • The Display format of TimeDelta is 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

Additions

Changes

  • Rename Duration to TimeDelta, add type alias (#​1406)
  • Make TimeDelta methods const (#​1337)
  • Make remaining methods of NaiveDate, NaiveWeek, NaiveTime and NaiveDateTime const where possible (#​1337)
  • Make methods on DateTime const where possible (#​1400)
  • Make Display format of TimeDelta conform better to ISO 8601 (#​1328)

Documentation

Internal

  • Switch branch names: 0.4.x releases are the main branch, work on 0.5 happens in the 0.5.x branch (#​1390, #​1402).
  • Don't use deprecated method in impl Arbitrary for DateTime and set up CI test (#​1336)
  • Remove workaround for Rust < 1.61 (#​1393)
  • Bump codecov/codecov-action from 3 to 4 (#​1404)
  • Remove partial support for handling -0000 offset (#​1411)
  • Move TOO_LONG error out of parse_internal (#​1419)

Thanks to all contributors on behalf of the chrono team, @​djc and @​pitdicker!

v0.4.33

Compare Source

This release fixes the broken docrs.rs build of chrono 0.4.32.

What's Changed

v0.4.32

Compare Source

In this release we shipped part of the effort to reduce the number of methods that could unexpectedly panic, notably for the DateTime and Duration types.

Chrono internally stores the value of a DateTime in UTC, and transparently converts it to the local value as required. For example adding a second to a DateTime needs 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 for Debug output.

In chrono 0.4.32 the range of NaiveDate, NaiveDateTime and DateTime is 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 the MIN and MAX dates.

Duration had a similar issue. The range of this type was pretty arbitrary picked to match the range of an i64 in milliseconds. Negating an i64::MIN pushes a value out of range, and in the same way negating Duration::MIN could 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::MAX instead and prevent the panic case.

Other highlights:

  • Duration gained new fallible initialization methods.
  • Better support for rkyv.
  • Most methods on NaiveDateTime are now const.
  • We had to bump our MSRV to 1.61 to keep building with our dependencies. This will also allow us to make more methods on DateTime const in a future release.

Complete list of changes:

Fixes

  • Fix panic in TimeZone::from_local_datetime (#​1071)
  • Fix out of range panics in DateTime getters and setters (#​1317, #​1329)

Additions

Changes

  • Fix panic in Duration::MIN.abs() (adjust Duration::MIN by 1 millisecond) (#​1334)
  • Bump MSRV to 1.61 (#​1347)
  • Update windows-targets requirement from 0.48 to 0.52 (#​1360)
  • Update windows-bindgen to 0.52 (#​1379)

Deprecations

  • Deprecate standalone format functions (#​1306)

Documentation

Rkyv support

Changes to unstable features

  • Don't let unstable-locales imply the alloc feature (#​1307)
  • Remove format::{format_localized, format_item_localized} (#​1311)
  • Inline write_rfc2822_inner, don't localize (#​1322)

Internal

  • Add benchmark for DateTime::with_* (#​1309)
  • Fix *_DAYS_FROM_YEAR_0 calculation (#​1312)
  • Add NaiveTime::overflowing_(add|sub)_offset (#​1310)
  • Rewrite DateTime::overflowing_(add|sub)_offset (#​1069)
  • Tests calling date command set env LC_ALL (#​1315, thanks @​jtmoon79)
  • Update deny.toml (#​1320)
  • Bump actions/setup-node from 3 to 4 (#​1346)
  • test.yml remove errant with: node-version (#​1352, thanks @​jtmoon79)
  • CI Linting: Fix missing sources checkout in toml job (#​1371, thanks @​gibbz00)
  • Silence clippy lint for test code with Rust 1.74.0 (#​1362)

Thanks to all contributors on behalf of the chrono team, @​djc and @​pitdicker!

v0.4.31

Compare 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
  • Deprecate timestamp_nanos in favor of the non-panicking timestamp_nanos_opt (#​1275)
Additions
Fixes
  • Format day of month in RFC 2822 without padding (#​1272)
  • Don't allow strange leap seconds which are not on a minute boundary initialization methods (#​1283)
    This makes many methods a little more strict:
    • NaiveTime::from_hms_milli
    • NaiveTime::from_hms_milli_opt
    • NaiveTime::from_hms_micro
    • NaiveTime::from_hms_micro_opt
    • NaiveTime::from_hms_nano
    • NaiveTime::from_hms_nano_opt
    • NaiveTime::from_num_seconds_from_midnight
    • NaiveTime::from_num_seconds_from_midnight_opt
    • NaiveDate::and_hms_milli
    • NaiveDate::and_hms_milli_opt
    • NaiveDate::and_hms_micro
    • NaiveDate::and_hms_micro_opt
    • NaiveDate::and_hms_nano
    • NaiveDate::and_hms_nano_opt
    • NaiveDateTime::from_timestamp
    • NaiveDateTime::from_timestamp_opt
    • TimeZone::timestamp
    • TimeZone::timestamp_opt
  • Fix underflow in NaiveDateTime::timestamp_nanos_opt (#​1294, thanks @​crepererum)
Documentation
  • Add more documentation about the RFC 2822 obsolete date format (#​1267)
Internal
  • Remove internal __doctest feature and doc_comment dependency (#​1276)
  • CI: Bump actions/checkout from 3 to 4 (#​1280)
  • Optimize NaiveDate::add_days for small values (#​1214)
  • Upgrade pure-rust-locales to 0.7.0 (#​1288, thanks @​jeremija wo did good improvements on pure-rust-locales)

Thanks to all contributors on behalf of the chrono team, @​djc and @​pitdicker!

v0.4.30

Compare Source

In this release, we have decided to swap out the chrono::Duration type (which has been a re-export of time 0.1 Duration type) with our own definition, which exposes a strict superset of the time::Duration API. This helps avoid warnings about the CVE-2020-26235 and RUSTSEC-2020-0071 advisories for downstream users and allows us to improve the Duration API going forward.

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
Documentation

Relation between chrono and time 0.1

Rust first had a time module added to std in its 0.7 release. It later moved to libextra, and then to a libtime library 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::Duration was included as std::time::Duration (rust#​15934) in 2014.

In preparation of Rust 1.0 at the end of 2014 libtime was moved out of the Rust distro and into the time crate to eventually be redesigned (rust#​18832, rust#​18858), like the num and rand crates. Of course chrono kept its dependency on this time crate. time started re-exporting std::time::Duration during this period. Later, the standard library was changed to have a more limited unsigned Duration type (rust#​24920, RFC 1040), while the time crate kept the full functionality with time::Duration. time::Duration had been a part of chrono's public API.

By 2016 time 0.1 lived under the rust-lang-deprecated organisation and was not actively maintained (time#​136). chrono absorbed the platform functionality and Duration type of the time crate in chrono#​478 (the work started in chrono#​286). In order to preserve compatibility with downstream crates depending on time and chrono sharing a Duration type, chrono kept depending on time 0.1. chrono offered the option to opt out of the time dependency by disabling the oldtime feature (swapping it out for an effectively similar chrono type). In 2019, @​jhpratt took over maintenance on the time crate and released what amounts to a new crate as time 0.2.

Security advisories

In November of 2020 CVE-2020-26235 and RUSTSEC-2020-0071 were opened against the time crate. @​quininer had found that calls to localtime_r may 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 to time.

On Unix-like systems a process is given a timezone id or description via the TZ environment 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. time 0.1 and chrono used the POSIX function localtime_r to do the conversion to local time, which reads the TZ variable.

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 getenv in 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 the TZ variable or via iana-time-zone as 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 the TZ environment 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::Duration type, 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 Duration implementation 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.29

Compare Source

This release fixes a panic introduced in chrono 0.4.27 in FromStr<DateTime<Utc>> (#​1253).

Chrono now has a Discord channel.

Fixes

  • Fix arbitrary string slicing in parse_rfc3339_relaxed (#​1254)

Deprecations

  • Deprecate TimeZone::datetime_from_str (#​1251)

Documentation

Internal improvements

  • Revert "add test_issue_866" (#​1238)
  • CI: run tests on i686 and wasm32-wasi (#​1237)
  • CI: Include doctests for code coverage (#​1248)
  • Move benchmarks to a separate crate (#​1243)
    This allows us to upgrade the criterion dependency to 5.1 without changing our MSRV.
  • Add Discord link to README (#​1240, backported in #​1256)

Thanks to all contributors on behalf of the chrono team, @​djc and @​pitdicker!

v0.4.28

Compare 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.27

Compare 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 NaiveDate and NaiveTime are made const, NaiveDateTime and others will follow in a later release.

The parser for the %+ formatting specifier and the RFC3339 formatting 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 by DateTime::from_str. If you need to validate the input, consider using DateTime::from_rfc3339.

Deprecations

Additions

Fixes

Documentation

Internal improvements

Thanks to all contributors on behalf of the chrono team, @​djc and @​pitdicker!

v0.4.26

Compare 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.

Thanks on behalf of the chrono team (@​djc and @​esheppa) to all contributors!

v0.4.25: 0.4.25

Compare 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

Fixes

Refactoring

Documentation

Internal improvements

On behalf of @​djc and @​esheppa, thanks to all contributors!

v0.4.24: 0.4.24

Compare Source

This is a small maintenance release with accumulated fixes and improvements.

Thanks to all contributors from the chrono team, @​esheppa and @​djc.

iamcodemaker/console_log

v1.0.0

Compare Source

This is a re-release of v0.2.2. There have been no major code changes for over two years. Let's call it stable. 🎉

Full Changelog: https://github.com/iamcodemaker/console_log/compare/0.2.2...1.0.0

v0.2.2

What's Changed

New Contributors

This is the first time generating release notes, so not all of these contributions are in this release. I still wanted to recognize the contributions.

Full Changelog: https://github.com/iamcodemaker/console_log/commits/0.2.2

graphql-rust/graphql-client

v0.14.0

Compare Source

  • Add support for GraphQL’s extend type directive
  • Add support for graphqls:// schema
  • Expose generate_module_token_stream_from_string to allow custom macro wrappers
serde-rs/json

v1.0.115

Compare Source

  • Documentation improvements

v1.0.114

Compare Source

  • Fix unused_imports warnings when compiled by rustc 1.78

v1.0.113

Compare Source

  • Add swap_remove and shift_remove methods on Map (#​1109)

v1.0.112

Compare Source

  • Improve formatting of "invalid type" error messages involving floats (#​1107)

v1.0.111

Compare Source

v1.0.110

Compare Source

  • Update proc-macro2 to fix caching issue when using a rustc-wrapper such as sccache

v1.0.109

Compare Source

  • Documentation improvements

v1.0.108

Compare Source

v1.0.107

Compare Source

  • impl IntoDeserializer for &RawValue (#​1071)

v1.0.106

Compare Source

v1.0.105

Compare Source

v1.0.104

Compare Source

v1.0.103

Compare Source

  • Documentation improvements

v1.0.102

Compare Source

  • Add a way to customize the serialization of byte arrays (#​1039)

v1.0.101

Compare Source

v1.0.100

Compare Source

  • Support -Z minimal-versions

v1.0.99

Compare Source

v1.0.98

Compare Source

  • Update indexmap dependency used by "preserve_order" feature to version 2

v1.0.97

Compare Source

  • Add io_error_kind() method to serde_json::Error: fn io_error_kind(&self) -> Option<std::io::ErrorKind> (#​1026)
tower-rs/tower-http

v0.5.2: v0.5.2

Compare Source

Added:

  • compression: Will now send a vary: accept-encoding header on compressed responses (#​399)
  • compression: Support x-gzip as equivalent to gzip in accept-encoding request header (#​467)

Fixed

  • compression: Skip compression for range requests (#​446)
  • compression: Skip compression for SSE responses by default (#​465)
  • cors: Actually keep Vary headers set by the inner service when setting response headers (#​473)
    • Version 0.5.1 intended to ship this, but the implementation was buggy and didn't actually do anything

v0.5.1: v0.5.1

Compare Source

  • fs: Support files precompressed with zstd in ServeFile
  • trace: Add default generic parameters for ResponseBody and ResponseFuture (#​455)
  • trace: Add type aliases HttpMakeClassifier and GrpcMakeClassifier (#​455)

Fixed

  • cors: Keep Vary headers set by the inner service when setting response headers (#​398)
  • fs: ServeDir now no longer redirects from /directory to /directory/
    if append_index_html_on_directories is disabled (#​421)

v0.5.0: v0.5.0

Compare Source

Changed

  • Bump Minimum Supported Rust Version to 1.66 (#​433)
  • Update to http-body 1.0 (#​348)
  • Update to http 1.0 (#​348)
  • Preserve service error type in RequestDecompression (#​368)

Fixed

  • Accepts range headers with ranges where the end of range goes past the end of the document by bumping
    http-range-header to 0.4

v0.4.4: v0.4.4

Compare Source

  • trace: Default implementations for trace bodies.

v0.4.3: v0.4.3

Compare Source

Fixed

  • compression: Fix accidental breaking change in 0.4.2.

v0.4.2: v0.4.2

Compare Source

Added

  • cors: Add support for private network preflights (#​373)
  • compression: Implement Default for DecompressionBody (#​370)

Changed

  • compression: Update to async-compression 0.4 (#​371)

Fixed

  • compression: Override default brotli compression level 11 -> 4 (#​356)
  • trace: Simplify dynamic tracing level application (#​380)
  • normalize_path: Fix path normalization for preceding slashes (#​359)

v0.4.1: v0.4.1

Compare Source

Added

  • request_id: Derive Default for MakeRequestUuid (#​335)
  • fs: Derive Default for ServeFileSystemResponseBody (#​336)
  • compression: Expose compression quality on the CompressionLayer (#​333)

Fixed

  • compression: Improve parsing of Accept-Encoding request header (#​220)
  • normalize_path: Fix path normalization of index route (#​347)
  • decompression: Enable multiple_members for GzipDecoder (#​354)

v0.4.0: v0.4.0

Compare Source

Added

  • decompression: Add RequestDecompression middleware (#​282)
  • compression: Implement Default for CompressionBody (#​323)
  • compression, decompression: Support zstd (de)compression (#​322)

Changed

  • serve_dir: ServeDir and ServeFile's error types are now Infallible and any IO errors
    will be converted into responses. Use try_call to generate error responses manually (BREAKING) (#​283)
  • serve_dir: ServeDir::fallback and ServeDir::not_found_service now requires
    the fallback service to use Infallible as its error type (BREAKING) (#​283)
  • compression, decompression: Tweak prefered compression encodings (#​325)

Removed

  • Removed RequireAuthorization in favor of ValidateRequest (BREAKING) (#​290)

Fixed

  • serve_dir: Don't include identity in Content-Encoding header (#​317)
  • compression: Do compress SVGs (#​321)
  • serve_dir: In ServeDir, convert io::ErrorKind::NotADirectory to 404 Not Found (#​331)

v0.3.5: v0.3.5

Compare Source

Added

  • Add NormalizePath middleware (#​275)
  • Add ValidateRequest middleware (#​289)
  • Add RequestBodyTimeout middleware (#​303)

Changed

  • Bump Minimum Supported Rust Version to 1.60 (#​299)

Fixed

  • trace: Correctly identify gRPC requests in default on_response callback (#​278)
  • cors: Panic if a wildcard (*) is passed to AllowOrigin::list. Use
    AllowOrigin::any() instead (#​285)
  • serve_dir: Call the fallback on non-uft8 request paths (#​310)
tokio-rs/tracing

v0.1.40: tracing 0.1.40

Compare Source

This release fixes a potential stack use-after-free in the
Instrument::into_inner method. Only uses of this method are affected by this
bug.

Fixed
  • Use mem::ManuallyDrop instead of mem::forget in Instrument::into_inner
    (#​2765)

Thanks to @​cramertj and @​manishearth for finding and fixing this issue!

v0.1.39: tracing 0.1.39

Compare Source

This release adds several additional features to the tracing macros. In
addition, it updates the tracing-core dependency to v0.1.32 and
the tracing-attributes dependency to v0.1.27.

Added
  • Allow constant field names in macros (#​2617)
  • Allow setting event names in macros (#​2699)
  • core: Allow ValueSets of any length (#​2508)
Changed
  • tracing-attributes: updated to 0.1.27
  • tracing-core: updated to 0.1.32
  • attributes: Bump minimum version of proc-macro2 to 1.0.60 (#​2732)
  • attributes: Generate less dead code for async block return type hint (#​2709)
Fixed
  • Use fully qualified names in macros for items exported from std prelude
    (#​2621, #​2757)
  • attributes: Allow [clippy::let_with_type_underscore] in macro-generated
    code ([#​2609])
  • attributes: Allow unknown_lints in macro-generated code (#​2626)
  • attributes: Fix a compilation error in #[instrument] when the "log"
    feature is enabled (#​2599)
Documented
  • Add axum-insights to relevant crates. (#​2713)
  • Fix link to RAI pattern crate documentation ([#​2612])
  • Fix docs typos and warnings (#​2581)
  • Add clippy-tracing to related crates (#​2628)
  • Add tracing-cloudwatch to related crates (#​2667)
  • Fix deadlink to tracing-etw repo (#​2602)

v0.1.38: tracing 0.1.38

Compare Source

This tracing release changes the Drop implementation for Instrumented
Futures so that the attached Span is entered when dropping the Future. This
means that events emitted by the Future's Drop implementation will now be
recorded within its Span. It also adds #[inline] hints to methods called in
the event! macro's expansion, for an improvement in both binary size and
performance.

Additionally, this release updates the tracing-attributes dependency to
v0.1.24, which updates the [syn][syn] dependency to v2.x.x.
tracing-attributes v0.1.24 also includes improvements to the #[instrument]
macro; see the tracing-attributes 0.1.24 release notes for
details.

Added
  • Instrumented futures will now enter the attached Span in their Drop
    implementation, allowing events emitted when dropping the future to occur
    within the span (#​2562)
  • #[inline] attributes for methods called by the event! macros, making
    generated code smaller (#​2555)
  • attributes: level argument to #[instrument(err)] and
    #[instrument(ret)] to override the level of
    the generated return value event (#​2335)
  • attributes: Improved compiler error message when #[instrument] is added to a const fn
    (#​2418)
Changed
  • tracing-attributes: updated to 0.1.24
  • Removed unneeded cfg-if dependency (#​2553)
  • attributes: Updated [syn][syn] dependency to 2.0 (#​2516)
Fixed
  • attributes: Fix clippy::unreachable warnings in #[instrument]-generated code (#​2356)
  • attributes: Removed unused "visit" feature flag from syn dependency (#​2530)
Documented
  • attributes: Documented default level for #[instrument(err)] (#​2433)
  • attributes: Improved documentation for levels in #[instrument] (#​2350)

Thanks to @​nitnelave, @​jsgf, @​Abhicodes-crypto, @​LukeMathWalker, @​andrewpollack,
@​quad, @​klensy, @​davidpdrsn, @​dbidwell94, @​ldm0, @​NobodyXu, @​ilsv, and @​daxpedda
for contributing to this release!

uuid-rs/uuid

v1.8.0

Compare Source

⚠️ Potential Breakage ⚠️

A new impl AsRef<Uuid> for Uuid bound has been added, which can break inference on code like:

let b = uuid.as_ref();

You can fix these by explicitly typing the result of the conversion:

let b: &[u8] = uuid.as_ref();

or by calling as_bytes instead:

let b = uuid.as_bytes();

What's Changed

New Contributors

Full Changelog: https://github.com/uuid-rs/uuid/compare/1.7.0...1.8.0

v1.7.0

Compare Source

What's Changed

New Contributors

Full Changelog: https://github.com/uuid-rs/uuid/compare/1.6.1...1.7.0

v1.6.1

Compare Source

What's Changed

Full Changelog: https://github.com/uuid-rs/uuid/compare/1.6.0...1.6.1

v1.6.0

Compare Source

What's Changed

New Contributors

Full Changelog: https://github.com/uuid-rs/uuid/compare/1.5.0...1.6.0

v1.5.0

Compare Source

What's Changed

New Contributors

Full Changelog: https://github.com/uuid-rs/uuid/compare/1.4.1...1.5.0

v1.4.1

Compare Source

What's Changed

New Contributors

Full Changelog: https://github.com/uuid-rs/uuid/compare/1.4.0...1.4.1

v1.4.0

Compare Source

What's Changed

New Contributors

Full Changelog: https://github.com/uuid-rs/uuid/compare/1.3.4...1.4.0

v1.3.4

Compare Source

What's Changed

New Contributors

Full Changelog: https://github.com/uuid-rs/uuid/compare/1.3.3...1.3.4

v1.3.3

Compare Source

What's Changed

Full Changelog: https://github.com/uuid-rs/uuid/compare/1.3.2...1.3.3

v1.3.2

Compare Source

What's Changed

New Contributors

Full Changelog: https://github.com/uuid-rs/uuid/compare/1.3.1...1.3.2

v1.3.1

Compare Source

What's Changed

Full Changelog: https://github.com/uuid-rs/uuid/compare/1.3.0...1.3.1


Configuration

📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 Automerge: Enabled.

Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.


  • If you want to rebase/retry this PR, check this box

This PR has been generated by Renovate Bot.

This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [anyhow](https://github.com/dtolnay/anyhow) | dependencies | patch | `1.0.71` -> `1.0.81` | | [axum](https://github.com/tokio-rs/axum) | dependencies | minor | `0.6.1` -> `0.7.5` | | [chrono](https://github.com/chronotope/chrono) | workspace.dependencies | patch | `0.4.23` -> `0.4.37` | | [console_log](https://github.com/iamcodemaker/console_log) | dependencies | major | `0.2` -> `1.0` | | [graphql_client](https://github.com/graphql-rust/graphql-client) | dependencies | minor | `0.13.0` -> `0.14.0` | | [serde_json](https://github.com/serde-rs/json) | dependencies | patch | `1.0.96` -> `1.0.115` | | [tower-http](https://github.com/tower-rs/tower-http) | dependencies | minor | `0.3.4` -> `0.5.2` | | [tracing](https://tokio.rs) ([source](https://github.com/tokio-rs/tracing)) | dependencies | patch | `0.1.37` -> `0.1.40` | | [tracing-subscriber](https://tokio.rs) ([source](https://github.com/tokio-rs/tracing)) | dependencies | patch | `0.3.16` -> `0.3.18` | | [uuid](https://github.com/uuid-rs/uuid) | workspace.dependencies | minor | `1.3.0` -> `1.8.0` | --- ### Release Notes <details> <summary>dtolnay/anyhow</summary> ### [`v1.0.81`](https://github.com/dtolnay/anyhow/releases/tag/1.0.81) [Compare Source](https://github.com/dtolnay/anyhow/compare/1.0.80...1.0.81) - Make backtrace support available when using -Dwarnings ([#&#8203;354](https://github.com/dtolnay/anyhow/issues/354)) ### [`v1.0.80`](https://github.com/dtolnay/anyhow/releases/tag/1.0.80) [Compare Source](https://github.com/dtolnay/anyhow/compare/1.0.79...1.0.80) - Fix unused_imports warnings when compiled by rustc 1.78 ### [`v1.0.79`](https://github.com/dtolnay/anyhow/releases/tag/1.0.79) [Compare Source](https://github.com/dtolnay/anyhow/compare/1.0.78...1.0.79) - Work around improperly cached build script result by sccache ([#&#8203;340](https://github.com/dtolnay/anyhow/issues/340)) ### [`v1.0.78`](https://github.com/dtolnay/anyhow/releases/tag/1.0.78) [Compare Source](https://github.com/dtolnay/anyhow/compare/1.0.77...1.0.78) - Reduce spurious rebuilds under RustRover IDE when using a nightly toolchain ([#&#8203;337](https://github.com/dtolnay/anyhow/issues/337)) ### [`v1.0.77`](https://github.com/dtolnay/anyhow/releases/tag/1.0.77) [Compare Source](https://github.com/dtolnay/anyhow/compare/1.0.76...1.0.77) - Make `anyhow::Error::backtrace` available on stable Rust compilers 1.65+ ([#&#8203;293](https://github.com/dtolnay/anyhow/issues/293), thanks [@&#8203;LukasKalbertodt](https://github.com/LukasKalbertodt)) ### [`v1.0.76`](https://github.com/dtolnay/anyhow/releases/tag/1.0.76) [Compare Source](https://github.com/dtolnay/anyhow/compare/1.0.75...1.0.76) - Opt in to `unsafe_op_in_unsafe_fn` lint ([#&#8203;329](https://github.com/dtolnay/anyhow/issues/329)) ### [`v1.0.75`](https://github.com/dtolnay/anyhow/releases/tag/1.0.75) [Compare Source](https://github.com/dtolnay/anyhow/compare/1.0.74...1.0.75) - Partially work around rust-analyzer bug (https://github.com/rust-lang/rust-analyzer/issues/9911) ### [`v1.0.74`](https://github.com/dtolnay/anyhow/releases/tag/1.0.74) [Compare Source](https://github.com/dtolnay/anyhow/compare/1.0.73...1.0.74) - Add bootstrap workaround to allow rustc to depend on anyhow ([#&#8203;320](https://github.com/dtolnay/anyhow/issues/320), thanks [@&#8203;RalfJung](https://github.com/RalfJung)) ### [`v1.0.73`](https://github.com/dtolnay/anyhow/releases/tag/1.0.73) [Compare Source](https://github.com/dtolnay/anyhow/compare/1.0.72...1.0.73) - Update backtrace support to nightly's new Error::provide API (https://github.com/rust-lang/rust/pull/113464, [#&#8203;319](https://github.com/dtolnay/anyhow/issues/319)) ### [`v1.0.72`](https://github.com/dtolnay/anyhow/releases/tag/1.0.72) [Compare Source](https://github.com/dtolnay/anyhow/compare/1.0.71...1.0.72) - Documentation improvements </details> <details> <summary>tokio-rs/axum</summary> ### [`v0.7.5`](https://github.com/tokio-rs/axum/releases/tag/axum-v0.7.5): axum - v0.7.5 [Compare Source](https://github.com/tokio-rs/axum/compare/axum-v0.7.4...axum-v0.7.5) - **fixed:** Fixed layers being cloned when calling `axum::serve` directly with a `Router` or `MethodRouter` ([#&#8203;2586]) - **fixed:** `h2` is no longer pulled as a dependency unless the `http2` feature is enabled ([#&#8203;2605]) [#&#8203;2586]: https://github.com/tokio-rs/axum/pull/2586 [#&#8203;2605]: https://github.com/tokio-rs/axum/pull/2605 ### [`v0.7.4`](https://github.com/tokio-rs/axum/releases/tag/axum-v0.7.4): axum - v0.7.4 [Compare Source](https://github.com/tokio-rs/axum/compare/axum-v0.7.3...axum-v0.7.4) - **fixed:** Fix performance regression present since axum 0.7.0 ([#&#8203;2483]) - **fixed:** Improve `debug_handler` on tuple response types ([#&#8203;2201]) - **added:** Add `must_use` attribute to `Serve` and `WithGracefulShutdown` ([#&#8203;2484]) - **added:** Re-export `axum_core::body::BodyDataStream` from axum [#&#8203;2201]: https://github.com/tokio-rs/axum/pull/2201 [#&#8203;2483]: https://github.com/tokio-rs/axum/pull/2483 [#&#8203;2201]: https://github.com/tokio-rs/axum/pull/2201 [#&#8203;2484]: https://github.com/tokio-rs/axum/pull/2484 ### [`v0.7.3`](https://github.com/tokio-rs/axum/releases/tag/axum-v0.7.3): axum - v0.7.3 [Compare Source](https://github.com/tokio-rs/axum/compare/axum-v0.7.2...axum-v0.7.3) - **added:** `Body` implements `From<()>` now ([#&#8203;2411]) - **change:** Update version of multer used internally for multipart ([#&#8203;2433]) - **change:** Update tokio-tungstenite to 0.21 ([#&#8203;2435]) - **added:** Enable `tracing` feature by default ([#&#8203;2460]) - **added:** Support graceful shutdown on `serve` ([#&#8203;2398]) - **added:** `RouterIntoService` implements `Clone` ([#&#8203;2456]) [#&#8203;2411]: https://github.com/tokio-rs/axum/pull/2411 [#&#8203;2433]: https://github.com/tokio-rs/axum/pull/2433 [#&#8203;2435]: https://github.com/tokio-rs/axum/pull/2435 [#&#8203;2460]: https://github.com/tokio-rs/axum/pull/2460 [#&#8203;2398]: https://github.com/tokio-rs/axum/pull/2398 [#&#8203;2456]: https://github.com/tokio-rs/axum/pull/2456 ### [`v0.7.2`](https://github.com/tokio-rs/axum/releases/tag/axum-v0.7.2): axum - v0.7.2 [Compare Source](https://github.com/tokio-rs/axum/compare/axum-v0.7.1...axum-v0.7.2) - **added:** Add `axum::body::to_bytes` ([#&#8203;2373]) - **fixed:** Gracefully handle accept errors in `serve` ([#&#8203;2400]) [#&#8203;2373]: https://github.com/tokio-rs/axum/pull/2373 [#&#8203;2400]: https://github.com/tokio-rs/axum/pull/2400 ### [`v0.7.1`](https://github.com/tokio-rs/axum/releases/tag/axum-v0.7.1): axum - v0.7.1 [Compare Source](https://github.com/tokio-rs/axum/compare/axum-v0.7.0...axum-v0.7.1) - **fix**: Fix readme. ### [`v0.7.0`](https://github.com/tokio-rs/axum/releases/tag/axum-v0.7.0): axum - v0.7.0 [Compare Source](https://github.com/tokio-rs/axum/compare/axum-v0.6.20...axum-v0.7.0) - **breaking:** Update public dependencies. axum now requires - [hyper](https://crates.io/crates/hyper) 1.0 - [http](https://crates.io/crates/http) 1.0 - [http-body](https://crates.io/crates/http-body) 1.0 - **breaking:** axum now requires [tower-http](https://crates.io/crates/tower-http) 0.5 - **breaking:** Remove deprecated `WebSocketUpgrade::max_send_queue` - **breaking:** The following types/traits are no longer generic over the request body (i.e. the `B` type param has been removed) ([#&#8203;1751] and [#&#8203;1789]): - `FromRequestParts` - `FromRequest` - `HandlerService` - `HandlerWithoutStateExt` - `Handler` - `LayeredFuture` - `Layered` - `MethodRouter` - `Next` - `RequestExt` - `RouteFuture` - `Route` - `Router` - **breaking:** axum no longer re-exports `hyper::Body` as that type is removed in hyper 1.0. Instead axum has its own body type at `axum::body::Body` ([#&#8203;1751]) - **breaking:** `extract::BodyStream` has been removed as `body::Body` implements `Stream` and `FromRequest` directly ([#&#8203;1751]) - **breaking:** Change `sse::Event::json_data` to use `axum_core::Error` as its error type ([#&#8203;1762]) - **breaking:** Rename `DefaultOnFailedUpdgrade` to `DefaultOnFailedUpgrade` ([#&#8203;1664]) - **breaking:** Rename `OnFailedUpdgrade` to `OnFailedUpgrade` ([#&#8203;1664]) - **breaking:** `TypedHeader` has been move to `axum-extra` ([#&#8203;1850]) - **breaking:** Removed re-exports of `Empty` and `Full`. Use `axum::body::Body::empty` and `axum::body::Body::from` respectively ([#&#8203;1789]) - **breaking:** The response returned by `IntoResponse::into_response` must use `axum::body::Body` as the body type. `axum::response::Response` does this ([#&#8203;1789]) - **breaking:** Removed the `BoxBody` type alias and its `box_body` constructor. Use `axum::body::Body::new` instead ([#&#8203;1789]) - **breaking:** Remove `RawBody` extractor. `axum::body::Body` implements `FromRequest` directly ([#&#8203;1789]) - **breaking:** The following types from `http-body` no longer implement `IntoResponse`: - `Full`, use `Body::from` instead - `Empty`, use `Body::empty` instead - `BoxBody`, use `Body::new` instead - `UnsyncBoxBody`, use `Body::new` instead - `MapData`, use `Body::new` instead - `MapErr`, use `Body::new` instead - **added:** Add `axum::extract::Request` type alias where the body is `axum::body::Body` ([#&#8203;1789]) - **added:** Add `Router::as_service` and `Router::into_service` to workaround type inference issues when calling `ServiceExt` methods on a `Router` ([#&#8203;1835]) - **breaking:** Removed `axum::Server` as it was removed in hyper 1.0. Instead use `axum::serve(listener, service)` or hyper/hyper-util for more configuration options ([#&#8203;1868]) - **breaking:** Only inherit fallbacks for routers nested with `Router::nest`. Routers nested with `Router::nest_service` will no longer inherit fallbacks ([#&#8203;1956]) - **fixed:** Don't remove the `Sec-WebSocket-Key` header in `WebSocketUpgrade` ([#&#8203;1972]) - **added:** Add `axum::extract::Query::try_from_uri` ([#&#8203;2058]) - **added:** Implement `IntoResponse` for `Box<str>` and `Box<[u8]>` (\[[#&#8203;2035](https://github.com/tokio-rs/axum/issues/2035)]) - **breaking:** Simplify `MethodFilter`. It no longer uses bitflags ([#&#8203;2073]) - **fixed:** Fix bugs around merging routers with nested fallbacks ([#&#8203;2096]) - **fixed:** Fix `.source()` of composite rejections ([#&#8203;2030]) - **fixed:** Allow unreachable code in `#[debug_handler]` ([#&#8203;2014]) - **change:** axum's MSRV is now 1.66 ([#&#8203;1882]) - **added:** Implement `IntoResponse` for `(R,) where R: IntoResponse` ([#&#8203;2143]) - **changed:** For SSE, add space between field and value for compatibility ([#&#8203;2149]) - **added:** Add `NestedPath` extractor ([#&#8203;1924]) - **added:** Add `handle_error` function to existing `ServiceExt` trait ([#&#8203;2235]) - **breaking:** `impl<T> IntoResponse(Parts) for Extension<T>` now requires `T: Clone`, as that is required by the http crate ([#&#8203;1882]) - **added:** Add `axum::Json::from_bytes` ([#&#8203;2244]) - **added:** Implement `FromRequestParts` for `http::request::Parts` ([#&#8203;2328]) - **added:** Implement `FromRequestParts` for `http::Extensions` ([#&#8203;2328]) - **fixed:** Clearly document applying `DefaultBodyLimit` to individual routes ([#&#8203;2157]) [#&#8203;1664]: https://github.com/tokio-rs/axum/pull/1664 [#&#8203;1751]: https://github.com/tokio-rs/axum/pull/1751 [#&#8203;1762]: https://github.com/tokio-rs/axum/pull/1762 [#&#8203;1789]: https://github.com/tokio-rs/axum/pull/1789 [#&#8203;1835]: https://github.com/tokio-rs/axum/pull/1835 [#&#8203;1850]: https://github.com/tokio-rs/axum/pull/1850 [#&#8203;1868]: https://github.com/tokio-rs/axum/pull/1868 [#&#8203;1882]: https://github.com/tokio-rs/axum/pull/1882 [#&#8203;1924]: https://github.com/tokio-rs/axum/pull/1924 [#&#8203;1956]: https://github.com/tokio-rs/axum/pull/1956 [#&#8203;1972]: https://github.com/tokio-rs/axum/pull/1972 [#&#8203;2014]: https://github.com/tokio-rs/axum/pull/2014 [#&#8203;2021]: https://github.com/tokio-rs/axum/pull/2021 [#&#8203;2030]: https://github.com/tokio-rs/axum/pull/2030 [#&#8203;2058]: https://github.com/tokio-rs/axum/pull/2058 [#&#8203;2073]: https://github.com/tokio-rs/axum/pull/2073 [#&#8203;2096]: https://github.com/tokio-rs/axum/pull/2096 [#&#8203;2140]: https://github.com/tokio-rs/axum/pull/2140 [#&#8203;2143]: https://github.com/tokio-rs/axum/pull/2143 [#&#8203;2149]: https://github.com/tokio-rs/axum/pull/2149 [#&#8203;2157]: https://github.com/tokio-rs/axum/pull/2157 [#&#8203;2235]: https://github.com/tokio-rs/axum/pull/2235 [#&#8203;2244]: https://github.com/tokio-rs/axum/pull/2244 [#&#8203;2328]: https://github.com/tokio-rs/axum/pull/2328 ### [`v0.6.20`](https://github.com/tokio-rs/axum/releases/tag/axum-v0.6.20): axum - v0.6.20 [Compare Source](https://github.com/tokio-rs/axum/compare/axum-v0.6.19...axum-v0.6.20) - **added:** `WebSocketUpgrade::write_buffer_size` and `WebSocketUpgrade::max_write_buffer_size` - **changed:** Deprecate `WebSocketUpgrade::max_send_queue` - **change:** Update tokio-tungstenite to 0.20 - **added:** Implement `Handler` for `T: IntoResponse` ([#&#8203;2140]) [#&#8203;2140]: https://github.com/tokio-rs/axum/pull/2140 ### [`v0.6.19`](https://github.com/tokio-rs/axum/releases/tag/axum-v0.6.19): axum - v0.6.19 [Compare Source](https://github.com/tokio-rs/axum/compare/axum-v0.6.18...axum-v0.6.19) - **added:** Add `axum::extract::Query::try_from_uri` ([#&#8203;2058]) - **added:** Implement `IntoResponse` for `Box<str>` and `Box<[u8]>` ([#&#8203;2035]) - **fixed:** Fix bugs around merging routers with nested fallbacks ([#&#8203;2096]) - **fixed:** Fix `.source()` of composite rejections ([#&#8203;2030]) - **fixed:** Allow unreachable code in `#[debug_handler]` ([#&#8203;2014]) - **change:** Update tokio-tungstenite to 0.19 ([#&#8203;2021]) - **change:** axum's MSRV is now 1.63 ([#&#8203;2021]) [#&#8203;2014]: https://github.com/tokio-rs/axum/pull/2014 [#&#8203;2021]: https://github.com/tokio-rs/axum/pull/2021 [#&#8203;2030]: https://github.com/tokio-rs/axum/pull/2030 [#&#8203;2035]: https://github.com/tokio-rs/axum/pull/2035 [#&#8203;2058]: https://github.com/tokio-rs/axum/pull/2058 [#&#8203;2096]: https://github.com/tokio-rs/axum/pull/2096 ### [`v0.6.18`](https://github.com/tokio-rs/axum/releases/tag/axum-v0.6.18): axum - v0.6.18 [Compare Source](https://github.com/tokio-rs/axum/compare/axum-v0.6.17...axum-v0.6.18) - **fixed:** Don't remove the `Sec-WebSocket-Key` header in `WebSocketUpgrade` ([#&#8203;1972]) [#&#8203;1972]: https://github.com/tokio-rs/axum/pull/1972 ### [`v0.6.17`](https://github.com/tokio-rs/axum/releases/tag/axum-v0.6.17): axum - v0.6.17 [Compare Source](https://github.com/tokio-rs/axum/compare/axum-v0.6.16...axum-v0.6.17) - **fixed:** Fix fallbacks causing a panic on `CONNECT` requests ([#&#8203;1958]) [#&#8203;1958]: https://github.com/tokio-rs/axum/pull/1958 ### [`v0.6.16`](https://github.com/tokio-rs/axum/releases/tag/axum-v0.6.16): axum - v0.6.16 [Compare Source](https://github.com/tokio-rs/axum/compare/axum-v0.6.15...axum-v0.6.16) - **fixed:** Don't allow extracting `MatchedPath` in fallbacks ([#&#8203;1934]) - **fixed:** Fix panic if `Router` with something nested at `/` was used as a fallback ([#&#8203;1934]) - **added:** Document that `Router::new().fallback(...)` isn't optimal ([#&#8203;1940]) [#&#8203;1934]: https://github.com/tokio-rs/axum/pull/1934 [#&#8203;1940]: https://github.com/tokio-rs/axum/pull/1940 ### [`v0.6.15`](https://github.com/tokio-rs/axum/releases/tag/axum-v0.6.15): axum - v0.6.15 [Compare Source](https://github.com/tokio-rs/axum/compare/axum-v0.6.14...axum-v0.6.15) - **fixed:** Removed additional leftover debug messages ([#&#8203;1927]) [#&#8203;1927]: https://github.com/tokio-rs/axum/pull/1927 ### [`v0.6.14`](https://github.com/tokio-rs/axum/releases/tag/axum-v0.6.14): axum - v0.6.14 [Compare Source](https://github.com/tokio-rs/axum/compare/axum-v0.6.13...axum-v0.6.14) - **fixed:** Removed leftover "path_router hit" debug message ([#&#8203;1925]) [#&#8203;1925]: https://github.com/tokio-rs/axum/pull/1925 ### [`v0.6.13`](https://github.com/tokio-rs/axum/releases/tag/axum-v0.6.13): axum - v0.6.13 [Compare Source](https://github.com/tokio-rs/axum/compare/axum-v0.6.12...axum-v0.6.13) - **added:** Log rejections from built-in extractors with the `axum::rejection=trace` target ([#&#8203;1890]) - **fixed:** Fixed performance regression with `Router::nest` introduced in 0.6.0. `nest` now flattens the routes which performs better ([#&#8203;1711]) - **fixed:** Extracting `MatchedPath` in nested handlers now gives the full matched path, including the nested path ([#&#8203;1711]) - **added:** Implement `Deref` and `DerefMut` for built-in extractors ([#&#8203;1922]) [#&#8203;1711]: https://github.com/tokio-rs/axum/pull/1711 [#&#8203;1890]: https://github.com/tokio-rs/axum/pull/1890 [#&#8203;1922]: https://github.com/tokio-rs/axum/pull/1922 ### [`v0.6.12`](https://github.com/tokio-rs/axum/releases/tag/axum-v0.6.12): axum - v0.6.12 [Compare Source](https://github.com/tokio-rs/axum/compare/axum-v0.6.11...axum-v0.6.12) - **added:** Implement `IntoResponse` for `MultipartError` ([#&#8203;1861]) - **fixed:** More clearly document what wildcards matches ([#&#8203;1873]) [#&#8203;1861]: https://github.com/tokio-rs/axum/pull/1861 [#&#8203;1873]: https://github.com/tokio-rs/axum/pull/1873 ### [`v0.6.11`](https://github.com/tokio-rs/axum/releases/tag/axum-v0.6.11): axum - v0.6.11 [Compare Source](https://github.com/tokio-rs/axum/compare/axum-v0.6.10...axum-v0.6.11) - **fixed:** Don't require `S: Debug` for `impl Debug for Router<S>` ([#&#8203;1836]) - **fixed:** Clone state a bit less when handling requests ([#&#8203;1837]) - **fixed:** Unpin itoa dependency ([#&#8203;1815]) [#&#8203;1815]: https://github.com/tokio-rs/axum/pull/1815 [#&#8203;1836]: https://github.com/tokio-rs/axum/pull/1836 [#&#8203;1837]: https://github.com/tokio-rs/axum/pull/1837 ### [`v0.6.10`](https://github.com/tokio-rs/axum/releases/tag/axum-v0.6.10): axum - v0.6.10 [Compare Source](https://github.com/tokio-rs/axum/compare/axum-v0.6.9...axum-v0.6.10) - **fixed:** Add `#[must_use]` attributes to types that do nothing unless used ([#&#8203;1809]) - **fixed:** Gracefully handle missing headers in the `TypedHeader` extractor ([#&#8203;1810]) - **fixed:** Fix routing issues when loading a `Router` via a dynamic library ([#&#8203;1806]) [#&#8203;1806]: https://github.com/tokio-rs/axum/pull/1806 [#&#8203;1809]: https://github.com/tokio-rs/axum/pull/1809 [#&#8203;1810]: https://github.com/tokio-rs/axum/pull/1810 ### [`v0.6.9`](https://github.com/tokio-rs/axum/releases/tag/axum-v0.6.9): axum - v0.6.9 [Compare Source](https://github.com/tokio-rs/axum/compare/axum-v0.6.8...axum-v0.6.9) - **changed:** Update to tower-http 0.4. axum is still compatible with tower-http 0.3 ([#&#8203;1783]) [#&#8203;1783]: https://github.com/tokio-rs/axum/pull/1783 ### [`v0.6.8`](https://github.com/tokio-rs/axum/releases/tag/axum-v0.6.8): axum - v0.6.8 [Compare Source](https://github.com/tokio-rs/axum/compare/axum-v0.6.7...axum-v0.6.8) - **fixed:** Fix `Allow` missing from routers with middleware ([#&#8203;1773]) - **added:** Add `KeepAlive::event` for customizing the event sent for SSE keep alive ([#&#8203;1729]) [#&#8203;1729]: https://github.com/tokio-rs/axum/pull/1729 [#&#8203;1773]: https://github.com/tokio-rs/axum/pull/1773 ### [`v0.6.7`](https://github.com/tokio-rs/axum/releases/tag/axum-v0.6.7): axum - v0.6.7 [Compare Source](https://github.com/tokio-rs/axum/compare/axum-v0.6.6...axum-v0.6.7) - **added:** Add `FormRejection::FailedToDeserializeFormBody` which is returned if the request body couldn't be deserialized into the target type, as opposed to `FailedToDeserializeForm` which is only for query parameters ([#&#8203;1683]) - **added:** Add `MockConnectInfo` for setting `ConnectInfo` during tests ([#&#8203;1767]) [#&#8203;1683]: https://github.com/tokio-rs/axum/pull/1683 [#&#8203;1767]: https://github.com/tokio-rs/axum/pull/1767 ### [`v0.6.6`](https://github.com/tokio-rs/axum/releases/tag/axum-v0.6.6): axum - v0.6.6 [Compare Source](https://github.com/tokio-rs/axum/compare/axum-v0.6.5...axum-v0.6.6) - **fixed:** Enable passing `MethodRouter` to `Router::fallback` ([#&#8203;1730]) [#&#8203;1730]: https://github.com/tokio-rs/axum/pull/1730 ### [`v0.6.5`](https://github.com/tokio-rs/axum/releases/tag/axum-v0.6.5): axum - v0.6.5 [Compare Source](https://github.com/tokio-rs/axum/compare/axum-v0.6.4...axum-v0.6.5) - **fixed:** Fix `#[debug_handler]` sometimes giving wrong borrow related suggestions ([#&#8203;1710]) - Document gotchas related to using `impl IntoResponse` as the return type from handler functions ([#&#8203;1736]) [#&#8203;1710]: https://github.com/tokio-rs/axum/pull/1710 [#&#8203;1736]: https://github.com/tokio-rs/axum/pull/1736 ### [`v0.6.4`](https://github.com/tokio-rs/axum/releases/tag/axum-v0.6.4): axum - v0.6.4 [Compare Source](https://github.com/tokio-rs/axum/compare/axum-v0.6.3...axum-v0.6.4) - Depend on axum-macros 0.3.2 ### [`v0.6.3`](https://github.com/tokio-rs/axum/releases/tag/axum-v0.6.3): axum - v0.6.3 [Compare Source](https://github.com/tokio-rs/axum/compare/axum-v0.6.2...axum-v0.6.3) - **added:** Implement `IntoResponse` for `&'static [u8; N]` and `[u8; N]` ([#&#8203;1690]) - **fixed:** Make `Path` support types using `serde::Deserializer::deserialize_any` ([#&#8203;1693]) - **added:** Add `RawPathParams` ([#&#8203;1713]) - **added:** Implement `Clone` and `Service` for `axum::middleware::Next` ([#&#8203;1712]) - **fixed:** Document required tokio features to run "Hello, World!" example ([#&#8203;1715]) [#&#8203;1690]: https://github.com/tokio-rs/axum/pull/1690 [#&#8203;1693]: https://github.com/tokio-rs/axum/pull/1693 [#&#8203;1712]: https://github.com/tokio-rs/axum/pull/1712 [#&#8203;1713]: https://github.com/tokio-rs/axum/pull/1713 [#&#8203;1715]: https://github.com/tokio-rs/axum/pull/1715 ### [`v0.6.2`](https://github.com/tokio-rs/axum/releases/tag/axum-v0.6.2): axum - v0.6.2 [Compare Source](https://github.com/tokio-rs/axum/compare/axum-v0.6.1...axum-v0.6.2) - **added:** Add `body_text` and `status` methods to built-in rejections ([#&#8203;1612]) - **added:** Enable the `runtime` feature of `hyper` when using `tokio` ([#&#8203;1671]) [#&#8203;1612]: https://github.com/tokio-rs/axum/pull/1612 [#&#8203;1671]: https://github.com/tokio-rs/axum/pull/1671 </details> <details> <summary>chronotope/chrono</summary> ### [`v0.4.37`](https://github.com/chronotope/chrono/releases/tag/v0.4.37) [Compare Source](https://github.com/chronotope/chrono/compare/v0.4.36...v0.4.37) Version 0.4.36 introduced an unexpected breaking change and was yanked. In it `LocalResult` was renamed to `MappedLocalTime` to avoid the impression that it is a `Result` type 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 name `MappedLocalTime` the 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](https://github.com/chronotope/chrono/releases/tag/v0.4.36) from yesterday for the yanked release. ### [`v0.4.36`](https://github.com/chronotope/chrono/releases/tag/v0.4.36) [Compare Source](https://github.com/chronotope/chrono/compare/v0.4.35...v0.4.36) This release un-deprecates the methods on `TimeDelta` that 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: ```rust use chrono::{Local, NaiveTime}; // Today at 12:00:00 let today_noon = Local::now().with_time(NaiveTime::from_hms_opt(12, 0, 0).unwrap()); ``` ### Additions - Add `DateTime::with_time()` ([#&#8203;1510](https://github.com/chronotope/chrono/issues/1510)) ### Deprecations - Revert `TimeDelta` deprecations ([#&#8203;1543](https://github.com/chronotope/chrono/issues/1543)) - Deprecate `TimeStamp::timestamp_subsec_nanos`, which was missed in the 0.4.35 release ([#&#8203;1486](https://github.com/chronotope/chrono/issues/1486)) ### Documentation - Correct version number of deprecation notices ([#&#8203;1486](https://github.com/chronotope/chrono/issues/1486)) - Fix some typos ([#&#8203;1505](https://github.com/chronotope/chrono/issues/1505)) - Slightly improve serde documentation ([#&#8203;1519](https://github.com/chronotope/chrono/issues/1519)) - Main documentation: simplify links and reflow text ([#&#8203;1535](https://github.com/chronotope/chrono/issues/1535)) ### Internal - CI: Lint benchmarks ([#&#8203;1489](https://github.com/chronotope/chrono/issues/1489)) - Remove unnessary `Copy` and `Send` impls ([#&#8203;1492](https://github.com/chronotope/chrono/issues/1492), thanks [@&#8203;erickt](https://github.com/erickt)) - Backport streamlined `NaiveDate` unit tests ([#&#8203;1500](https://github.com/chronotope/chrono/issues/1500), thanks [@&#8203;Zomtir](https://github.com/Zomtir)) - Rename `LocalResult` to `TzResolution`, add alias ([#&#8203;1501](https://github.com/chronotope/chrono/issues/1501)) - Update windows-bindgen to 0.55 ([#&#8203;1504](https://github.com/chronotope/chrono/issues/1504)) - Avoid duplicate imports, which generate warnings on nightly ([#&#8203;1507](https://github.com/chronotope/chrono/issues/1507)) - Add extra debug assertions to `NaiveDate::from_yof` ([#&#8203;1518](https://github.com/chronotope/chrono/issues/1518)) - Some small simplifications to `DateTime::date_naive` and `NaiveDate::diff_months` ([#&#8203;1530](https://github.com/chronotope/chrono/issues/1530)) - Remove `unwrap` in Unix `Local` type ([#&#8203;1533](https://github.com/chronotope/chrono/issues/1533)) - Use different method to ignore feature-dependent doctests ([#&#8203;1534](https://github.com/chronotope/chrono/issues/1534)) Thanks to all contributors on behalf of the chrono team, [@&#8203;djc](https://github.com/djc) and [@&#8203;pitdicker](https://github.com/pitdicker)! ### [`v0.4.35`](https://github.com/chronotope/chrono/releases/tag/v0.4.35) [Compare Source](https://github.com/chronotope/chrono/compare/v0.4.34...v0.4.35) 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. The `NaiveDateTime` type 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 the `DateTime<Utc>` type, or from the `TimeZone` trait. Converting from `NaiveDateTime` to `DateTime<Utc>` is simple with `.and_utc()`, and in the other direction with `.naive_utc()`. - The panicking constructors of `TimeDelta` (the new name of the `Duration` type) 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 `NaiveDate` now includes a niche. So now `Option<NaiveDate>`, `Option<NaiveDateTime>` and `Option<DateTime<Tz>>` are the same size as their base types. - `format::Numeric` and `format::Fixed` are marked as `non_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 - Add `DateTime::{from_timestamp_micros, from_timestamp_nanos}` ([#&#8203;1234](https://github.com/chronotope/chrono/issues/1234)) - Add getters to `Parsed` ([#&#8203;1465](https://github.com/chronotope/chrono/issues/1465)) ### Deprecations - Deprecate timestamp methods on `NaiveDateTime` ([#&#8203;1473](https://github.com/chronotope/chrono/issues/1473)) - Deprecate panicking constructors of `TimeDelta` ([#&#8203;1450](https://github.com/chronotope/chrono/issues/1450)) ### Changes/fixes - Use `NonZeroI32` inside `NaiveDate` ([#&#8203;1207](https://github.com/chronotope/chrono/issues/1207)) - Mark `format::Numeric` and `format::Fixed` as `non_exhaustive` ([#&#8203;1430](https://github.com/chronotope/chrono/issues/1430)) - `Parsed` fixes to error values ([#&#8203;1439](https://github.com/chronotope/chrono/issues/1439)) - Use `overflowing_naive_local` in `DateTime::checked_add*` ([#&#8203;1333](https://github.com/chronotope/chrono/issues/1333)) - Do complete range checks in `Parsed::set_*` ([#&#8203;1465](https://github.com/chronotope/chrono/issues/1465)) ### Documentation - Rustfmt doctests ([#&#8203;1452](https://github.com/chronotope/chrono/issues/1452)) - Improve docs for crate features ([#&#8203;1455](https://github.com/chronotope/chrono/issues/1455), thanks [@&#8203;edmorley](https://github.com/edmorley)) - Add more documentation and examples to `Parsed` ([#&#8203;1439](https://github.com/chronotope/chrono/issues/1439)) ### Internal - Refactor `internals` module ([#&#8203;1428](https://github.com/chronotope/chrono/issues/1428), [#&#8203;1429](https://github.com/chronotope/chrono/issues/1429), [#&#8203;1431](https://github.com/chronotope/chrono/issues/1431), [#&#8203;1432](https://github.com/chronotope/chrono/issues/1432), [#&#8203;1433](https://github.com/chronotope/chrono/issues/1433), [#&#8203;1438](https://github.com/chronotope/chrono/issues/1438)) - CI: test cross-compiling to `x86_64-unknown-illumos` instead of Solaris ([#&#8203;1437](https://github.com/chronotope/chrono/issues/1437)) - CI: lint Windows target, fix clippy warning ([#&#8203;1441](https://github.com/chronotope/chrono/issues/1441)) - CI: only run `cargo hack check` on Linux ([#&#8203;1442](https://github.com/chronotope/chrono/issues/1442)) - Update windows-bindgen to 0.54 ([#&#8203;1462](https://github.com/chronotope/chrono/issues/1462), [#&#8203;1483](https://github.com/chronotope/chrono/issues/1483)) - Simplify error value of `parse_internal` ([#&#8203;1459](https://github.com/chronotope/chrono/issues/1459)) - Simplify `SerdeError` ([#&#8203;1458](https://github.com/chronotope/chrono/issues/1458)) - Simplify `NaiveDate::from_isoywd` a bit ([#&#8203;1464](https://github.com/chronotope/chrono/issues/1464)) Thanks to all contributors on behalf of the chrono team, [@&#8203;djc](https://github.com/djc) and [@&#8203;pitdicker](https://github.com/pitdicker)! ### [`v0.4.34`](https://github.com/chronotope/chrono/releases/tag/v0.4.34) [Compare Source](https://github.com/chronotope/chrono/compare/v0.4.33...v0.4.34) ### Notable changes - In chrono 0.4.34 we finished the work to make all methods const where doing so is supported by rust 1.61. - We renamed the `Duration` type to `TimeDelta`. This removes the confusion between chrono's type and the later `Duration` type in the standard library. It will remain available under the old name as a type alias for compatibility. - The Windows implementation of `Local` is 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. - The `Display` format of `TimeDelta` is 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 - Add missing range check in `TimeDelta::milliseconds` ([#&#8203;1385](https://github.com/chronotope/chrono/issues/1385), thanks [@&#8203;danwilliams](https://github.com/danwilliams)) - Remove check for `DurationExceedsTimestamp` in `DurationRound` ([#&#8203;1403](https://github.com/chronotope/chrono/issues/1403), thanks [@&#8203;joroKr21](https://github.com/joroKr21)) - Fix localized formatting with `%X` (https://github.com/chronotope/pure-rust-locales/pull/12, [#&#8203;1420](https://github.com/chronotope/chrono/issues/1420)) - Windows: base implementation on `GetTimeZoneInformationForYear` ([#&#8203;1017](https://github.com/chronotope/chrono/issues/1017)) ### Additions - Add `TimeDelta::try_milliseconds` ([#&#8203;1385](https://github.com/chronotope/chrono/issues/1385), thanks [@&#8203;danwilliams](https://github.com/danwilliams)) - Add `TimeDelta::new` ([#&#8203;1337](https://github.com/chronotope/chrono/issues/1337)) - Add `StrftimeItems::{parse, parse_to_owned}` and more documentation ([#&#8203;1184](https://github.com/chronotope/chrono/issues/1184)) - More standard traits and documentation for `format::Locale` (via https://github.com/chronotope/pure-rust-locales/pull/8) ### Changes - Rename `Duration` to `TimeDelta`, add type alias ([#&#8203;1406](https://github.com/chronotope/chrono/issues/1406)) - Make `TimeDelta` methods const ([#&#8203;1337](https://github.com/chronotope/chrono/issues/1337)) - Make remaining methods of `NaiveDate`, `NaiveWeek`, `NaiveTime` and `NaiveDateTime` const where possible ([#&#8203;1337](https://github.com/chronotope/chrono/issues/1337)) - Make methods on `DateTime` const where possible ([#&#8203;1400](https://github.com/chronotope/chrono/issues/1400)) - Make `Display` format of `TimeDelta` conform better to ISO 8601 ([#&#8203;1328](https://github.com/chronotope/chrono/issues/1328)) ### Documentation - Fix the formatting of `timestamp_micros`'s Example doc ([#&#8203;1338](https://github.com/chronotope/chrono/issues/1338) via [#&#8203;1386](https://github.com/chronotope/chrono/issues/1386), thanks [@&#8203;emikitas](https://github.com/emikitas)) - Specify branch for GitHub Actions badge and fix link ([#&#8203;1388](https://github.com/chronotope/chrono/issues/1388)) - Don't mention some deprecated methods in docs ([#&#8203;1395](https://github.com/chronotope/chrono/issues/1395)) - Remove stray documentation from main ([#&#8203;1397](https://github.com/chronotope/chrono/issues/1397)) - Improved documentation of `TimeDelta` constructors ([#&#8203;1385](https://github.com/chronotope/chrono/issues/1385), thanks [@&#8203;danwilliams](https://github.com/danwilliams)) ### Internal - Switch branch names: 0.4.x releases are the `main` branch, work on 0.5 happens in the `0.5.x` branch ([#&#8203;1390](https://github.com/chronotope/chrono/issues/1390), [#&#8203;1402](https://github.com/chronotope/chrono/issues/1402)). - Don't use deprecated method in `impl Arbitrary for DateTime` and set up CI test ([#&#8203;1336](https://github.com/chronotope/chrono/issues/1336)) - Remove workaround for Rust < 1.61 ([#&#8203;1393](https://github.com/chronotope/chrono/issues/1393)) - Bump `codecov/codecov-action` from 3 to 4 ([#&#8203;1404](https://github.com/chronotope/chrono/issues/1404)) - Remove partial support for handling `-0000` offset ([#&#8203;1411](https://github.com/chronotope/chrono/issues/1411)) - Move `TOO_LONG` error out of `parse_internal` ([#&#8203;1419](https://github.com/chronotope/chrono/issues/1419)) Thanks to all contributors on behalf of the chrono team, [@&#8203;djc](https://github.com/djc) and [@&#8203;pitdicker](https://github.com/pitdicker)! ### [`v0.4.33`](https://github.com/chronotope/chrono/releases/tag/v0.4.33) [Compare Source](https://github.com/chronotope/chrono/compare/v0.4.32...v0.4.33) This release fixes the broken docrs.rs build of [chrono 0.4.32](https://github.com/chronotope/chrono/releases/tag/v0.4.32). #### What's Changed - Make `rkyv` feature imply `size_32` ([#&#8203;1383](https://github.com/chronotope/chrono/issues/1383)) - Fixed typo in `Duration::hours()` exception ([#&#8203;1384](https://github.com/chronotope/chrono/issues/1384), thanks [@&#8203;danwilliams](https://github.com/danwilliams)) ### [`v0.4.32`](https://github.com/chronotope/chrono/releases/tag/v0.4.32) [Compare Source](https://github.com/chronotope/chrono/compare/v0.4.31...v0.4.32) In this release we shipped part of the effort to reduce the number of methods that could unexpectedly panic, notably for the `DateTime` and `Duration` types. Chrono internally stores the value of a `DateTime` in UTC, and transparently converts it to the local value as required. For example adding a second to a `DateTime` needs 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 for `Debug` output. In chrono 0.4.32 the range of `NaiveDate`, `NaiveDateTime` and `DateTime` is 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 the `MIN` and `MAX` dates. `Duration` had a similar issue. The range of this type was pretty arbitrary picked to match the range of an `i64` in milliseconds. Negating an `i64::MIN` pushes a value out of range, and in the same way negating `Duration::MIN` could 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::MAX` instead and prevent the panic case. Other highlights: - `Duration` gained new fallible initialization methods. - Better support for `rkyv`. - Most methods on `NaiveDateTime` are now const. - We had to bump our MSRV to 1.61 to keep building with our dependencies. This will also allow us to make more methods on `DateTime` const in a future release. Complete list of changes: #### Fixes - Fix panic in `TimeZone::from_local_datetime` ([#&#8203;1071](https://github.com/chronotope/chrono/issues/1071)) - Fix out of range panics in `DateTime` getters and setters ([#&#8203;1317](https://github.com/chronotope/chrono/issues/1317), [#&#8203;1329](https://github.com/chronotope/chrono/issues/1329)) #### Additions - Add `NaiveDateTime::checked_(add|sub)_offset` ([#&#8203;1313](https://github.com/chronotope/chrono/issues/1313)) - Add `DateTime::to_utc` ([#&#8203;1325](https://github.com/chronotope/chrono/issues/1325)) - Derive `Default` for `Duration` ([#&#8203;1327](https://github.com/chronotope/chrono/issues/1327)) - Add `Duration::subsec_nanos` ([#&#8203;1327](https://github.com/chronotope/chrono/issues/1327)) - Add `try_*` builders to `Duration` ([#&#8203;1327](https://github.com/chronotope/chrono/issues/1327)) - Implement `AddAssign` and `SubAssign` for `Duration` ([#&#8203;1327](https://github.com/chronotope/chrono/issues/1327)) - Make methods on `NaiveDateTime` const where possible ([#&#8203;1286](https://github.com/chronotope/chrono/issues/1286)) - Split `clock` feature into `clock` and `now` ([#&#8203;1343](https://github.com/chronotope/chrono/issues/1343), thanks [@&#8203;mmastrac](https://github.com/mmastrac)) - Add `From<NaiveDate>` for `NaiveDateTime` ([#&#8203;1355](https://github.com/chronotope/chrono/issues/1355), thanks [@&#8203;dcechano](https://github.com/dcechano)) - Add `NaiveDateTime::from_timestamp_nanos` ([#&#8203;1357](https://github.com/chronotope/chrono/issues/1357), thanks [@&#8203;Ali-Mirghasemi](https://github.com/Ali-Mirghasemi)) - Add `Months::num_months()` and `num_years()` ([#&#8203;1373](https://github.com/chronotope/chrono/issues/1373), thanks [@&#8203;danwilliams](https://github.com/danwilliams)) - Add `DateTime<Utc>::from_timestamp_millis` ([#&#8203;1374](https://github.com/chronotope/chrono/issues/1374), thanks [@&#8203;xmakro](https://github.com/xmakro)) #### Changes - Fix panic in `Duration::MIN.abs()` (adjust `Duration::MIN` by 1 millisecond) ([#&#8203;1334](https://github.com/chronotope/chrono/issues/1334)) - Bump MSRV to 1.61 ([#&#8203;1347](https://github.com/chronotope/chrono/issues/1347)) - Update windows-targets requirement from 0.48 to 0.52 ([#&#8203;1360](https://github.com/chronotope/chrono/issues/1360)) - Update windows-bindgen to 0.52 ([#&#8203;1379](https://github.com/chronotope/chrono/issues/1379)) #### Deprecations - Deprecate standalone `format` functions ([#&#8203;1306](https://github.com/chronotope/chrono/issues/1306)) #### Documentation - Improve doc comment and tests for timestamp_nanos_opt ([#&#8203;1299](https://github.com/chronotope/chrono/issues/1299), thanks [@&#8203;mlegner](https://github.com/mlegner)) - Switch to `doc_auto_cfg` ([#&#8203;1305](https://github.com/chronotope/chrono/issues/1305), [#&#8203;1326](https://github.com/chronotope/chrono/issues/1326)) - Document panics in `Add`/`Sub` impls and use `expect` ([#&#8203;1316](https://github.com/chronotope/chrono/issues/1316)) - Improve types listed in top-level documentation ([#&#8203;1274](https://github.com/chronotope/chrono/issues/1274)) - Improve deprecation note of `TimeZone::datetime_from_str` ([#&#8203;1342](https://github.com/chronotope/chrono/issues/1342), thanks [@&#8203;tmccombs](https://github.com/tmccombs)) - Fix typos in `Datelike` impl for `DateTime` ([#&#8203;1376](https://github.com/chronotope/chrono/issues/1376), thanks [@&#8203;ElectrifyPro](https://github.com/ElectrifyPro)) #### Rkyv support - Export `Archived*` types in `rkyv` module ([#&#8203;1304](https://github.com/chronotope/chrono/issues/1304)) - Duplicate derives on `Archived*` types ([#&#8203;1271](https://github.com/chronotope/chrono/issues/1271), thanks [@&#8203;Awpteamoose](https://github.com/Awpteamoose)) - Archive derive of PartialEq for rkyv ([#&#8203;959](https://github.com/chronotope/chrono/issues/959), thanks [@&#8203;mkatychev](https://github.com/mkatychev)) - Expose rkyv features as features for chrono users ([#&#8203;1368](https://github.com/chronotope/chrono/issues/1368), thanks [@&#8203;gz](https://github.com/gz)) #### Changes to unstable features - Don't let `unstable-locales` imply the `alloc` feature ([#&#8203;1307](https://github.com/chronotope/chrono/issues/1307)) - Remove `format::{format_localized, format_item_localized}` ([#&#8203;1311](https://github.com/chronotope/chrono/issues/1311)) - Inline `write_rfc2822_inner`, don't localize ([#&#8203;1322](https://github.com/chronotope/chrono/issues/1322)) #### Internal - Add benchmark for `DateTime::with_*` ([#&#8203;1309](https://github.com/chronotope/chrono/issues/1309)) - Fix `*_DAYS_FROM_YEAR_0` calculation ([#&#8203;1312](https://github.com/chronotope/chrono/issues/1312)) - Add `NaiveTime::overflowing_(add|sub)_offset` ([#&#8203;1310](https://github.com/chronotope/chrono/issues/1310)) - Rewrite `DateTime::overflowing_(add|sub)_offset` ([#&#8203;1069](https://github.com/chronotope/chrono/issues/1069)) - Tests calling date command `set env LC_ALL` ([#&#8203;1315](https://github.com/chronotope/chrono/issues/1315), thanks [@&#8203;jtmoon79](https://github.com/jtmoon79)) - Update `deny.toml` ([#&#8203;1320](https://github.com/chronotope/chrono/issues/1320)) - Bump actions/setup-node from 3 to 4 ([#&#8203;1346](https://github.com/chronotope/chrono/issues/1346)) - test.yml remove errant `with: node-version` ([#&#8203;1352](https://github.com/chronotope/chrono/issues/1352), thanks [@&#8203;jtmoon79](https://github.com/jtmoon79)) - CI Linting: Fix missing sources checkout in `toml` job ([#&#8203;1371](https://github.com/chronotope/chrono/issues/1371), thanks [@&#8203;gibbz00](https://github.com/gibbz00)) - Silence clippy lint for test code with Rust 1.74.0 ([#&#8203;1362](https://github.com/chronotope/chrono/issues/1362)) Thanks to all contributors on behalf of the chrono team, [@&#8203;djc](https://github.com/djc) and [@&#8203;pitdicker](https://github.com/pitdicker)! ### [`v0.4.31`](https://github.com/chronotope/chrono/releases/tag/v0.4.31) [Compare Source](https://github.com/chronotope/chrono/compare/v0.4.30...v0.4.31) Another maintenance release. It was not a planned effort to improve our support for UNIX timestamps, yet most PRs seem related to this. ##### Deprecations - Deprecate `timestamp_nanos` in favor of the non-panicking `timestamp_nanos_opt` ([#&#8203;1275](https://github.com/chronotope/chrono/issues/1275)) ##### Additions - Add `DateTime::<Utc>::from_timestamp` ([#&#8203;1279](https://github.com/chronotope/chrono/issues/1279), thanks [@&#8203;demurgos](https://github.com/demurgos)) - Add `TimeZone::timestamp_micros` ([#&#8203;1285](https://github.com/chronotope/chrono/issues/1285), thanks [@&#8203;emikitas](https://github.com/emikitas)) - Add `DateTime<Tz>::timestamp_nanos_opt` and `NaiveDateTime::timestamp_nanos_opt` ([#&#8203;1275](https://github.com/chronotope/chrono/issues/1275)) - Add `UNIX_EPOCH` constants ([#&#8203;1291](https://github.com/chronotope/chrono/issues/1291)) ##### Fixes - Format day of month in RFC 2822 without padding ([#&#8203;1272](https://github.com/chronotope/chrono/issues/1272)) - Don't allow strange leap seconds which are not on a minute boundary initialization methods ([#&#8203;1283](https://github.com/chronotope/chrono/issues/1283)) This makes many methods a little more strict: - `NaiveTime::from_hms_milli` - `NaiveTime::from_hms_milli_opt` - `NaiveTime::from_hms_micro` - `NaiveTime::from_hms_micro_opt` - `NaiveTime::from_hms_nano` - `NaiveTime::from_hms_nano_opt` - `NaiveTime::from_num_seconds_from_midnight` - `NaiveTime::from_num_seconds_from_midnight_opt` - `NaiveDate::and_hms_milli` - `NaiveDate::and_hms_milli_opt` - `NaiveDate::and_hms_micro` - `NaiveDate::and_hms_micro_opt` - `NaiveDate::and_hms_nano` - `NaiveDate::and_hms_nano_opt` - `NaiveDateTime::from_timestamp` - `NaiveDateTime::from_timestamp_opt` - `TimeZone::timestamp` - `TimeZone::timestamp_opt` - Fix underflow in `NaiveDateTime::timestamp_nanos_opt` ([#&#8203;1294](https://github.com/chronotope/chrono/issues/1294), thanks [@&#8203;crepererum](https://github.com/crepererum)) ##### Documentation - Add more documentation about the RFC 2822 obsolete date format ([#&#8203;1267](https://github.com/chronotope/chrono/issues/1267)) ##### Internal - Remove internal `__doctest` feature and `doc_comment` dependency ([#&#8203;1276](https://github.com/chronotope/chrono/issues/1276)) - CI: Bump `actions/checkout` from 3 to 4 ([#&#8203;1280](https://github.com/chronotope/chrono/issues/1280)) - Optimize `NaiveDate::add_days` for small values ([#&#8203;1214](https://github.com/chronotope/chrono/issues/1214)) - Upgrade `pure-rust-locales` to 0.7.0 ([#&#8203;1288](https://github.com/chronotope/chrono/issues/1288), thanks [@&#8203;jeremija](https://github.com/jeremija) wo did good improvements on `pure-rust-locales`) Thanks to all contributors on behalf of the chrono team, [@&#8203;djc](https://github.com/djc) and [@&#8203;pitdicker](https://github.com/pitdicker)! ### [`v0.4.30`](https://github.com/chronotope/chrono/releases/tag/v0.4.30) [Compare Source](https://github.com/chronotope/chrono/compare/v0.4.29...v0.4.30) In this release, we have decided to swap out the `chrono::Duration` type (which has been a re-export of time 0.1 `Duration` type) with our own definition, which exposes a strict superset of the `time::Duration` API. This helps avoid warnings about the [CVE-2020-26235] and [RUSTSEC-2020-0071] advisories for downstream users and allows us to improve the `Duration` API going forward. 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](https://github.com/chronotope/chrono/pull/1095#issuecomment-1571716955) 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 [#&#8203;1268](https://github.com/chronotope/chrono/issues/1268). ##### Additions - Add `NaiveDate::leap_year` ([#&#8203;1261](https://github.com/chronotope/chrono/issues/1261)) ##### Documentation - Update main documentation from README ([#&#8203;1260](https://github.com/chronotope/chrono/issues/1260), thanks [@&#8203;Stygmates](https://github.com/Stygmates)) - Add history of relation between chrono and time 0.1 to documentation (https://github.com/chronotope/chrono/pull/1264, https://github.com/chronotope/chrono/pull/1266) - Clarify `Timelike::num_seconds_from_midnight` is a simple mapping ([#&#8203;1255](https://github.com/chronotope/chrono/issues/1255)) #### Relation between chrono and time 0.1 Rust first had a `time` module added to `std` in its 0.7 release. It later moved to `libextra`, and then to a `libtime` library 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::Duration` was included as `std::time::Duration` ([rust#&#8203;15934]) in 2014. In preparation of Rust 1.0 at the end of 2014 `libtime` was moved out of the Rust distro and into the `time` crate to eventually be redesigned ([rust#&#8203;18832], [rust#&#8203;18858]), like the `num` and `rand` crates. Of course chrono kept its dependency on this `time` crate. `time` started re-exporting `std::time::Duration` during this period. Later, the standard library was changed to have a more limited unsigned `Duration` type ([rust#&#8203;24920], [RFC 1040]), while the `time` crate kept the full functionality with `time::Duration`. `time::Duration` had been a part of chrono's public API. By 2016 `time` 0.1 lived under the `rust-lang-deprecated` organisation and was not actively maintained ([time#&#8203;136]). chrono absorbed the platform functionality and `Duration` type of the `time` crate in [chrono#&#8203;478] (the work started in [chrono#&#8203;286]). In order to preserve compatibility with downstream crates depending on `time` and `chrono` sharing a `Duration` type, chrono kept depending on time 0.1. chrono offered the option to opt out of the `time` dependency by disabling the `oldtime` feature (swapping it out for an effectively similar chrono type). In 2019, [@&#8203;jhpratt](https://github.com/jhpratt) took over maintenance on the `time` crate and released what amounts to a new crate as `time` 0.2. [rust#&#8203;15934]: https://github.com/rust-lang/rust/pull/15934 [rust#&#8203;18832]: https://github.com/rust-lang/rust/pull/18832#issuecomment-62448221 [rust#&#8203;18858]: https://github.com/rust-lang/rust/pull/18858 [rust#&#8203;24920]: https://github.com/rust-lang/rust/pull/24920 [RFC 1040]: https://rust-lang.github.io/rfcs/1040-duration-reform.html [time#&#8203;136]: https://github.com/time-rs/time/issues/136 [chrono#&#8203;286]: https://github.com/chronotope/chrono/pull/286 [chrono#&#8203;478]: https://github.com/chronotope/chrono/pull/478 ##### Security advisories In November of 2020 [CVE-2020-26235] and [RUSTSEC-2020-0071] were opened against the `time` crate. [@&#8203;quininer](https://github.com/quininer) had found that calls to `localtime_r` may be unsound ([chrono#&#8203;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 to `time`. On Unix-like systems a process is given a timezone id or description via the `TZ` environment 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. `time` 0.1 and chrono used the POSIX function `localtime_r` to do the conversion to local time, which reads the `TZ` variable. 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 `getenv` in libc can't be changed to take a lock because it returns a pointer to the data (see [rust#&#8203;27970] for more discussion). Since version 4.20 chrono no longer uses `localtime_r`, instead using Rust code to query the timezone (from the `TZ` variable or via `iana-time-zone` as a fallback) and work with data from the system timezone database directly. The code for this was forked from the [tz-rs crate] by [@&#8203;x-hgg-x](https://github.com/x-hgg-x). As such, chrono now respects the Rust lock when reading the `TZ` environment variable. In general, code should avoid modifying the environment. [CVE-2020-26235]: https://nvd.nist.gov/vuln/detail/CVE-2020-26235 [RUSTSEC-2020-0071]: https://rustsec.org/advisories/RUSTSEC-2020-0071 [chrono#&#8203;499]: https://github.com/chronotope/chrono/pull/499 [RUSTSEC-2020-0159]: https://rustsec.org/advisories/RUSTSEC-2020-0159.html [rust#&#8203;27970]: https://github.com/rust-lang/rust/issues/27970 [chrono#&#8203;677]: https://github.com/chronotope/chrono/pull/677 [tz-rs crate]: https://crates.io/crates/tz-rs ##### 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::Duration` type, 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#&#8203;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 `Duration` implementation 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. [chrono#&#8203;1095]: https://github.com/chronotope/chrono/pull/1095 Thanks to all contributors on behalf of the chrono team, [@&#8203;djc](https://github.com/djc) and [@&#8203;pitdicker](https://github.com/pitdicker)! ### [`v0.4.29`](https://github.com/chronotope/chrono/releases/tag/v0.4.29) [Compare Source](https://github.com/chronotope/chrono/compare/v0.4.28...v0.4.29) This release fixes a panic introduced in chrono 0.4.27 in `FromStr<DateTime<Utc>>` ([#&#8203;1253](https://github.com/chronotope/chrono/issues/1253)). Chrono now has a [Discord channel](https://discord.gg/sXpav4PS7M). #### Fixes - Fix arbitrary string slicing in `parse_rfc3339_relaxed` ([#&#8203;1254](https://github.com/chronotope/chrono/issues/1254)) #### Deprecations - Deprecate `TimeZone::datetime_from_str` ([#&#8203;1251](https://github.com/chronotope/chrono/issues/1251)) #### Documentation - Correct documentation for `FromStr` for `Weekday` and `Month` ([#&#8203;1226](https://github.com/chronotope/chrono/issues/1226), thanks [@&#8203;wfraser](https://github.com/wfraser)) #### Internal improvements - Revert "add test_issue\_866" ([#&#8203;1238](https://github.com/chronotope/chrono/issues/1238)) - CI: run tests on `i686` and `wasm32-wasi` ([#&#8203;1237](https://github.com/chronotope/chrono/issues/1237)) - CI: Include doctests for code coverage ([#&#8203;1248](https://github.com/chronotope/chrono/issues/1248)) - Move benchmarks to a separate crate ([#&#8203;1243](https://github.com/chronotope/chrono/issues/1243)) This allows us to upgrade the criterion dependency to 5.1 without changing our MSRV. - Add Discord link to README ([#&#8203;1240](https://github.com/chronotope/chrono/issues/1240), backported in [#&#8203;1256](https://github.com/chronotope/chrono/issues/1256)) Thanks to all contributors on behalf of the chrono team, [@&#8203;djc](https://github.com/djc) and [@&#8203;pitdicker](https://github.com/pitdicker)! ### [`v0.4.28`](https://github.com/chronotope/chrono/releases/tag/v0.4.28) [Compare Source](https://github.com/chronotope/chrono/compare/v0.4.27...v0.4.28) 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.27`](https://github.com/chronotope/chrono/releases/tag/v0.4.27) [Compare Source](https://github.com/chronotope/chrono/compare/v0.4.26...v0.4.27) 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 `NaiveDate` and `NaiveTime` are made const, `NaiveDateTime` and others will follow in a later release. The parser for the `%+` formatting specifier and the `RFC3339` formatting 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 by `DateTime::from_str`. If you need to validate the input, consider using `DateTime::from_rfc3339`. #### Deprecations - Deprecate `DateTime::{from_local, from_utc}` (https://github.com/chronotope/chrono/pull/1175) #### Additions - Let `DateTime::signed_duration_since` take argument with `Borrow` (https://github.com/chronotope/chrono/pull/1119) - Implement `PartialOrd` for `Month` (https://github.com/chronotope/chrono/pull/999, thanks [@&#8203;Munksgaard](https://github.com/Munksgaard)) - Add `Ord` and `Eq` for types which already derive `PartialOrd` and `PartialEq` (https://github.com/chronotope/chrono/pull/1128, thanks [@&#8203;totikom](https://github.com/totikom)) - implement `FusedIterator` for `NaiveDateDaysIterator` and `NaiveDateWeeksIterator` (https://github.com/chronotope/chrono/pull/1134) - Make `NaiveDateDaysIterator` and `NaiveDateWeeksIterator` public (https://github.com/chronotope/chrono/pull/1134) - Add `FromStr` for `FixedOffset` (https://github.com/chronotope/chrono/pull/1157, thanks [@&#8203;mcronce](https://github.com/mcronce)) - Remove `Tz::Offset: Display` requirement from `DateTime::to_rfc*` (https://github.com/chronotope/chrono/pull/1160) - More flexible offset formatting (not exposed yet) (https://github.com/chronotope/chrono/pull/1160) - Make `StrftimeItems` with `unstable-locales` work without allocating (https://github.com/chronotope/chrono/pull/1152) - Make `NaiveDate::from_ymd_opt` const (https://github.com/chronotope/chrono/pull/1172, thanks [@&#8203;kamadorueda](https://github.com/kamadorueda)) - Implement `Error` trait for `ParseWeekdayError` and `ParseMonthError` (https://github.com/chronotope/chrono/pull/539, thanks [@&#8203;mike-kfed](https://github.com/mike-kfed)) - Make methods on `NaiveTime` const, update MSRV to 1.57 (https://github.com/chronotope/chrono/pull/1080) - Make methods on `NaiveDate` const (https://github.com/chronotope/chrono/pull/1205) - Implement operations for `core::time::Duration` on `DateTime` types (https://github.com/chronotope/chrono/pull/1229) #### Fixes - Ensure `timestamp_nanos` panics on overflow in release builds (https://github.com/chronotope/chrono/pull/1123) - Fix `offset_from_local_datetime` for `wasm_bindgen` (https://github.com/chronotope/chrono/pull/1131) - Parsing: Consider `%s` to be a timestamp in UTC (https://github.com/chronotope/chrono/pull/1136) - Don't panic when formatting with `%#z` (https://github.com/chronotope/chrono/pull/1140, thanks [@&#8203;domodwyer](https://github.com/domodwyer)) - Parsing: allow MINUS SIGN (U+2212) in offset (https://github.com/chronotope/chrono/pull/1087, thanks [@&#8203;jtmoon79](https://github.com/jtmoon79)) - Fix locale formatting for `%c` and `%r` (https://github.com/chronotope/chrono/pull/1165) - Localize decimal point with `unstable-locales` feature (https://github.com/chronotope/chrono/pull/1168) - Fix panic on macOS 10.12 caused by using version 1 of the TZif file format (https://github.com/chronotope/chrono/pull/1201, thanks to help from [@&#8203;jfro](https://github.com/jfro)) - Fix deserialization of negative timestamps (https://github.com/chronotope/chrono/pull/1194) - Do not use `Offset`'s `Debug` impl when serializing `DateTime` (https://github.com/chronotope/chrono/pull/1035) - Allow missing seconds in `NaiveTime::from_str` (https://github.com/chronotope/chrono/pull/1181) - Do not depend on `android-tzdata` if the `clock` feature is not enabled (https://github.com/chronotope/chrono/pull/1220, thanks [@&#8203;AlexTMjugador](https://github.com/AlexTMjugador)) - Small fixes to the RFC 3339 parsers (https://github.com/chronotope/chrono/pull/1145) #### Documentation - Add "Errors" and "Panics" sections to API docs (https://github.com/chronotope/chrono/pull/1120) - Specify licenses in SPDX format (https://github.com/chronotope/chrono/pull/1132, backport of https://github.com/chronotope/chrono/issues/910, thanks [@&#8203;LingMan](https://github.com/LingMan)) - Fix `NaiveTime` doc typo (https://github.com/chronotope/chrono/pull/1146, thanks [@&#8203;zachs18](https://github.com/zachs18)) - Clarify nanosecond formatting specifier doc (https://github.com/chronotope/chrono/pull/1173) - Add warning against combining multiple `Datelike::with_*` (https://github.com/chronotope/chrono/pull/1199) - Fix typo "accepted" (https://github.com/chronotope/chrono/pull/1209, thanks [@&#8203;simon04](https://github.com/simon04)) - Add some examples to `Utc::now` and `Local::now` (https://github.com/chronotope/chrono/pull/1192) - Add example to `Weekday::num_days_from_monday` (https://github.com/chronotope/chrono/pull/1193) - Fix some comments and panic messages (https://github.com/chronotope/chrono/pull/1221, thanks [@&#8203;umanwizard](https://github.com/umanwizard)) #### Internal improvements - `DateTime::to_rfc_*` optimizations (https://github.com/chronotope/chrono/pull/1200) - Move all tests into modules, fix clippy warnings (https://github.com/chronotope/chrono/pull/1138) - Offset parsing cleanup (https://github.com/chronotope/chrono/pull/1158) - Factor out formatting to `format/formatting.rs` (https://github.com/chronotope/chrono/pull/1156) - Format refactorings (https://github.com/chronotope/chrono/pull/1198) - Format toml files with taplo (https://github.com/chronotope/chrono/pull/1117, thanks [@&#8203;tottoto](https://github.com/tottoto)) - Stop vendoring `saturating_abs` (https://github.com/chronotope/chrono/pull/1124) - CI: shell set -eux, use bash (https://github.com/chronotope/chrono/pull/1103, thanks [@&#8203;jtmoon79](https://github.com/jtmoon79)) - Fix dead code error when running dateutils test on Windows (https://github.com/chronotope/chrono/pull/1125) - Remove `Makefile` (https://github.com/chronotope/chrono/pull/1133) - CI: Test `wasm-bindgen` feature (https://github.com/chronotope/chrono/pull/1131) - Stop using deprecated methods in parse module (https://github.com/chronotope/chrono/pull/1142) - Add formatting benchmarks (https://github.com/chronotope/chrono/pull/1155) - Feature gate tests instead of methods (https://github.com/chronotope/chrono/pull/1159, https://github.com/chronotope/chrono/pull/1162) - Parallelize `try_verify_against_date_command` (https://github.com/chronotope/chrono/pull/1161) - CI: also run integration tests with `no_std` (https://github.com/chronotope/chrono/pull/1166) - Split ` test_parse ` (https://github.com/chronotope/chrono/pull/1170) - Remove `#![deny(dead_code)]` (https://github.com/chronotope/chrono/pull/1187) - Clippy fixes for Rust 1.71 (https://github.com/chronotope/chrono/pull/1186) - Various small improvements (https://github.com/chronotope/chrono/pull/1191) - Add unit test for uncovered regions (https://github.com/chronotope/chrono/pull/1149, thanks [@&#8203;CXWorks](https://github.com/CXWorks)) - Don't test the same thing twice in `test_date_extreme_offset` (https://github.com/chronotope/chrono/pull/1195) - CI: Add workflow code coverage report and upload (https://github.com/chronotope/chrono/pull/1178, https://github.com/chronotope/chrono/pull/1215, thanks [@&#8203;jtmoon79](https://github.com/jtmoon79)) - CI: fail on warnings in `features-check` (https://github.com/chronotope/chrono/pull/1216) - Switch to windows-bindgen (https://github.com/chronotope/chrono/pull/1202, thanks to help from [@&#8203;MarijnS95](https://github.com/MarijnS95)) Thanks to all contributors on behalf of the chrono team, [@&#8203;djc](https://github.com/djc) and [@&#8203;pitdicker](https://github.com/pitdicker)! ### [`v0.4.26`](https://github.com/chronotope/chrono/releases/tag/v0.4.26) [Compare Source](https://github.com/chronotope/chrono/compare/v0.4.25...v0.4.26) The changes from [#&#8203;807](https://github.com/chronotope/chrono/issues/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 [#&#8203;1113](https://github.com/chronotope/chrono/issues/1113). A small amount of other changes were merged since. - Update README ([#&#8203;1111](https://github.com/chronotope/chrono/issues/1111), thanks to [@&#8203;pitdicker](https://github.com/pitdicker)) - Revert backport of [#&#8203;807](https://github.com/chronotope/chrono/issues/807) ([#&#8203;1113](https://github.com/chronotope/chrono/issues/1113), thanks to [@&#8203;pitdicker](https://github.com/pitdicker)) - Update to 2021 edition ([#&#8203;1109](https://github.com/chronotope/chrono/issues/1109), thanks to [@&#8203;tottoto](https://github.com/tottoto)) - Fix `DurationRound` panics from issue [#&#8203;1010](https://github.com/chronotope/chrono/issues/1010) ([#&#8203;1093](https://github.com/chronotope/chrono/issues/1093), thanks to [@&#8203;pitdicker](https://github.com/pitdicker)) - tests: date path consolidate (branch 0.4.x) ([#&#8203;1090](https://github.com/chronotope/chrono/issues/1090), thanks to [@&#8203;jtmoon79](https://github.com/jtmoon79)) - Parse tests nanosecond bare dot (branch 0.4.x) ([#&#8203;1098](https://github.com/chronotope/chrono/issues/1098), thanks to [@&#8203;jtmoon79](https://github.com/jtmoon79)) - yamllint cleanup lint.yml test.yml ([#&#8203;1102](https://github.com/chronotope/chrono/issues/1102), thanks to [@&#8203;jtmoon79](https://github.com/jtmoon79)) - Remove num-iter dependency ([#&#8203;1107](https://github.com/chronotope/chrono/issues/1107), thanks to [@&#8203;tottoto](https://github.com/tottoto)) Thanks on behalf of the chrono team ([@&#8203;djc](https://github.com/djc) and [@&#8203;esheppa](https://github.com/esheppa)) to all contributors! ### [`v0.4.25`](https://github.com/chronotope/chrono/releases/tag/v0.4.25): 0.4.25 [Compare Source](https://github.com/chronotope/chrono/compare/v0.4.24...v0.4.25) 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 - Bump the MSRV to 1.56 ([#&#8203;1053](https://github.com/chronotope/chrono/issues/1053)) - Apply comments from MSRV bump ([#&#8203;1026](https://github.com/chronotope/chrono/issues/1026), thanks to [@&#8203;pitdicker](https://github.com/pitdicker)) - Remove num-integer dependency ([#&#8203;1037](https://github.com/chronotope/chrono/issues/1037), thanks to [@&#8203;pitdicker](https://github.com/pitdicker)) - Add `NaiveDateTime::and_utc()` method ([#&#8203;952](https://github.com/chronotope/chrono/issues/952), thanks to [@&#8203;klnusbaum](https://github.com/klnusbaum)) - derive `Hash` for most pub types that also derive `PartialEq` ([#&#8203;938](https://github.com/chronotope/chrono/issues/938), thanks to [@&#8203;bruceg](https://github.com/bruceg)) - Add `parse_and_remainder()` methods ([#&#8203;1011](https://github.com/chronotope/chrono/issues/1011), thanks to [@&#8203;pitdicker](https://github.com/pitdicker)) - Add `DateTime::fix_offset()` ([#&#8203;1030](https://github.com/chronotope/chrono/issues/1030), thanks to [@&#8203;pitdicker](https://github.com/pitdicker)) - Add `#[track_caller]` to `LocalResult::unwrap` ([#&#8203;1046](https://github.com/chronotope/chrono/issues/1046), thanks to [@&#8203;pitdicker](https://github.com/pitdicker)) - Add `#[must_use]` to some methods ([#&#8203;1007](https://github.com/chronotope/chrono/issues/1007), thanks to [@&#8203;aceArt-GmbH](https://github.com/aceArt-GmbH)) - Implement `PartialOrd` for `Month` ([#&#8203;999](https://github.com/chronotope/chrono/issues/999), thanks to [@&#8203;Munksgaard](https://github.com/Munksgaard)) - Add `impl From<NaiveDateTime> for NaiveDate` ([#&#8203;1012](https://github.com/chronotope/chrono/issues/1012), thanks to [@&#8203;pezcore](https://github.com/pezcore)) - Extract timezone info from tzdata file on Android ([#&#8203;978](https://github.com/chronotope/chrono/issues/978), thanks to [@&#8203;RumovZ](https://github.com/RumovZ)) #### Fixes - Prevent string slicing inside char boundaries ([#&#8203;1024](https://github.com/chronotope/chrono/issues/1024), thanks to [@&#8203;pitdicker](https://github.com/pitdicker)) - fix IsoWeek so that its flags are always correct ([#&#8203;991](https://github.com/chronotope/chrono/issues/991), thanks to [@&#8203;moshevds](https://github.com/moshevds)) - Fix out-of-range panic in `NaiveWeek::last_day` ([#&#8203;1070](https://github.com/chronotope/chrono/issues/1070), thanks to [@&#8203;pitdicker](https://github.com/pitdicker)) - Use correct offset in conversion from `Local` to `FixedOffset` ([#&#8203;1041](https://github.com/chronotope/chrono/issues/1041), thanks to [@&#8203;pitdicker](https://github.com/pitdicker)) - Fix military timezones in RFC 2822 parsing ([#&#8203;1013](https://github.com/chronotope/chrono/issues/1013), thanks to [@&#8203;pitdicker](https://github.com/pitdicker)) - Guard against overflow in NaiveDate::with_\*0 methods ([#&#8203;1023](https://github.com/chronotope/chrono/issues/1023), thanks to [@&#8203;pitdicker](https://github.com/pitdicker)) - Fix panic in from_num_days_from_ce_opt ([#&#8203;1052](https://github.com/chronotope/chrono/issues/1052), thanks to [@&#8203;pitdicker](https://github.com/pitdicker)) #### Refactoring - Rely on std for getting local time offset ([#&#8203;1072](https://github.com/chronotope/chrono/issues/1072), thanks to [@&#8203;pitdicker](https://github.com/pitdicker)) - Make functions in internals const ([#&#8203;1043](https://github.com/chronotope/chrono/issues/1043), thanks to [@&#8203;pitdicker](https://github.com/pitdicker)) - Refactor windows module in `Local` ([#&#8203;992](https://github.com/chronotope/chrono/issues/992), thanks to [@&#8203;nekevss](https://github.com/nekevss)) - Simplify from_timestamp_millis, from_timestamp_micros ([#&#8203;1032](https://github.com/chronotope/chrono/issues/1032), thanks to [@&#8203;pitdicker](https://github.com/pitdicker)) - Backport [#&#8203;983](https://github.com/chronotope/chrono/issues/983) and [#&#8203;1000](https://github.com/chronotope/chrono/issues/1000) ([#&#8203;1063](https://github.com/chronotope/chrono/issues/1063), thanks to [@&#8203;pitdicker](https://github.com/pitdicker)) #### Documentation - Backport documentation improvements ([#&#8203;1066](https://github.com/chronotope/chrono/issues/1066), thanks to [@&#8203;pitdicker](https://github.com/pitdicker)) - Add documentation for %Z quirk ([#&#8203;1051](https://github.com/chronotope/chrono/issues/1051), thanks to [@&#8203;campbellcole](https://github.com/campbellcole)) - Add an example to Weekday ([#&#8203;1019](https://github.com/chronotope/chrono/issues/1019), thanks to [@&#8203;pitdicker](https://github.com/pitdicker)) #### Internal improvements - Gate test on `clock` feature ([#&#8203;1061](https://github.com/chronotope/chrono/issues/1061), thanks to [@&#8203;pitdicker](https://github.com/pitdicker)) - CI: Also run tests with `--no-default-features` ([#&#8203;1059](https://github.com/chronotope/chrono/issues/1059), thanks to [@&#8203;pitdicker](https://github.com/pitdicker)) - Prevent `bench_year_flags_from_year` from being optimized out ([#&#8203;1034](https://github.com/chronotope/chrono/issues/1034), thanks to [@&#8203;pitdicker](https://github.com/pitdicker)) - Fix test_leap_second during DST transition ([#&#8203;1064](https://github.com/chronotope/chrono/issues/1064), thanks to [@&#8203;pitdicker](https://github.com/pitdicker)) - Fix warnings when running tests on Windows ([#&#8203;1038](https://github.com/chronotope/chrono/issues/1038), thanks to [@&#8203;pitdicker](https://github.com/pitdicker)) - Fix tests on AIX ([#&#8203;1028](https://github.com/chronotope/chrono/issues/1028), thanks to [@&#8203;ecnelises](https://github.com/ecnelises)) - Fix doctest warnings, remove mention of deprecated methods from main doc ([#&#8203;1081](https://github.com/chronotope/chrono/issues/1081), thanks to [@&#8203;pitdicker](https://github.com/pitdicker)) - Reformat `test_datetime_parse_from_str` ([#&#8203;1078](https://github.com/chronotope/chrono/issues/1078), thanks to [@&#8203;pitdicker](https://github.com/pitdicker)) - GitHub yml shell `set -eux`, use bash ([#&#8203;1103](https://github.com/chronotope/chrono/issues/1103), thanks to [@&#8203;jtmoon79](https://github.com/jtmoon79)) - test: explicitly set `LANG` to `c` in gnu `date` ([#&#8203;1089](https://github.com/chronotope/chrono/issues/1089), thanks to [@&#8203;scarf005](https://github.com/scarf005)) - Switch test to `TryFrom` ([#&#8203;1086](https://github.com/chronotope/chrono/issues/1086), thanks to [@&#8203;pitdicker](https://github.com/pitdicker)) - Add test for issue 551 ([#&#8203;1020](https://github.com/chronotope/chrono/issues/1020), thanks to [@&#8203;pitdicker](https://github.com/pitdicker)) - RFC 2822 single-letter obsolete tests ([#&#8203;1014](https://github.com/chronotope/chrono/issues/1014), thanks to [@&#8203;jtmoon79](https://github.com/jtmoon79)) - \[CI] Lint Windows target and documentation links ([#&#8203;1062](https://github.com/chronotope/chrono/issues/1062), thanks to [@&#8203;pitdicker](https://github.com/pitdicker)) - add test_issue\_866 ([#&#8203;1077](https://github.com/chronotope/chrono/issues/1077), thanks to [@&#8203;jtmoon79](https://github.com/jtmoon79)) - Remove AUTHORS metadata ([#&#8203;1074](https://github.com/chronotope/chrono/issues/1074)) On behalf of [@&#8203;djc](https://github.com/djc) and [@&#8203;esheppa](https://github.com/esheppa), thanks to all contributors! ### [`v0.4.24`](https://github.com/chronotope/chrono/releases/tag/v0.4.24): 0.4.24 [Compare Source](https://github.com/chronotope/chrono/compare/v0.4.23...v0.4.24) This is a small maintenance release with accumulated fixes and improvements. - Fix doc on `Days::new()` to refer to days, not months ([#&#8203;874](https://github.com/chronotope/chrono/issues/874), thanks to [@&#8203;brotskydotcom](https://github.com/brotskydotcom)) - Clarify out of range value for `from_timestamp_opt()` ([#&#8203;879](https://github.com/chronotope/chrono/issues/879), thanks to [@&#8203;xmo-odoo](https://github.com/xmo-odoo)) - Add `format_localized()` for `NaiveDate` ([#&#8203;881](https://github.com/chronotope/chrono/issues/881), thanks to [@&#8203;mseele](https://github.com/mseele)) - Fix bug in `Add`/`Sub` `Days`, add tests with DST timezone ([#&#8203;878](https://github.com/chronotope/chrono/issues/878)) - Make `NaiveTime::MIN` public ([#&#8203;890](https://github.com/chronotope/chrono/issues/890)) - Fix `from_timestamp_millis()` implementation and add more tests ([#&#8203;885](https://github.com/chronotope/chrono/issues/885)) - Fix typo in docstrings ([#&#8203;897](https://github.com/chronotope/chrono/issues/897), thanks to [@&#8203;dandxy89](https://github.com/dandxy89)) - Add test proving that [#&#8203;903](https://github.com/chronotope/chrono/issues/903) is fixed in 0.4.x head ([#&#8203;905](https://github.com/chronotope/chrono/issues/905), thanks to [@&#8203;umanwizard](https://github.com/umanwizard)) - Add `from_timestamp_micros()` function ([#&#8203;906](https://github.com/chronotope/chrono/issues/906), thanks to [@&#8203;umanwizard](https://github.com/umanwizard)) - Check cargo-deny in CI ([#&#8203;909](https://github.com/chronotope/chrono/issues/909)) - Derive `Hash` for most pub types that also derive `PartialEq` ([#&#8203;938](https://github.com/chronotope/chrono/issues/938), thanks to [@&#8203;bruceg](https://github.com/bruceg)) - Update deprecated methods in `from_utc()` example ([#&#8203;939](https://github.com/chronotope/chrono/issues/939), thanks to [@&#8203;greg-el](https://github.com/greg-el)) - Fix panic in `DateTime::checked_add_days()` ([#&#8203;942](https://github.com/chronotope/chrono/issues/942), thanks to [@&#8203;Ekleog](https://github.com/Ekleog)) - More documentation for dates before 1 BCE or after 9999 CE ([#&#8203;950](https://github.com/chronotope/chrono/issues/950), thanks to [@&#8203;cgit](https://github.com/cgit)) - Improve `FixedOffset` docs ([#&#8203;953](https://github.com/chronotope/chrono/issues/953), thanks to [@&#8203;klnusbaum](https://github.com/klnusbaum)) - Add chrono-fuzz to CI and update its libfuzzer-sys dependency ([#&#8203;968](https://github.com/chronotope/chrono/issues/968), thanks to [@&#8203;LingMan](https://github.com/LingMan)) - Fixes to parsing and calculation of week numbers ([#&#8203;966](https://github.com/chronotope/chrono/issues/966), thanks to [@&#8203;raphaelroosz](https://github.com/raphaelroosz)) - Make iana-time-zone a target specific dependency ([#&#8203;980](https://github.com/chronotope/chrono/issues/980), thanks to [@&#8203;krtab](https://github.com/krtab)) - Make eligible functions `const` ([#&#8203;984](https://github.com/chronotope/chrono/issues/984), thanks to [@&#8203;tormeh](https://github.com/tormeh)) Thanks to all contributors from the chrono team, [@&#8203;esheppa](https://github.com/esheppa) and [@&#8203;djc](https://github.com/djc). </details> <details> <summary>iamcodemaker/console_log</summary> ### [`v1.0.0`](https://github.com/iamcodemaker/console_log/releases/tag/1.0.0) [Compare Source](https://github.com/iamcodemaker/console_log/compare/0.2.2...1.0.0) This is a re-release of [v0.2.2](https://github.com/iamcodemaker/console_log/releases/tag/0.2.2). There have been no major code changes for over two years. Let's call it stable. 🎉 **Full Changelog**: https://github.com/iamcodemaker/console_log/compare/0.2.2...1.0.0 ### [`v0.2.2`](https://github.com/iamcodemaker/console_log/releases/tag/0.2.2) #### What's Changed - remove trailing semicolon from macro by [@&#8203;escobar-west](https://github.com/escobar-west) in https://github.com/iamcodemaker/console_log/pull/12 #### New Contributors This is the first time generating release notes, so not all of these contributions are in this release. I still wanted to recognize the contributions. - [@&#8203;azriel91](https://github.com/azriel91) made their first contribution in https://github.com/iamcodemaker/console_log/pull/6 - [@&#8203;neurosie](https://github.com/neurosie) made their first contribution in https://github.com/iamcodemaker/console_log/pull/7 - [@&#8203;dependabot-preview](https://github.com/dependabot-preview) made their first contribution in https://github.com/iamcodemaker/console_log/pull/8 - [@&#8203;chidea](https://github.com/chidea) made their first contribution in https://github.com/iamcodemaker/console_log/pull/10 - [@&#8203;escobar-west](https://github.com/escobar-west) made their first contribution in https://github.com/iamcodemaker/console_log/pull/12 **Full Changelog**: https://github.com/iamcodemaker/console_log/commits/0.2.2 </details> <details> <summary>graphql-rust/graphql-client</summary> ### [`v0.14.0`](https://github.com/graphql-rust/graphql-client/blob/HEAD/CHANGELOG.md#&#8203;0140---2024-03-26) [Compare Source](https://github.com/graphql-rust/graphql-client/compare/0.13.0...0.14.0) - Add support for GraphQL’s `extend type` directive - Add support for `graphqls://` schema - Expose `generate_module_token_stream_from_string` to allow custom macro wrappers </details> <details> <summary>serde-rs/json</summary> ### [`v1.0.115`](https://github.com/serde-rs/json/releases/tag/v1.0.115) [Compare Source](https://github.com/serde-rs/json/compare/v1.0.114...v1.0.115) - Documentation improvements ### [`v1.0.114`](https://github.com/serde-rs/json/releases/tag/v1.0.114) [Compare Source](https://github.com/serde-rs/json/compare/v1.0.113...v1.0.114) - Fix unused_imports warnings when compiled by rustc 1.78 ### [`v1.0.113`](https://github.com/serde-rs/json/releases/tag/v1.0.113) [Compare Source](https://github.com/serde-rs/json/compare/v1.0.112...v1.0.113) - Add `swap_remove` and `shift_remove` methods on Map ([#&#8203;1109](https://github.com/serde-rs/json/issues/1109)) ### [`v1.0.112`](https://github.com/serde-rs/json/releases/tag/v1.0.112) [Compare Source](https://github.com/serde-rs/json/compare/v1.0.111...v1.0.112) - Improve formatting of "invalid type" error messages involving floats ([#&#8203;1107](https://github.com/serde-rs/json/issues/1107)) ### [`v1.0.111`](https://github.com/serde-rs/json/releases/tag/v1.0.111) [Compare Source](https://github.com/serde-rs/json/compare/v1.0.110...v1.0.111) - Improve floating point parsing performance on loongarch64 ([#&#8203;1100](https://github.com/serde-rs/json/issues/1100), thanks [@&#8203;heiher](https://github.com/heiher)) ### [`v1.0.110`](https://github.com/serde-rs/json/releases/tag/v1.0.110) [Compare Source](https://github.com/serde-rs/json/compare/v1.0.109...v1.0.110) - Update proc-macro2 to fix caching issue when using a rustc-wrapper such as sccache ### [`v1.0.109`](https://github.com/serde-rs/json/releases/tag/v1.0.109) [Compare Source](https://github.com/serde-rs/json/compare/v1.0.108...v1.0.109) - Documentation improvements ### [`v1.0.108`](https://github.com/serde-rs/json/releases/tag/v1.0.108) [Compare Source](https://github.com/serde-rs/json/compare/v1.0.107...v1.0.108) - Documentation improvements ([#&#8203;1075](https://github.com/serde-rs/json/issues/1075), [#&#8203;1081](https://github.com/serde-rs/json/issues/1081), [#&#8203;1082](https://github.com/serde-rs/json/issues/1082), thanks [@&#8203;dimo414](https://github.com/dimo414) and [@&#8203;fritzrehde](https://github.com/fritzrehde)) ### [`v1.0.107`](https://github.com/serde-rs/json/releases/tag/v1.0.107) [Compare Source](https://github.com/serde-rs/json/compare/v1.0.106...v1.0.107) - impl IntoDeserializer for \&RawValue ([#&#8203;1071](https://github.com/serde-rs/json/issues/1071)) ### [`v1.0.106`](https://github.com/serde-rs/json/releases/tag/v1.0.106) [Compare Source](https://github.com/serde-rs/json/compare/v1.0.105...v1.0.106) - Add `Value::as_number` accessor ([#&#8203;1069](https://github.com/serde-rs/json/issues/1069), thanks [@&#8203;chanced](https://github.com/chanced)) - Add `Number::as_str` accessor under "arbitrary_precision" feature ([#&#8203;1067](https://github.com/serde-rs/json/issues/1067), thanks [@&#8203;chanced](https://github.com/chanced)) ### [`v1.0.105`](https://github.com/serde-rs/json/releases/tag/v1.0.105) [Compare Source](https://github.com/serde-rs/json/compare/v1.0.104...v1.0.105) - Support bool in map keys ([#&#8203;1054](https://github.com/serde-rs/json/issues/1054)) ### [`v1.0.104`](https://github.com/serde-rs/json/releases/tag/v1.0.104) [Compare Source](https://github.com/serde-rs/json/compare/v1.0.103...v1.0.104) - Provide IntoDeserializer impl for \&serde_json::Value ([#&#8203;1045](https://github.com/serde-rs/json/issues/1045), thanks [@&#8203;ZetaNumbers](https://github.com/ZetaNumbers)) ### [`v1.0.103`](https://github.com/serde-rs/json/releases/tag/v1.0.103) [Compare Source](https://github.com/serde-rs/json/compare/v1.0.102...v1.0.103) - Documentation improvements ### [`v1.0.102`](https://github.com/serde-rs/json/releases/tag/v1.0.102) [Compare Source](https://github.com/serde-rs/json/compare/v1.0.101...v1.0.102) - Add a way to customize the serialization of byte arrays ([#&#8203;1039](https://github.com/serde-rs/json/issues/1039)) ### [`v1.0.101`](https://github.com/serde-rs/json/releases/tag/v1.0.101) [Compare Source](https://github.com/serde-rs/json/compare/v1.0.100...v1.0.101) - Allow f32 and f64 as keys in maps ([#&#8203;1027](https://github.com/serde-rs/json/issues/1027), thanks [@&#8203;overdrivenpotato](https://github.com/overdrivenpotato)) ### [`v1.0.100`](https://github.com/serde-rs/json/releases/tag/v1.0.100) [Compare Source](https://github.com/serde-rs/json/compare/v1.0.99...v1.0.100) - Support `-Z minimal-versions` ### [`v1.0.99`](https://github.com/serde-rs/json/releases/tag/v1.0.99) [Compare Source](https://github.com/serde-rs/json/compare/v1.0.98...v1.0.99) - Support serializing serde's **option** type in a map key ([#&#8203;1030](https://github.com/serde-rs/json/issues/1030), thanks [@&#8203;LPGhatguy](https://github.com/LPGhatguy)) ### [`v1.0.98`](https://github.com/serde-rs/json/releases/tag/v1.0.98) [Compare Source](https://github.com/serde-rs/json/compare/v1.0.97...v1.0.98) - Update indexmap dependency used by "preserve_order" feature to version 2 ### [`v1.0.97`](https://github.com/serde-rs/json/releases/tag/v1.0.97) [Compare Source](https://github.com/serde-rs/json/compare/v1.0.96...v1.0.97) - Add `io_error_kind()` method to serde_json::Error: `fn io_error_kind(&self) -> Option<std::io::ErrorKind>` ([#&#8203;1026](https://github.com/serde-rs/json/issues/1026)) </details> <details> <summary>tower-rs/tower-http</summary> ### [`v0.5.2`](https://github.com/tower-rs/tower-http/releases/tag/tower-http-0.5.2): v0.5.2 [Compare Source](https://github.com/tower-rs/tower-http/compare/tower-http-0.5.1...tower-http-0.5.2) #### Added: - **compression:** Will now send a `vary: accept-encoding` header on compressed responses ([#&#8203;399]) - **compression:** Support `x-gzip` as equivalent to `gzip` in `accept-encoding` request header ([#&#8203;467]) #### Fixed - **compression:** Skip compression for range requests ([#&#8203;446]) - **compression:** Skip compression for SSE responses by default ([#&#8203;465]) - **cors:** *Actually* keep Vary headers set by the inner service when setting response headers ([#&#8203;473]) - Version 0.5.1 intended to ship this, but the implementation was buggy and didn't actually do anything [#&#8203;399]: https://github.com/tower-rs/tower-http/pull/399 [#&#8203;446]: https://github.com/tower-rs/tower-http/pull/446 [#&#8203;465]: https://github.com/tower-rs/tower-http/pull/465 [#&#8203;467]: https://github.com/tower-rs/tower-http/pull/467 [#&#8203;473]: https://github.com/tower-rs/tower-http/pull/473 ### [`v0.5.1`](https://github.com/tower-rs/tower-http/releases/tag/tower-http-0.5.1): v0.5.1 [Compare Source](https://github.com/tower-rs/tower-http/compare/tower-http-0.5.0...tower-http-0.5.1) - **fs:** Support files precompressed with `zstd` in `ServeFile` - **trace:** Add default generic parameters for `ResponseBody` and `ResponseFuture` ([#&#8203;455]) - **trace:** Add type aliases `HttpMakeClassifier` and `GrpcMakeClassifier` ([#&#8203;455]) #### Fixed - **cors:** Keep Vary headers set by the inner service when setting response headers ([#&#8203;398]) - **fs:** `ServeDir` now no longer redirects from `/directory` to `/directory/` if `append_index_html_on_directories` is disabled ([#&#8203;421]) [#&#8203;398]: https://github.com/tower-rs/tower-http/pull/398 [#&#8203;421]: https://github.com/tower-rs/tower-http/pull/421 [#&#8203;455]: https://github.com/tower-rs/tower-http/pull/455 ### [`v0.5.0`](https://github.com/tower-rs/tower-http/releases/tag/tower-http-0.5.0): v0.5.0 [Compare Source](https://github.com/tower-rs/tower-http/compare/tower-http-0.4.4...tower-http-0.5.0) #### Changed - Bump Minimum Supported Rust Version to 1.66 ([#&#8203;433]) - Update to http-body 1.0 ([#&#8203;348]) - Update to http 1.0 ([#&#8203;348]) - Preserve service error type in RequestDecompression ([#&#8203;368]) #### Fixed - Accepts range headers with ranges where the end of range goes past the end of the document by bumping http-range-header to `0.4` [#&#8203;418]: https://github.com/tower-rs/tower-http/pull/418 [#&#8203;433]: https://github.com/tower-rs/tower-http/pull/433 [#&#8203;348]: https://github.com/tower-rs/tower-http/pull/348 [#&#8203;368]: https://github.com/tower-rs/tower-http/pull/368 ### [`v0.4.4`](https://github.com/tower-rs/tower-http/releases/tag/tower-http-0.4.4): v0.4.4 [Compare Source](https://github.com/tower-rs/tower-http/compare/tower-http-0.4.3...tower-http-0.4.4) - **trace**: Default implementations for trace bodies. ### [`v0.4.3`](https://github.com/tower-rs/tower-http/releases/tag/tower-http-0.4.3): v0.4.3 [Compare Source](https://github.com/tower-rs/tower-http/compare/tower-http-0.4.2...tower-http-0.4.3) #### Fixed - **compression:** Fix accidental breaking change in 0.4.2. ### [`v0.4.2`](https://github.com/tower-rs/tower-http/releases/tag/tower-http-0.4.2): v0.4.2 [Compare Source](https://github.com/tower-rs/tower-http/compare/tower-http-0.4.1...tower-http-0.4.2) #### Added - **cors:** Add support for private network preflights ([#&#8203;373]) - **compression:** Implement `Default` for `DecompressionBody` ([#&#8203;370]) #### Changed - **compression:** Update to async-compression 0.4 ([#&#8203;371]) #### Fixed - **compression:** Override default brotli compression level 11 -> 4 ([#&#8203;356]) - **trace:** Simplify dynamic tracing level application ([#&#8203;380]) - **normalize_path:** Fix path normalization for preceding slashes ([#&#8203;359]) [#&#8203;356]: https://github.com/tower-rs/tower-http/pull/356 [#&#8203;359]: https://github.com/tower-rs/tower-http/pull/359 [#&#8203;370]: https://github.com/tower-rs/tower-http/pull/370 [#&#8203;371]: https://github.com/tower-rs/tower-http/pull/371 [#&#8203;373]: https://github.com/tower-rs/tower-http/pull/373 [#&#8203;380]: https://github.com/tower-rs/tower-http/pull/380 ### [`v0.4.1`](https://github.com/tower-rs/tower-http/releases/tag/tower-http-0.4.1): v0.4.1 [Compare Source](https://github.com/tower-rs/tower-http/compare/tower-http-0.4.0...tower-http-0.4.1) #### Added - **request_id:** Derive `Default` for `MakeRequestUuid` ([#&#8203;335]) - **fs:** Derive `Default` for `ServeFileSystemResponseBody` ([#&#8203;336]) - **compression:** Expose compression quality on the CompressionLayer ([#&#8203;333]) #### Fixed - **compression:** Improve parsing of `Accept-Encoding` request header ([#&#8203;220]) - **normalize_path:** Fix path normalization of index route ([#&#8203;347]) - **decompression:** Enable `multiple_members` for `GzipDecoder` ([#&#8203;354]) [#&#8203;347]: https://github.com/tower-rs/tower-http/pull/347 [#&#8203;333]: https://github.com/tower-rs/tower-http/pull/333 [#&#8203;220]: https://github.com/tower-rs/tower-http/pull/220 [#&#8203;335]: https://github.com/tower-rs/tower-http/pull/335 [#&#8203;336]: https://github.com/tower-rs/tower-http/pull/336 [#&#8203;354]: https://github.com/tower-rs/tower-http/pull/354 ### [`v0.4.0`](https://github.com/tower-rs/tower-http/releases/tag/tower-http-0.4.0): v0.4.0 [Compare Source](https://github.com/tower-rs/tower-http/compare/tower-http-0.3.5...tower-http-0.4.0) #### Added - **decompression:** Add `RequestDecompression` middleware ([#&#8203;282]) - **compression:** Implement `Default` for `CompressionBody` ([#&#8203;323]) - **compression, decompression:** Support zstd (de)compression ([#&#8203;322]) #### Changed - **serve_dir:** `ServeDir` and `ServeFile`'s error types are now `Infallible` and any IO errors will be converted into responses. Use `try_call` to generate error responses manually (BREAKING) ([#&#8203;283]) - **serve_dir:** `ServeDir::fallback` and `ServeDir::not_found_service` now requires the fallback service to use `Infallible` as its error type (BREAKING) ([#&#8203;283]) - **compression, decompression:** Tweak prefered compression encodings ([#&#8203;325]) #### Removed - Removed `RequireAuthorization` in favor of `ValidateRequest` (BREAKING) ([#&#8203;290]) #### Fixed - **serve_dir:** Don't include identity in Content-Encoding header ([#&#8203;317]) - **compression:** Do compress SVGs ([#&#8203;321]) - **serve_dir:** In `ServeDir`, convert `io::ErrorKind::NotADirectory` to `404 Not Found` ([#&#8203;331]) [#&#8203;282]: https://github.com/tower-rs/tower-http/pull/282 [#&#8203;283]: https://github.com/tower-rs/tower-http/pull/283 [#&#8203;290]: https://github.com/tower-rs/tower-http/pull/290 [#&#8203;317]: https://github.com/tower-rs/tower-http/pull/317 [#&#8203;321]: https://github.com/tower-rs/tower-http/pull/321 [#&#8203;322]: https://github.com/tower-rs/tower-http/pull/322 [#&#8203;323]: https://github.com/tower-rs/tower-http/pull/323 [#&#8203;325]: https://github.com/tower-rs/tower-http/pull/325 [#&#8203;331]: https://github.com/tower-rs/tower-http/pull/331 ### [`v0.3.5`](https://github.com/tower-rs/tower-http/releases/tag/tower-http-0.3.5): v0.3.5 [Compare Source](https://github.com/tower-rs/tower-http/compare/tower-http-0.3.4...tower-http-0.3.5) #### Added - Add `NormalizePath` middleware ([#&#8203;275]) - Add `ValidateRequest` middleware ([#&#8203;289]) - Add `RequestBodyTimeout` middleware ([#&#8203;303]) #### Changed - Bump Minimum Supported Rust Version to 1.60 ([#&#8203;299]) #### Fixed - **trace:** Correctly identify gRPC requests in default `on_response` callback ([#&#8203;278]) - **cors:** Panic if a wildcard (`*`) is passed to `AllowOrigin::list`. Use `AllowOrigin::any()` instead ([#&#8203;285]) - **serve_dir:** Call the fallback on non-uft8 request paths ([#&#8203;310]) [#&#8203;275]: https://github.com/tower-rs/tower-http/pull/275 [#&#8203;278]: https://github.com/tower-rs/tower-http/pull/278 [#&#8203;285]: https://github.com/tower-rs/tower-http/pull/285 [#&#8203;289]: https://github.com/tower-rs/tower-http/pull/289 [#&#8203;299]: https://github.com/tower-rs/tower-http/pull/299 [#&#8203;303]: https://github.com/tower-rs/tower-http/pull/303 [#&#8203;310]: https://github.com/tower-rs/tower-http/pull/310 </details> <details> <summary>tokio-rs/tracing</summary> ### [`v0.1.40`](https://github.com/tokio-rs/tracing/releases/tag/tracing-0.1.40): tracing 0.1.40 [Compare Source](https://github.com/tokio-rs/tracing/compare/tracing-0.1.39...tracing-0.1.40) This release fixes a potential stack use-after-free in the `Instrument::into_inner` method. Only uses of this method are affected by this bug. ##### Fixed - Use `mem::ManuallyDrop` instead of `mem::forget` in `Instrument::into_inner` ([#&#8203;2765]) [#&#8203;2765]: https://github.com/tokio-rs/tracing/pull/2765 Thanks to [@&#8203;cramertj](https://github.com/cramertj) and [@&#8203;manishearth](https://github.com/manishearth) for finding and fixing this issue! ### [`v0.1.39`](https://github.com/tokio-rs/tracing/releases/tag/tracing-0.1.39): tracing 0.1.39 [Compare Source](https://github.com/tokio-rs/tracing/compare/tracing-0.1.38...tracing-0.1.39) This release adds several additional features to the `tracing` macros. In addition, it updates the `tracing-core` dependency to [v0.1.32][core-0.1.32] and the `tracing-attributes` dependency to [v0.1.27][attrs-0.1.27]. ##### Added - Allow constant field names in macros ([#&#8203;2617]) - Allow setting event names in macros ([#&#8203;2699]) - **core**: Allow `ValueSet`s of any length ([#&#8203;2508]) ##### Changed - `tracing-attributes`: updated to [0.1.27][attrs-0.1.27] - `tracing-core`: updated to [0.1.32][core-0.1.32] - **attributes**: Bump minimum version of proc-macro2 to 1.0.60 ([#&#8203;2732]) - **attributes**: Generate less dead code for async block return type hint ([#&#8203;2709]) ##### Fixed - Use fully qualified names in macros for items exported from std prelude ([#&#8203;2621], [#&#8203;2757]) - **attributes**: Allow \[`clippy::let_with_type_underscore`] in macro-generated code (\[[#&#8203;2609](https://github.com/tokio-rs/tracing/issues/2609)]) - **attributes**: Allow `unknown_lints` in macro-generated code ([#&#8203;2626]) - **attributes**: Fix a compilation error in `#[instrument]` when the `"log"` feature is enabled ([#&#8203;2599]) ##### Documented - Add `axum-insights` to relevant crates. ([#&#8203;2713]) - Fix link to RAI pattern crate documentation (\[[#&#8203;2612](https://github.com/tokio-rs/tracing/issues/2612)]) - Fix docs typos and warnings ([#&#8203;2581]) - Add `clippy-tracing` to related crates ([#&#8203;2628]) - Add `tracing-cloudwatch` to related crates ([#&#8203;2667]) - Fix deadlink to `tracing-etw` repo ([#&#8203;2602]) [#&#8203;2617]: https://github.com/tokio-rs/tracing/pull/2617 [#&#8203;2699]: https://github.com/tokio-rs/tracing/pull/2699 [#&#8203;2508]: https://github.com/tokio-rs/tracing/pull/2508 [#&#8203;2621]: https://github.com/tokio-rs/tracing/pull/2621 [#&#8203;2713]: https://github.com/tokio-rs/tracing/pull/2713 [#&#8203;2581]: https://github.com/tokio-rs/tracing/pull/2581 [#&#8203;2628]: https://github.com/tokio-rs/tracing/pull/2628 [#&#8203;2667]: https://github.com/tokio-rs/tracing/pull/2667 [#&#8203;2602]: https://github.com/tokio-rs/tracing/pull/2602 [#&#8203;2626]: https://github.com/tokio-rs/tracing/pull/2626 [#&#8203;2757]: https://github.com/tokio-rs/tracing/pull/2757 [#&#8203;2732]: https://github.com/tokio-rs/tracing/pull/2732 [#&#8203;2709]: https://github.com/tokio-rs/tracing/pull/2709 [#&#8203;2599]: https://github.com/tokio-rs/tracing/pull/2599 [`let_with_type_underscore`]: http://rust-lang.github.io/rust-clippy/rust-1.70.0/index.html#let_with_type_underscore [attrs-0.1.27]: https://github.com/tokio-rs/tracing/releases/tag/tracing-attributes-0.1.27 [core-0.1.32]: https://github.com/tokio-rs/tracing/releases/tag/tracing-core-0.1.32 ### [`v0.1.38`](https://github.com/tokio-rs/tracing/releases/tag/tracing-0.1.38): tracing 0.1.38 [Compare Source](https://github.com/tokio-rs/tracing/compare/tracing-0.1.37...tracing-0.1.38) This `tracing` release changes the `Drop` implementation for `Instrumented` `Future`s so that the attached `Span` is entered when dropping the `Future`. This means that events emitted by the `Future`'s `Drop` implementation will now be recorded within its `Span`. It also adds `#[inline]` hints to methods called in the `event!` macro's expansion, for an improvement in both binary size and performance. Additionally, this release updates the `tracing-attributes` dependency to [v0.1.24][attrs-0.1.24], which updates the [`syn`][syn] dependency to v2.x.x. `tracing-attributes` v0.1.24 also includes improvements to the `#[instrument]` macro; see [the `tracing-attributes` 0.1.24 release notes][attrs-0.1.24] for details. ##### Added - `Instrumented` futures will now enter the attached `Span` in their `Drop` implementation, allowing events emitted when dropping the future to occur within the span ([#&#8203;2562](https://github.com/tokio-rs/tracing/issues/2562)) - `#[inline]` attributes for methods called by the `event!` macros, making generated code smaller ([#&#8203;2555](https://github.com/tokio-rs/tracing/issues/2555)) - **attributes**: `level` argument to `#[instrument(err)]` and `#[instrument(ret)]` to override the level of the generated return value event ([#&#8203;2335](https://github.com/tokio-rs/tracing/issues/2335)) - **attributes**: Improved compiler error message when `#[instrument]` is added to a `const fn` ([#&#8203;2418](https://github.com/tokio-rs/tracing/issues/2418)) ##### Changed - `tracing-attributes`: updated to [0.1.24][attrs-0.1.24] - Removed unneeded `cfg-if` dependency ([#&#8203;2553](https://github.com/tokio-rs/tracing/issues/2553)) - **attributes**: Updated [`syn`][syn] dependency to 2.0 ([#&#8203;2516](https://github.com/tokio-rs/tracing/issues/2516)) ##### Fixed - **attributes**: Fix `clippy::unreachable` warnings in `#[instrument]`-generated code ([#&#8203;2356](https://github.com/tokio-rs/tracing/issues/2356)) - **attributes**: Removed unused "visit" feature flag from `syn` dependency ([#&#8203;2530](https://github.com/tokio-rs/tracing/issues/2530)) ##### Documented - **attributes**: Documented default level for `#[instrument(err)]` ([#&#8203;2433](https://github.com/tokio-rs/tracing/issues/2433)) - **attributes**: Improved documentation for levels in `#[instrument]` ([#&#8203;2350](https://github.com/tokio-rs/tracing/issues/2350)) Thanks to [@&#8203;nitnelave](https://github.com/nitnelave), [@&#8203;jsgf](https://github.com/jsgf), [@&#8203;Abhicodes-crypto](https://github.com/Abhicodes-crypto), [@&#8203;LukeMathWalker](https://github.com/LukeMathWalker), [@&#8203;andrewpollack](https://github.com/andrewpollack), [@&#8203;quad](https://github.com/quad), [@&#8203;klensy](https://github.com/klensy), [@&#8203;davidpdrsn](https://github.com/davidpdrsn), [@&#8203;dbidwell94](https://github.com/dbidwell94), [@&#8203;ldm0](https://github.com/ldm0), [@&#8203;NobodyXu](https://github.com/NobodyXu), [@&#8203;ilsv](https://github.com/ilsv), and [@&#8203;daxpedda](https://github.com/daxpedda) for contributing to this release! [`syn`]: https://crates.io/crates/syn [attrs-0.1.24]: https://github.com/tokio-rs/tracing/releases/tag/tracing-attributes-0.1.24 </details> <details> <summary>uuid-rs/uuid</summary> ### [`v1.8.0`](https://github.com/uuid-rs/uuid/releases/tag/1.8.0) [Compare Source](https://github.com/uuid-rs/uuid/compare/1.7.0...1.8.0) #### ⚠️ Potential Breakage ⚠️ A new `impl AsRef<Uuid> for Uuid` bound has been added, which can break inference on code like: ```rust let b = uuid.as_ref(); ``` You can fix these by explicitly typing the result of the conversion: ```rust let b: &[u8] = uuid.as_ref(); ``` or by calling `as_bytes` instead: ```rust let b = uuid.as_bytes(); ``` #### What's Changed - docs: fix small spelling mistake by [@&#8203;bengsparks](https://github.com/bengsparks) in https://github.com/uuid-rs/uuid/pull/737 - serde serialize_with support by [@&#8203;dakaizou](https://github.com/dakaizou) in https://github.com/uuid-rs/uuid/pull/735 - Fix up CI builds by [@&#8203;KodrAus](https://github.com/KodrAus) in https://github.com/uuid-rs/uuid/pull/744 - Only add `wasm-bindgen` as a dependency on `wasm32-unknown-unknown` by [@&#8203;emilk](https://github.com/emilk) in https://github.com/uuid-rs/uuid/pull/738 - impl AsRef<Uuid> for Uuid by [@&#8203;koshell](https://github.com/koshell) in https://github.com/uuid-rs/uuid/pull/743 - Add v6 to v8 draft link to README by [@&#8203;KodrAus](https://github.com/KodrAus) in https://github.com/uuid-rs/uuid/pull/746 - Add a workflow for running cargo outdated by [@&#8203;KodrAus](https://github.com/KodrAus) in https://github.com/uuid-rs/uuid/pull/745 - Prepare for 1.8.0 release by [@&#8203;KodrAus](https://github.com/KodrAus) in https://github.com/uuid-rs/uuid/pull/747 #### New Contributors - [@&#8203;bengsparks](https://github.com/bengsparks) made their first contribution in https://github.com/uuid-rs/uuid/pull/737 - [@&#8203;dakaizou](https://github.com/dakaizou) made their first contribution in https://github.com/uuid-rs/uuid/pull/735 - [@&#8203;emilk](https://github.com/emilk) made their first contribution in https://github.com/uuid-rs/uuid/pull/738 - [@&#8203;koshell](https://github.com/koshell) made their first contribution in https://github.com/uuid-rs/uuid/pull/743 **Full Changelog**: https://github.com/uuid-rs/uuid/compare/1.7.0...1.8.0 ### [`v1.7.0`](https://github.com/uuid-rs/uuid/releases/tag/1.7.0) [Compare Source](https://github.com/uuid-rs/uuid/compare/1.6.1...1.7.0) #### What's Changed - Add missing test for invalid parse_str by [@&#8203;CXWorks](https://github.com/CXWorks) in https://github.com/uuid-rs/uuid/pull/723 - Upgrade borsh unstable dependency to v1.0 and make it stable by [@&#8203;bgeron](https://github.com/bgeron) in https://github.com/uuid-rs/uuid/pull/724 - Reduce the package size of uuid by [@&#8203;KodrAus](https://github.com/KodrAus) in https://github.com/uuid-rs/uuid/pull/726 - Make use of newer Cargo features for specifying dependencies by [@&#8203;KodrAus](https://github.com/KodrAus) in https://github.com/uuid-rs/uuid/pull/727 - Prepare for 1.7.0 release by [@&#8203;KodrAus](https://github.com/KodrAus) in https://github.com/uuid-rs/uuid/pull/728 #### New Contributors - [@&#8203;CXWorks](https://github.com/CXWorks) made their first contribution in https://github.com/uuid-rs/uuid/pull/723 - [@&#8203;bgeron](https://github.com/bgeron) made their first contribution in https://github.com/uuid-rs/uuid/pull/724 **Full Changelog**: https://github.com/uuid-rs/uuid/compare/1.6.1...1.7.0 ### [`v1.6.1`](https://github.com/uuid-rs/uuid/releases/tag/1.6.1) [Compare Source](https://github.com/uuid-rs/uuid/compare/1.6.0...1.6.1) #### What's Changed - Fix uuid macro in consts by [@&#8203;KodrAus](https://github.com/KodrAus) in https://github.com/uuid-rs/uuid/pull/721 **Full Changelog**: https://github.com/uuid-rs/uuid/compare/1.6.0...1.6.1 ### [`v1.6.0`](https://github.com/uuid-rs/uuid/releases/tag/1.6.0) [Compare Source](https://github.com/uuid-rs/uuid/compare/1.5.0...1.6.0) #### What's Changed - doc: fix links in v6 module by [@&#8203;metalalive](https://github.com/metalalive) in https://github.com/uuid-rs/uuid/pull/714 - Stabilize UUIDv6-v8 support by [@&#8203;KodrAus](https://github.com/KodrAus) in https://github.com/uuid-rs/uuid/pull/718 - Prepare for 1.6.0 release by [@&#8203;KodrAus](https://github.com/KodrAus) in https://github.com/uuid-rs/uuid/pull/719 #### New Contributors - [@&#8203;metalalive](https://github.com/metalalive) made their first contribution in https://github.com/uuid-rs/uuid/pull/714 **Full Changelog**: https://github.com/uuid-rs/uuid/compare/1.5.0...1.6.0 ### [`v1.5.0`](https://github.com/uuid-rs/uuid/releases/tag/1.5.0) [Compare Source](https://github.com/uuid-rs/uuid/compare/1.4.1...1.5.0) #### What's Changed - Add impl From<Uuid> for String under the std feature flag by [@&#8203;brahms116](https://github.com/brahms116) in https://github.com/uuid-rs/uuid/pull/700 - Remove dead link to templates by [@&#8203;KodrAus](https://github.com/KodrAus) in https://github.com/uuid-rs/uuid/pull/704 - make ClockSequence wrap correctly by [@&#8203;fef1312](https://github.com/fef1312) in https://github.com/uuid-rs/uuid/pull/705 - Track MSRV in Cargo.toml by [@&#8203;KodrAus](https://github.com/KodrAus) in https://github.com/uuid-rs/uuid/pull/706 - Support converting between Uuid and vec by [@&#8203;KodrAus](https://github.com/KodrAus) in https://github.com/uuid-rs/uuid/pull/703 - Replace MIPS with Miri and add clippy to CI by [@&#8203;KodrAus](https://github.com/KodrAus) in https://github.com/uuid-rs/uuid/pull/712 - Added `bytemuck` support by [@&#8203;John-Toohey](https://github.com/John-Toohey) in https://github.com/uuid-rs/uuid/pull/711 - Prepare for 1.5.0 release by [@&#8203;KodrAus](https://github.com/KodrAus) in https://github.com/uuid-rs/uuid/pull/713 #### New Contributors - [@&#8203;brahms116](https://github.com/brahms116) made their first contribution in https://github.com/uuid-rs/uuid/pull/700 - [@&#8203;fef1312](https://github.com/fef1312) made their first contribution in https://github.com/uuid-rs/uuid/pull/705 - [@&#8203;John-Toohey](https://github.com/John-Toohey) made their first contribution in https://github.com/uuid-rs/uuid/pull/711 **Full Changelog**: https://github.com/uuid-rs/uuid/compare/1.4.1...1.5.0 ### [`v1.4.1`](https://github.com/uuid-rs/uuid/releases/tag/1.4.1) [Compare Source](https://github.com/uuid-rs/uuid/compare/1.4.0...1.4.1) #### What's Changed - Fix macro hygiene by [@&#8203;teohhanhui](https://github.com/teohhanhui) in https://github.com/uuid-rs/uuid/pull/694 - Add #\[inline] for Uuid::from_bytes\[\_ref] and Uuid::{as,into}\_bytes by [@&#8203;jrose-signal](https://github.com/jrose-signal) in https://github.com/uuid-rs/uuid/pull/693 - Print uuids in examples by [@&#8203;KodrAus](https://github.com/KodrAus) in https://github.com/uuid-rs/uuid/pull/697 - Prepare for 1.4.1 release by [@&#8203;KodrAus](https://github.com/KodrAus) in https://github.com/uuid-rs/uuid/pull/698 #### New Contributors - [@&#8203;teohhanhui](https://github.com/teohhanhui) made their first contribution in https://github.com/uuid-rs/uuid/pull/694 - [@&#8203;jrose-signal](https://github.com/jrose-signal) made their first contribution in https://github.com/uuid-rs/uuid/pull/693 **Full Changelog**: https://github.com/uuid-rs/uuid/compare/1.4.0...1.4.1 ### [`v1.4.0`](https://github.com/uuid-rs/uuid/releases/tag/1.4.0) [Compare Source](https://github.com/uuid-rs/uuid/compare/1.3.4...1.4.0) #### What's Changed - Fixed wasm tests not running due to incorrect attribute target by [@&#8203;kmusick](https://github.com/kmusick) in https://github.com/uuid-rs/uuid/pull/688 - Fixing issue with Cloudflare Workers and wasm32-unknown-unknown when using now() by [@&#8203;kmusick](https://github.com/kmusick) in https://github.com/uuid-rs/uuid/pull/690 - Add `borsh` support by [@&#8203;grovesNL](https://github.com/grovesNL) in https://github.com/uuid-rs/uuid/pull/686 - Fix some timestamp generation by [@&#8203;KodrAus](https://github.com/KodrAus) in https://github.com/uuid-rs/uuid/pull/691 - Prepare for 1.4.0 release by [@&#8203;KodrAus](https://github.com/KodrAus) in https://github.com/uuid-rs/uuid/pull/692 #### New Contributors - [@&#8203;kmusick](https://github.com/kmusick) made their first contribution in https://github.com/uuid-rs/uuid/pull/688 - [@&#8203;grovesNL](https://github.com/grovesNL) made their first contribution in https://github.com/uuid-rs/uuid/pull/686 **Full Changelog**: https://github.com/uuid-rs/uuid/compare/1.3.4...1.4.0 ### [`v1.3.4`](https://github.com/uuid-rs/uuid/releases/tag/1.3.4) [Compare Source](https://github.com/uuid-rs/uuid/compare/1.3.3...1.3.4) #### What's Changed - Add `wasm32-wasi` support with tests by [@&#8203;acfoltzer](https://github.com/acfoltzer) in https://github.com/uuid-rs/uuid/pull/677 - Fix up MSRV build in CI by [@&#8203;KodrAus](https://github.com/KodrAus) in https://github.com/uuid-rs/uuid/pull/679 - fix: keep the order when filling random bytes by [@&#8203;Hanaasagi](https://github.com/Hanaasagi) in https://github.com/uuid-rs/uuid/pull/682 - Prepare for 1.3.4 release by [@&#8203;KodrAus](https://github.com/KodrAus) in https://github.com/uuid-rs/uuid/pull/683 #### New Contributors - [@&#8203;acfoltzer](https://github.com/acfoltzer) made their first contribution in https://github.com/uuid-rs/uuid/pull/677 - [@&#8203;Hanaasagi](https://github.com/Hanaasagi) made their first contribution in https://github.com/uuid-rs/uuid/pull/682 **Full Changelog**: https://github.com/uuid-rs/uuid/compare/1.3.3...1.3.4 ### [`v1.3.3`](https://github.com/uuid-rs/uuid/releases/tag/1.3.3) [Compare Source](https://github.com/uuid-rs/uuid/compare/1.3.2...1.3.3) #### What's Changed - Use sha hash for checkout action and remove others by [@&#8203;KodrAus](https://github.com/KodrAus) in https://github.com/uuid-rs/uuid/pull/671 - Hard deprecate Timestamp::to_unix_nanos by [@&#8203;KodrAus](https://github.com/KodrAus) in https://github.com/uuid-rs/uuid/pull/673 - Prepare for 1.3.3 release by [@&#8203;KodrAus](https://github.com/KodrAus) in https://github.com/uuid-rs/uuid/pull/674 **Full Changelog**: https://github.com/uuid-rs/uuid/compare/1.3.2...1.3.3 ### [`v1.3.2`](https://github.com/uuid-rs/uuid/releases/tag/1.3.2) [Compare Source](https://github.com/uuid-rs/uuid/compare/1.3.1...1.3.2) #### What's Changed - Create SECURITY.md by [@&#8203;KodrAus](https://github.com/KodrAus) in https://github.com/uuid-rs/uuid/pull/668 - Faster as_u128 and to_u128\_le by [@&#8203;pkoenig10](https://github.com/pkoenig10) in https://github.com/uuid-rs/uuid/pull/669 - prepare for 1.3.2 release by [@&#8203;KodrAus](https://github.com/KodrAus) in https://github.com/uuid-rs/uuid/pull/670 #### New Contributors - [@&#8203;pkoenig10](https://github.com/pkoenig10) made their first contribution in https://github.com/uuid-rs/uuid/pull/669 **Full Changelog**: https://github.com/uuid-rs/uuid/compare/1.3.1...1.3.2 ### [`v1.3.1`](https://github.com/uuid-rs/uuid/releases/tag/1.3.1) [Compare Source](https://github.com/uuid-rs/uuid/compare/1.3.0...1.3.1) #### What's Changed - Update syn requirement from 1.0.80 to 2.0.5 by [@&#8203;dependabot](https://github.com/dependabot) in https://github.com/uuid-rs/uuid/pull/663 - Update windows-sys requirement from 0.45.0 to 0.48.0 by [@&#8203;dependabot](https://github.com/dependabot) in https://github.com/uuid-rs/uuid/pull/665 - remove some extra chars in a comment by [@&#8203;KodrAus](https://github.com/KodrAus) in https://github.com/uuid-rs/uuid/pull/666 - Prepare for 1.3.1 release by [@&#8203;KodrAus](https://github.com/KodrAus) in https://github.com/uuid-rs/uuid/pull/667 **Full Changelog**: https://github.com/uuid-rs/uuid/compare/1.3.0...1.3.1 </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Enabled. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 👻 **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://github.com/renovatebot/renovate/discussions) if that's undesired. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNC4xNjAuMCIsInVwZGF0ZWRJblZlciI6IjM0LjE2MC4wIn0=-->
kjuulh added 1 commit 2024-04-06 22:11:28 +02:00
fix(deps): update all dependencies
Some checks failed
renovate/artifacts Artifact file update failure
00f5c58e39
Author
Owner

⚠ Artifact update problem

Renovate failed to update an artifact related to this branch. You probably do not want to merge this PR as-is.

♻ Renovate will retry this branch, including artifacts, only when one of the following happens:

  • any of the package files in this branch needs updating, or
  • the branch becomes conflicted, or
  • you click the rebase/retry checkbox if found above, or
  • you rename this PR's title to start with "rebase!" to trigger it manually

The artifact failure details are included below:

File name: Cargo.lock
Command failed: cargo update --manifest-path Cargo.toml --workspace
    Updating crates.io index
error: failed to select a version for `uuid`.
    ... required by package `como_web v0.1.0 (/tmp/renovate/repos/gitea/kjuulh/como-web)`
versions that meet the requirements `^1.8.0` are: 1.8.0

the package `como_web` depends on `uuid`, with features: `wasm-bindgen` but `uuid` does not have these features.
 It has an optional dependency with that name, but that dependency uses the "dep:" syntax in the features table, so it does not have an implicit feature with that name.


failed to select a version for `uuid` which could resolve this conflict

### ⚠ Artifact update problem Renovate failed to update an artifact related to this branch. You probably do not want to merge this PR as-is. ♻ Renovate will retry this branch, including artifacts, only when one of the following happens: - any of the package files in this branch needs updating, or - the branch becomes conflicted, or - you click the rebase/retry checkbox if found above, or - you rename this PR's title to start with "rebase!" to trigger it manually The artifact failure details are included below: ##### File name: Cargo.lock ``` Command failed: cargo update --manifest-path Cargo.toml --workspace Updating crates.io index error: failed to select a version for `uuid`. ... required by package `como_web v0.1.0 (/tmp/renovate/repos/gitea/kjuulh/como-web)` versions that meet the requirements `^1.8.0` are: 1.8.0 the package `como_web` depends on `uuid`, with features: `wasm-bindgen` but `uuid` does not have these features. It has an optional dependency with that name, but that dependency uses the "dep:" syntax in the features table, so it does not have an implicit feature with that name. failed to select a version for `uuid` which could resolve this conflict ```
kjuulh added 1 commit 2024-04-08 21:59:05 +02:00
Signed-off-by: kjuulh <contact@kjuulh.io>
kjuulh added 1 commit 2024-04-08 22:02:50 +02:00
feat: add drone
Some checks failed
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is failing
87c1a1fdb2
Signed-off-by: kjuulh <contact@kjuulh.io>
kjuulh added 1 commit 2024-04-08 22:05:05 +02:00
feat: add please
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
6cf2ff56a3
Signed-off-by: kjuulh <contact@kjuulh.io>
kjuulh merged commit 934fd83287 into main 2024-04-08 22:05:39 +02:00
Sign in to join this conversation.
No reviewers
No Label
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: kjuulh/como-web#3
No description provided.