Skip to content

v2.9.0

Choose a tag to compare

@markusmobius markusmobius released this 13 Sep 18:04

Compatibility

Rust-Dateutil 2.9.0 implements the python-dateutil 2.9.0.post0 subset needed by HtmlDate and DateParser, matching Go-Dateutil v2.9.0. It is not a full dateutil port. The Python .post0 suffix and the precise supported scope are documented in README and UPSTREAM.md.

Included Functionality

  • Default English, non-fuzzy parsing: Python Unicode tokenization, source-ordered field resolution, explicit defaults and parser year, calendar validation, decimal clock fractions, timezone awareness and offsets.
  • Relative calendar/time arithmetic: month-end clamping, leap years, mixed units, fractional smaller units, microsecond rounding, range checks, and wall-time DST behavior.
  • Native Rust with no Go/Python runtime, unsafe Rust, or internal worker threads. Callers own concurrency.

Tests Included

  • 3,273 lexer comparisons against Python token streams.
  • 3,273 parser comparisons against Python dates/rejections, including exact calendar/clock fields, microseconds, awareness, and offsets.
  • 146 relative-arithmetic comparisons, including leap years, month ends, fractional/mixed units, overflows, and DST gaps/folds.

Tests, saved independent Python fixtures, the pinned reference generator, and the upstream license ship with the source. Ordinary cargo test --locked needs no Python or sibling checkout. The optional generator pins CPython 3.14.6, python-dateutil 2.9.0.post0, source hashes, Unicode16 and reference timezone data; regeneration was byte-identical.

All three suites and the README doctest passed on Linux and native Windows/GNU with Rust1.98.1. Strict Clippy and formatting passed. The same tests passed from the actual packaged crate. Hosted CI covers Linux and Windows/MSVC; that is distinct from local Windows/GNU qualification.

Installation

[dependencies]
rust-dateutil = { version = "=2.9.0", git = "https://github.com/markusmobius/rust-dateutil", tag = "v2.9.0" }

Requires Rust1.98.1 or later. GitHub source release only; not published to crates.io. See README for unsupported APIs and timezone/error representation boundaries. Rust-DateParser integration and the v1.4.5-to-v1.4.6 performance gate are separate and are not claimed complete by this release.