PackageTrack
Sign in Get early access

jiff-static

Create static TimeZone values for Jiff (useful in core-only environments).

0.2.35 103M downloads/mo #800 most downloaded on crates.io BurntSushi/jiff

What this package is like to depend on

Last release 29 days ago

25 Jul 2026

Ships fairly regularly

a new release about every 2 weeks

Nearly every release is documented

notes for 34 of 34 stable releases

Nothing withdrawn

no release was ever pulled

1 years old

34 releases · first in 2025

20 releases in the last 12 months

see the full history below

Release timeline

34 releases · Mar 2025 to Jul 2026
2026
Release Pre-release

Releases

latest 34
  1. 0.2.35 25 Jul 2026
    Release notes

    This release fixes a bug in duration parsing where, e.g., -PT0.5S would be parsed as if the - sign didn't exist. This bug also affects friendly durations such as -0.5s.

    Bug fixes:

    • #613: Fixes a bug where the sign in a duration could be ignored while parsing.
    Open source →
  2. 0.2.34 19 Jul 2026
    Release notes

    This release contains a few small enhancements. Namely, some error messages for parsing datetime values have been improved by removing some redundant messaging. Additionally, the strftime APIs on datetime values can no longer panic. Instead, they'll silently pass through invalid formatting directives.

    Enhancements:

    • #519: Improve some parsing error messages by removing redundancy.
    • #585: Change Timestamp::strftime (and similar methods) so that they will never panic.
    Open source →
  3. 0.2.33 19 Jul 2026
    Release notes

    This release permits the use of a global time zone database in alloc-only environments. It also contains a massive internal refactor that introduces a new jiff-core crate for better code sharing.

    Enhancements:

    • #285: Decouple naming of time zones from their TZif data.
    • #373: Add a new jiff-core crate for better code sharing.
    • #533: A bundled TimeZoneDatabase is now available when only alloc is enabled.
    Open source →
  4. 0.2.32 09 Jul 2026
    Release notes

    This release updates Jiff's bundled copy of the [IANA Time Zone Database] to 2026c. See the 2026c release announcement for more details.

    Open source →
  5. 0.2.31 29 Jun 2026
    Release notes

    This release fixes a minor bug in tests that prevents the crate from running through standard build processes in Linux distributions downstream.

    • #594: Fix imports in recently added tests.
    Open source →
  6. 0.2.30 29 Jun 2026
    Release notes

    This release fixes a safety soundness bug in Jiff's lower level printing APIs. There is also a nice performance improvement to civil::Date::weekday, which also improves downstread routines like civil::Date::nth_weekday and datetime<-->timestamp conversions in some cases.

    Enhancements:

    • #591: Improve the performance of weekday calculations from Gregorian dates by 30-50%.

    Bug fixes:

    • #592: Fix safety soundness bug when using a non-empty String destination buffer with lower level printing APIs inside of jiff::fmt.
    Open source →
  7. 0.2.29 21 Jun 2026
    Release notes

    This release adds support for [defmt], which is a highly efficient logging framework that targets resource-constrained devices, like microcontrollers.

    Enhancements:

    • #505: Add support for the defmt crate by implementing defmt::Format on the principle public types in Jiff.
    • #584: Add Zoned::UNIX_EPOCH as a constant.
    • #587: Change the Debug output for civil::ISOWeekDate to match the Debug output style of other primitive datetime types.

    Bug fixes:

    • #525: Fix a bug that prevented time zone lookups when using an on-disk time zone database on Windows.
    • #539: Fix a bug where rendering a datetime in an error message would omit a T separator.
    Open source →
  8. 0.2.28 29 May 2026
    Release notes

    This is a small release with a fix for test failures on 32-bit targets in no-alloc environments.

    Bug fixes:

    • #573: Fix test failure on 32-bit targets in no-alloc environments.
    Open source →
  9. 0.2.27 26 May 2026
    Release notes

    This is a small release with a bug fix for build errors on Windows for very old versions of Rust.

    Bug fixes:

    • #566: Fix build error on Windows for very old versions of Rust (e.g., 1.71).
    Open source →
  10. 0.2.26 26 May 2026
    Release notes

    This release has a couple enhancements.

    Firstly, Jiff now uses windows-link for calling FFI routines on Windows instead of windows-sys. Using windows-link means less churn and fewer duplicates in the dependency graph.

    Secondly, a new jiff-sqlx 0.2.0 release has been put out to support sqlx 0.9.0.

    Enhancements:

    • #538: Replace use of windows-sys with windows-link and inline bindings.
    • #561: Update jiff-sqlx to use sqlx 0.9.0 and release jiff-sqlx 0.2.0.

    Bug fixes:

    • #548: Absolutetize incorrect relative size terms in the documentation of RoundMode.
    Open source →
  11. 0.2.25 25 May 2026
    Release notes

    This release updates Jiff's bundled copy of the [IANA Time Zone Database] to 2026b. See the 2026b release announcement for more details.

    Open source →
  12. 0.2.24 23 Apr 2026
    Release notes

    This release primarily adds a new memory_usage routine for reporting heap allocation sizes for the TimeZone and Zoned types. This release also acknowledges and updates the timeline expectations for a Jiff 1.0 release in README.md.

    Enhancements:

    • #520: Add memory_usage to the TimeZone and Zoned types.
    • #535: Improve comment in Span::checked_add example.

    Bug fixes:

    • #541: Update Jiff 1.0 timeline.
    Open source →
  13. 0.2.23 03 Mar 2026
    Release notes

    This release updates Jiff's bundled copy of the [IANA Time Zone Database] to 2026a. See the 2026a release announcement for more details.

    Open source →
  14. 0.2.22 28 Feb 2026
    Release notes

    This release includes a bug fix where fallible conversions from signed durations to unsigned durations could panic in some cases.

    Bug fixes:

    • #526: Fix a panicking bug that occurs for std::time::Duration::try_from(SignedDuration::new(0, -1)).
    Open source →
  15. 0.2.21 22 Feb 2026
    Release notes

    This release contains a performance improvement and a bug fix for civil::Date::new where it could panic on some inputs.

    Bug fixes:

    • #523: Fix a bug where Date::new could panic. This was a regression introduced in jiff 0.2.20.

    Performance:

    • #518: Improve Timestamp to civil::DateTime conversion performance by ~15%.
    Open source →
  16. 0.2.20 12 Feb 2026
    Release notes

    This release contains a major internal refactor that moves off of using ranged integers internally. There are also some small bug fixes and added support for finding the system time zone on emscripten targets.

    Enhancements:

    • #11: Stop using ranged integers internally.
    • #490: Add support for retrieving the system time zone on emscripten targets.
    • #500: Update comparison with the time crate in the Jiff documentation.
    • #502: Enable some non-default features for the Rust Playground deployment.

    Bug fixes:

    • #485: Fix bug with padding for negative integers in strftime.
    • #486: Make %^c result in uppercase strings where appropriate.
    Open source →
  17. 0.2.19 05 Feb 2026
    Release notes

    This is a small release with a performance optimization (with respect to doing heavily contended arithmetic on Zoned values) and a bug fix for a panic that can occur when using %2s in strftime.

    Enhancements:

    • #491: Avoid cloning TimeZone for consuming operations on Zoned.

    Bug fixes:

    • #497: Fix a panic in timestamp.strftime("%2s").
    Open source →
  18. 0.2.18 06 Jan 2026
    Release notes

    This release ships a sizeable refactor to the RFC 2822, RFC 9110, RC 3339, RFC 9557, ISO 8601 and friendly format printers. Specifically, they are now all monomorphic internally (instead of being generic over jiff::fmt::Write) and write to uninitialized buffers. This improves runtime performance (sometimes dramatically so), and to a more modest degree, decreases binary size and improves compile times.

    This release also includes a bug fix where DateTime::MIN.to_zoned(..) could panic.

    Enhancements:

    • #460: Improve runtime performance and binary size of RFC 2822 printer.
    • #461: Tweak behavior of printing min/max offsets in RFC 2822 and Temporal printers.
    • #462: Export fallible constructors for jiff::SignedDuration.
    • #465: Improve runtime performance and binary size of the "friendly" duration printer.
    • #468: Improve runtime performance and binary size of the Temporal ISO 8601 duration printer.
    • #470: Improve runtime performance and binary size of the Temporal ISO 8601 datetime printer.
    • #474: Improve runtime performance and binary size of Jiff's strftime implementation.
    • #477: Fix a bug where time zone lookups for civil::DateTime::MIN could panic.
    Open source →
  19. 0.2.17 24 Dec 2025
    Release notes

    This release contains binary size improvements to Jiff, more succinct error messages and some new minor APIs.

    While Jiff 1.0 is overdue, I've been doing a lot of experimenting with improving Jiff's binary size and compile times. In particular, I want to spend time doing this before Jiff 1.0 so that we don't box ourselves into a corner. (For example, some binary size improvements may require minor API breaking changes.)

    In this release, Jiff has switched to structured error handling internally in an effort to provide error predicates and also hopefully improve binary sizes and compile times. Overall this didn't have as big of an impact on binary sizes or compile times as I was hoping. I did take this opportunity to make Jiff's error messages a bit more succinct. In many cases, this involved de-duplicating some aspects of error messages and omitting user provided input in the messages. If you feel like there is a significant decrease in error message quality that isn't easily amended by callers providing additional context themselves, please open an issue.

    This release also updates Jiff's bundled copy of the [IANA Time Zone Database] to 2025c. See the 2025c release announcement for more details.

    Enhancements:

    • #412: Add Display, FromStr, Serialize and Deserialize trait implementations for jiff::civil::ISOWeekDate. These all use the ISO 8601 week date format.
    • #418: Add some basic predicates to jiff::Error for basic error introspection.
    • #453, #454: Switch to structured error handling internally.
    • #456, #457, #458: Various improvements to binary size.
    Open source →
  20. 0.2.16 07 Nov 2025
    Release notes

    This release contains a number of enhancements and bug fixes that have accrued over the last few months. Most are small polishes. A couple of the bug fixes apply to panics that could occur when parsing invalid TZ strings or invalid strptime format strings.

    Also, parsing into a Span should now be much faster (for both the ISO 8601 and "friendly" duration formats).

    Enhancements:

    • #298: Add Serde helpers for (de)serializing std::time::Duration values.
    • #396: Add Sub and Add trait implementations for Zoned (in addition to the already existing trait implementations for &Zoned).
    • #397: Add BrokenDownTime::set_meridiem and ensure it overrides the hour when formatting.
    • #409: Switch dependency on serde to serde_core. This should help speed up compilation times in some cases.
    • #430: Add new Zoned::series API, making it consistent with the same API on other datetime types.
    • #432: When lenient mode is enabled for strftime, Jiff will no longer error when the formatting string contains invalid UTF-8.
    • #432: Formatting of %y and %g no longer fails based on the specific year value.
    • #432: Parsing of %s is now a bit more consistent with other fields. Moreover, BrokenDownTime::{to_timestamp,to_zoned} will now prefer timestamps parsed with %s over any other fields that have been parsed.
    • #433: Allow parsing just a %s into a Zoned via the Etc/Unknown time zone.

    Bug fixes:

    • #386: Fix a bug where 2087-12-31T23:00:00Z in the Africa/Casablanca time zone could not be round-tripped (because its offset was calculated incorrectly as a result of not handling "permanent DST" POSIX time zones).
    • #407: Fix a panic that occurred when parsing an empty string as a POSIX time zone.
    • #410: Fix a panic that could occur when parsing %: via strptime APIs.
    • #414: Update some parts of the documentation to indicate that TimeZone::unknown() is a fallback for TimeZone::system() (instead of the jiff 0.1 behavior of using TimeZone::UTC).
    • #423: Fix a panicking bug when reading malformed TZif data.
    • #426: Fix a panicking bug when parsing century (%C) via strptime.
    • #445: Fixed bugs with parsing durations like -9223372036854775808s and -PT9223372036854775808S.

    Performance:

    • #445: Parsing into Span or SignedDuration is now a fair bit faster in some cases.
    Open source →
  21. 0.2.15 13 Jun 2025
    Release notes

    This release fixes a bug where error values were being constructed during parsing even in the success case. This was a regression introduced in 0.2.14 as a result of trying to improve compilation times. Thankfully, fixing this regression doesn't seem to meaningfully impact the amount of IR generated by compiling Jiff.

    Bug fixes:

    • #385: Fixes a performance regression for parsing.
    Open source →
  22. 0.2.14 20 May 2025
    Release notes

    This release includes a smattering of bug fixes, and hopefully a small improvement to the time it takes to compile Jiff. Also, in this release, when TZ is set to a non-empty but invalid value, Jiff will always fall back to Etc/Unknown when using TimeZone::system(). This differs from previous behavior where Jiff would, in this case, attempt to read the system's default time zone. This change brings Jiff into consistency with existing Unix tooling like date, and is also arguably a better failure mode. That is, when TZ is set but invalid, we shouldn't silently fall back to the default system time zone, but instead do something that indicates something has potentially gone wrong.

    Enhancements:

    • #364: Jiff now falls back to Etc/Unknown for invalid TZ values.
    • #379: Improve compilation times.

    Bug fixes:

    • #365: Fixes a compile error in Jiff when only the tzdb-concatenated feature was enabled.
    • #366: Fixes slow initial Zoned::now() in environments where /usr/share/zoneinfo is on a very slow file system (like CI environments).
    • #376: Avoids searching for a tzdb at /usr/share/zoneinfo on Windows.
    Open source →
  23. 0.2.13 06 May 2025
    Release notes

    This release fixes a bug in a corner case where TimeZone::following could sometimes omit the last time zone transition. This could only happen in time zones that once had daylight saving time, but ended it. This did not have an impact on other Jiff APIs that handle daylight saving time.

    Bug fixes:

    • #362: Fix a bug where TimeZone::following could omit the last historical time zone transition.
    Open source →
  24. 0.2.12 03 May 2025
    Release notes

    This release fixes a couple bugs in Jiff's parser. In particular, a regression was introduced in jiff 0.2.11 where its RFC 2822 parser could panic on some inputs. Previous releases of Jiff are unaffected.

    Bug fixes:

    • #357: Fix a bug where parsing 1970-06-01T00-00:45:00[Africa/Monrovia] succeeded but it should fail.
    • #359: Fix a bug where the RFC 2822 parser could panic on some inputs.
    Open source →
  25. 0.2.11 01 May 2025
    Release notes

    This release includes new APIs for customizing Jiff's strtime behavior along with a few minor bug fixes. Jiff's strtime formatting API has also been optimized. It's about twice as fast as it was.

    This release also coincides with the publication of jiff-icu 0.2.0-beta.2, which has support for icu 2.0.0-beta.2.

    Enhancements:

    • #338: Add support for the %c, %r, %X and %x conversion specifiers.
    • #341: Add support for %q in jiff::fmt::strtime (prints quarter of year).
    • #342: Add support for %::z and %:::z in jiff::fmt::strtime.
    • #344: Add support for %N in jiff::fmt::strtime (alias for %9f).
    • #350: Add a "lenient" mode for strtime formatting APIs that ignores most errors.

    Bug fixes:

    • #328: Document default precision behavior of Display impls for datetime types.
    • #340: Allow whitespace in more places in RFC 2822 parser (improves spec compliance).
    • #346: TimeZone::get("UTC") should now always return TimeZone::UTC.

    Performance:

    • #338: Jiff's strftime APIs are now approximately twice as fast as they were. Performance should be comparable to chrono and time's prebuilt APIs.
    Open source →
  26. 0.2.10 21 Apr 2025
    Release notes

    This release includes a bug fix for parsing Tuesday when using %A via Jiff's strptime APIs. Specifically, it would recognize Tueday instead of Tuesday.

    Bug fixes:

    • #333: Fix typo in strptime parsing from Tueday to Tuesday.
    Open source →
  27. 0.2.9 19 Apr 2025
    Release notes

    This release includes a bug fix that, in debug mode, could result in datetime types having different hashes for the same value. This could cause problems, for example, if you are using datetimes as keys in a hash map. This problem didn't exist when Jiff was compiled in release mode.

    This release also improves the panic message shown when the js feature isn't enabled and the current time is requested on wasm32-unknown-unknown targets.

    Enhancements:

    • #296: Provide a better panic message when Zoned::now() fails on WASM.

    Bug fixes:

    • #330: Fix bug where Hash on datetime types could yield different hash values for the same underlying date/time.
    Open source →
  28. 0.2.8 13 Apr 2025
    Release notes

    This release fixes a bug where the constructors on SignedDuration for floating point durations could panic (in debug mode) or produce incorrect results (in release mode). This bug only impacts users of the try_from_secs_{f32,f64} and from_secs_{f32,f64} methods on SignedDuration.

    Enhancements:

    • #326: Add an alternate Debug impl for SignedDuration that only shows its second and nanosecond components (while using only one component when the other is zero).

    Bug fixes:

    • #324: Fix a bug that could produce a panic or incorrect results in SignedDuration::(try_)?from_secs_{f32,f64}.
    Open source →
  29. 0.2.7 13 Apr 2025
    Release notes

    This release includes a bug fix that changes how an empty but set TZ environment variable is interpreted (as indistinguishable from TZ=UTC). This also includes a new enabled by default create feature, perf-inline, which allows toggling Jiff's use of inline(always). This may help improve compile times or decrease binary size.

    Enhancements:

    • #320: Remove some internal uses of generics to mildly improve compile times.
    • #321: Add perf-inline crate feature for controlling inline(always) annotations.

    Bug fixes:

    • #311: Make TZ= indistinguishable from TZ=UTC.
    Open source →
  30. 0.2.6 07 Apr 2025
    Release notes

    This release includes a few bug fixes and support for discovering the IANA Time Zone Database automatically on Illumos.

    Enhancements:

    • #315: Add support for automatically finding the tzdb on Illumos.

    Bug fixes:

    • #305: Fixed Zoned rounding on days with DST time zone transitions.
    • #309: Fixed bug where TimeZone::preceding could omit historical time zone transitions for time zones that have eliminated DST in the present.
    • #312: Fixed nth_weekday_in_month, where it would sometimes incorrectly return an error.
    Open source →
  31. 0.2.5 23 Mar 2025
    Release notes

    This release updates Jiff's bundled copy of the [IANA Time Zone Database] to 2025b. See the 2025b release announcement for more details.

    Enhancements:

    • #300: Update jiff-tzdb to 2025b.
    Open source →
  32. 0.2.4 10 Mar 2025
    Release notes

    This is another small release that fixes a problem where Jiff could break builds if they relied on inference for integer comparisons. Specifically, Jiff uses internal trait impls to make comparing its internal ranged integers more convenient. But Rust the language has no concept of "internal" trait impls, and thus this can impact type inference. If code was written in a way that relies on a singular trait impl that is available, then adding Jiff to the project can cause it to break.

    This isn't arguably Jiff's fault per se, but since these trait impls were just about internal convenience and not essential to Jiff's design, we adopt a pragmatic approach and just remove them.

    Bug fixes:

    • #293: Remove internal trait impls that can cause breaks due to inference failures.
    Open source →
  33. 0.2.3 07 Mar 2025
    Release notes

    This is a small release that fixes a bug in the handling of POSIX time zones in some cases. Specifically, the implementation of Date::yesterday was wrong when the date was the first of the month. This was a regression introduced in 0.2.2 and was not present in older releases. More test coverage has been added.

    Bug fixes:

    • #290: Fix bug in implementation of Date::yesterday.
    Open source →
  34. 0.2.2 06 Mar 2025
    Release notes

    This release of Jiff includes a new opt-in proc macro for embedding a TimeZone into your binary. Just enable Jiff's static feature, and this will print the current time in the America/New_York time zone:

    use jiff::{
        tz::{self, TimeZone},
        Timestamp,
    };
    
    fn main() {
        static TZ: TimeZone = tz::get!("America/New_York");
        let zdt = Timestamp::now().to_zoned(TZ.clone());
        println!("{zdt}");
    }
    

    This enables TimeZone to be meaningfully used in core-only environments, even when dynamic memory allocation isn't available.

    This release also features a number of performance improvements for time zone lookups. In some cases, the improvement is significant (by an order of magnitude).

    Additionally, the IANA Time Zone Database embedded into jiff-tzdb now uses "rearguard" semantics. This means that the boolean flag indicating whether daylight saving time is active or not (only accessible via TimeZone::to_offset_info) will respect the actual definition of daylight saving time. (This is relevant, for example, for time zones like Europe/Dublin, where their summer time is legally known as their standard time, but is in effect daylight saving time.)

    Enhancements:

    • #256: Add tz::{get,include} macros for time zone support in core-only environments.
    • #258: Switch to rearguard tzdb data in jiff-tzdb and document it.
    • #259: De-duplicate TZif data in jiff-tzdb.
    • #273: Add "crate features" documentation to jiff-sqlx and jiff-diesel.
    • #277: Document semver guarantee for error conditions on Timestamp constructors.
    • #277: Greatly optimize time zone lookups (for both timestamps and civil datetimes).

    Bug fixes:

    • #261: Improve the documentation for ZonedWith::nanosecond and ZonedWith::subsec_nanosecond.
    Open source →

Every package, every release, already written down.

The archive is open and free. Watching your own project is what we are building next.

Browse the archive