Skip to content

v0.4.35

Compare
Choose a tag to compare
@pitdicker pitdicker released this 06 Mar 13:31
· 63 commits to main since this release

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

  • Rustfmt doctests (#1452)
  • Improve docs for crate features (#1455, thanks @edmorley)
  • Add more documentation and examples to Parsed (#1439)

Internal

  • Refactor internals module (#1428, #1429, #1431, #1432, #1433, #1438)
  • CI: test cross-compiling to x86_64-unknown-illumos instead of Solaris (#1437)
  • CI: lint Windows target, fix clippy warning (#1441)
  • CI: only run cargo hack check on Linux (#1442)
  • Update windows-bindgen to 0.54 (#1462, #1483)
  • Simplify error value of parse_internal (#1459)
  • Simplify SerdeError (#1458)
  • Simplify NaiveDate::from_isoywd a bit (#1464)

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