The [year] component (in format descriptions) now supports a range modifier, which can be
either standard or extended. The default is extended for backwards compatibility. This is
intended as a manner to opt out of the extended range when the large-dates feature is enabled.
When the large-dates feature is not enabled, the modifier has no effect.
UtcDateTime, which is semantically equivalent to an OffsetDateTime with UTC as its offset. The
advantage is that it is the same size as a PrimitiveDateTime and has improved operability with
well-known formats.
As part of this, there were some other additions:
utc_datetime! macro, which is similar to the datetime! macro but constructs a UtcDateTime.
PrimitiveDateTime::as_utc
OffsetDateTime::to_utc
OffsetDateTime::checked_to_utc
time::serde::timestamp::milliseconds_i64, which is a module to serialize/deserialize timestamps
as the Unix timestamp. The pre-existing module does this as an i128 where an i64 would
suffice. This new module should be preferred.
Changed
error::Format has had its source() implementation changed to no longer return a boxed value
from the ComponentRange variant. If you were explicitly expecting this, you will need to update
your code. The method API remains unchanged.
[year repr:century] supports single-digit values.
All format_into methods accept ?Sized references.
Miscellaneous
Some non-exhaustive enum variants that are no longer used have been modified to be statically
proven as uninhabited. The relevant fields are doc-hidden and not semver-guaranteed to remain as
such, though it is unlikely to change.
An unnecessary check when parsing RFC 2822 has been removed.
Various methods have had their implementations changed, resulting in significant performance
gains. Among the methods changed are
Time::MAX, equivalent to time!(23:59:59.999999999)
[year repr:century] is now supported in format descriptions. When used in conjunction with [year repr:last_two], there is sufficient information to parse a date. Note that with the large-date feature enabled, there is an ambiguity when parsing the two back-to-back.
Parsing of strftime-style format descriptions, located at time::format_description::parse_strftime_borrowed and time::format_description::parse_strftime_owned
time::util::refresh_tz and time::util::refresh_tz_unchecked, which updates information
obtained via the TZ environment variable. This is equivalent to the tzset syscall on Unix-like
systems, with and without built-in soundness checks, respectively.
Month::length and util::days_in_month, replacing util::days_in_year_month.
Expressions are permitted in time::serde::format_description! rather than only paths. This also
drastically improves diagnostics when an invalid value is provided.
Changed
Obtaining the system UTC offset on Unix-like systems should now succeed when multi-threaded.
However, if the TZ environment variable is altered, the program will not be aware of this until time::util::refresh_tz or time::util::refresh_tz_unchecked is called. refresh_tz has the
same soundness requirements as obtaining the system UTC offset previously did, with the
requirements still being automatically enforced. refresh_tz_unchecked does not enforce these
requirements at the expense of being unsafe. Most programs should not need to call either
function.
Due to this change, the time::util::local_offset module has been deprecated in its entirety. The get_soundness and set_soundness functions are now no-ops.
Note that while calls should succeed, success is not guaranteed in any situation. Downstream
users should always be prepared to handle the error case.
Fixed
Floating point values are truncated, not rounded, when formatting.
RFC3339 allows arbitrary separators between the date and time components.
Serialization of negative Durations less than one second is now correct. It previously omitted
the negative sign.
From<js_sys::Date> for OffsetDateTime now ensures sub-millisecond values are not erroneously
returned.
Configuration
📅Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕Ignore: Close this PR and you won't be reminded about this update again.
If you want to rebase/retry this PR, check this box
This PR contains the following updates:
| Package | Type | Update | Change |
|---|---|---|---|
| [time](https://time-rs.github.io) ([source](https://redirect.github.com/time-rs/time)) | dependencies | patch | `0.3.36` -> `0.3.41` |
---
> [!WARNING]
> Some dependencies could not be looked up. Check the Dependency Dashboard for more information.
---
### Release Notes
<details>
<summary>time-rs/time (time)</summary>
### [`v0.3.41`](https://redirect.github.com/time-rs/time/blob/HEAD/CHANGELOG.md#0341-2025年03月23日)
[Compare Source](https://redirect.github.com/time-rs/time/compare/v0.3.40...v0.3.41)
##### Fixed
- Compatibility with the latest release of `deranged`. This fix is permanent and covers future
similar changes upstream.
### [`v0.3.40`](https://redirect.github.com/time-rs/time/blob/HEAD/CHANGELOG.md#0340-2025年03月18日)
[Compare Source](https://redirect.github.com/time-rs/time/compare/v0.3.39...v0.3.40)
##### Added
- Visibility modifiers may now be added to the `mod` generated by `time::sere::format_description!`.
### [`v0.3.39`](https://redirect.github.com/time-rs/time/blob/HEAD/CHANGELOG.md#0339-2025年03月06日)
[Compare Source](https://redirect.github.com/time-rs/time/compare/v0.3.38...v0.3.39)
##### Fixed
- Doc tests run successfully with the default feature set.
- wasm builds work again.
Both of these were regressions in v0.3.38 and are now checked in CI.
### [`v0.3.38`](https://redirect.github.com/time-rs/time/blob/HEAD/CHANGELOG.md#0338-2025年03月05日)
[Compare Source](https://redirect.github.com/time-rs/time/compare/v0.3.37...v0.3.38)
##### Added
- The `[year]` component (in format descriptions) now supports a `range` modifier, which can be
either `standard` or `extended`. The default is `extended` for backwards compatibility. This is
intended as a manner to opt *out* of the extended range when the `large-dates` feature is enabled.
When the `large-dates` feature is not enabled, the modifier has no effect.
- `UtcDateTime`, which is semantically equivalent to an `OffsetDateTime` with UTC as its offset. The
advantage is that it is the same size as a `PrimitiveDateTime` and has improved operability with
well-known formats.
As part of this, there were some other additions:
- `utc_datetime!` macro, which is similar to the `datetime!` macro but constructs a `UtcDateTime`.
- `PrimitiveDateTime::as_utc`
- `OffsetDateTime::to_utc`
- `OffsetDateTime::checked_to_utc`
- `time::serde::timestamp::milliseconds_i64`, which is a module to serialize/deserialize timestamps
as the Unix timestamp. The pre-existing module does this as an `i128` where an `i64` would
suffice. This new module should be preferred.
##### Changed
- `error::Format` has had its `source()` implementation changed to no longer return a boxed value
from the `ComponentRange` variant. If you were explicitly expecting this, you will need to update
your code. The method API remains unchanged.
- `[year repr:century]` supports single-digit values.
- All `format_into` methods accept `?Sized` references.
##### Miscellaneous
- Some non-exhaustive enum variants that are no longer used have been modified to be statically
proven as uninhabited. The relevant fields are doc-hidden and not semver-guaranteed to remain as
such, though it is unlikely to change.
- An unnecessary check when parsing RFC 2822 has been removed.
- Various methods have had their implementations changed, resulting in significant performance
gains. Among the methods changed are
- `util::is_leap_year`
- `util::weeks_in_year`
- `Month::length`
- `Date::to_calendar_date`
- `Date::month`
- `Date::day`
- `Date::from_julian_day`
- `Date::to_julian_day`
- other methods that call into these methods
### [`v0.3.37`](https://redirect.github.com/time-rs/time/blob/HEAD/CHANGELOG.md#0337-2024年12月03日)
[Compare Source](https://redirect.github.com/time-rs/time/compare/v0.3.36...v0.3.37)
##### Added
- `Time::MAX`, equivalent to `time!(23:59:59.999999999)`
- `[year repr:century]` is now supported in format descriptions. When used in conjunction with
`[year repr:last_two]`, there is sufficient information to parse a date. Note that with the
`large-date` feature enabled, there is an ambiguity when parsing the two back-to-back.
- Parsing of `strftime`-style format descriptions, located at
`time::format_description::parse_strftime_borrowed` and
`time::format_description::parse_strftime_owned`
- `time::util::refresh_tz` and `time::util::refresh_tz_unchecked`, which updates information
obtained via the `TZ` environment variable. This is equivalent to the `tzset` syscall on Unix-like
systems, with and without built-in soundness checks, respectively.
- `Month::length` and `util::days_in_month`, replacing `util::days_in_year_month`.
- Expressions are permitted in `time::serde::format_description!` rather than only paths. This also
drastically improves diagnostics when an invalid value is provided.
##### Changed
- Obtaining the system UTC offset on Unix-like systems should now succeed when multi-threaded.
However, if the `TZ` environment variable is altered, the program will not be aware of this until
`time::util::refresh_tz` or `time::util::refresh_tz_unchecked` is called. `refresh_tz` has the
same soundness requirements as obtaining the system UTC offset previously did, with the
requirements still being automatically enforced. `refresh_tz_unchecked` does not enforce these
requirements at the expense of being `unsafe`. Most programs should not need to call either
function.
Due to this change, the `time::util::local_offset` module has been deprecated in its entirety. The
`get_soundness` and `set_soundness` functions are now no-ops.
Note that while calls *should* succeed, success is not guaranteed in any situation. Downstream
users should always be prepared to handle the error case.
##### Fixed
- Floating point values are truncated, not rounded, when formatting.
- RFC3339 allows arbitrary separators between the date and time components.
- Serialization of negative `Duration`s less than one second is now correct. It previously omitted
the negative sign.
- `From<js_sys::Date> for OffsetDateTime` now ensures sub-millisecond values are not erroneously
returned.
</details>
---
### Configuration
📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.
♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 **Ignore**: Close this PR and you won't be reminded about this update again.
---
- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box
---
This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/Shadow53/hoard).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS4xMDcuMCIsInVwZGF0ZWRJblZlciI6IjM5LjIwNy4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->
Warning: The "Autodetect manual merge" setting is not enabled for this repository, you will have to mark this pull request as manually merged afterwards.
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
Shadow53/hoard!218
Loading...
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "renovate/time-0.x-lockfile"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?