v0.5.0
Added
-
Deterministic property test suite (
tests/prop_deterministic.rs)-
Fixed coverage for boundary values, all 18 leap-second transitions, uniform
u64space sampling, and real IGS epochs -
Verified invariants for:
- GPS ↔ TAI roundtrip
- GPS ↔ Galileo / BeiDou roundtrips
- GPS ↔ UTC correctness outside leap windows
- Arithmetic laws (identity, associativity, double negation)
- Sub-second boundary correctness
- Leap-second ambiguity window correctness
-
-
Randomized property tests (
tests/prop_tests.rs) usingproptest- GPS domain random sampling
- bounded duration strategies to prevent overflow
- ±3s leap-second boundary testing
- strict ambiguity coverage rules (
Exactoutside leap windows)
-
CI test orchestration in
justfiletest-deterministictest-propstest-all
-
Compile-time leap second validation:
_ASSERT_FIRST_ENTRY(TAI−UTC = 19)_ASSERT_TABLE_INVARIANTS(strict monotonic +1 progression)_ASSERT_LAST_ENTRY(2017-01-01, TAI−UTC = 37)
-
Runtime leap second subsystem:
RuntimeLeapSeconds(fixed-capacity, heap-free,RUNTIME_CAPACITY = 64)from_builtin(),from_slice(),try_extend()LeapExtendError(NotStrictlyAscending,NonUnitIncrement,BufferFull)
-
Leap second API extensions:
LeapSeconds::last_update()LeapSeconds::current_tai_minus_utc()
-
Prelude expansion:
RuntimeLeapSeconds,LeapExtendError,LeapEntry,RUNTIME_CAPACITYgps_to_utc,utc_to_gps
-
Cross-verification test:
test_builtin_table_matches_iers_bulletin_c(full IERS Bulletin C validation)
-
#[must_use]enforcement across core API:Time,Duration,ConvertResult,GnssTimeError- all arithmetic and conversion APIs
- all critical accessors
-
#[non_exhaustive]added to:GnssTimeErrorConvertResultConversionKindScaleId
-
clippy.tomlintroduced as future lint extension point
Changed
-
Property testing architecture split:
- deterministic tests (no randomness, full reproducibility)
proptest-based randomized validation (host-only)
-
proptestdependency updated:default-features = falsefeatures = ["std"]
-
Leap second table fully validated against IERS Bulletin C (19 entries, verified)
-
Documentation updated:
- runtime extension policy
- compile-time invariants
- IERS monitoring notes (TAI−UTC = 37 as of 2026)
-
LeapSecondsAPI improved:from_slicealias added for clarity
-
Enabled crate-wide lint:
#![warn(clippy::must_use_candidate)]
-
Improved forward compatibility via
#[non_exhaustive] -
Strengthened developer diagnostics and API safety rules
Fixed
-
Corrected internal type documentation:
i64 → u64for internal time representation consistency