Skip to content

v0.5.0

Choose a tag to compare

@MiCkEyZzZ MiCkEyZzZ released this 03 May 13:42

Added

  • Deterministic property test suite (tests/prop_deterministic.rs)

    • Fixed coverage for boundary values, all 18 leap-second transitions, uniform u64 space 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) using proptest

    • GPS domain random sampling
    • bounded duration strategies to prevent overflow
    • ±3s leap-second boundary testing
    • strict ambiguity coverage rules (Exact outside leap windows)
  • CI test orchestration in justfile

    • test-deterministic
    • test-props
    • test-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_CAPACITY
    • gps_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:

    • GnssTimeError
    • ConvertResult
    • ConversionKind
    • ScaleId
  • clippy.toml introduced as future lint extension point

Changed

  • Property testing architecture split:

    • deterministic tests (no randomness, full reproducibility)
    • proptest-based randomized validation (host-only)
  • proptest dependency updated:

    • default-features = false
    • features = ["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)
  • LeapSeconds API improved:

    • from_slice alias 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 → u64 for internal time representation consistency