Skip to content

About

Integration + upstream-archaeology court for the Rust-native tz suite: maps the eggert/tz surface to 14 published crates and proves full coverage.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

1 Commit

Folders and files

Repository files navigation

tzsuite-rs

The integration and upstream-archaeology court for the Rust-native tz suite. It is not another port — it verifies the suite as a coherent whole and emits an archaeology ledger over the upstream eggert/tz tree, showing which C/AWK/KSH code surfaces have Rust counterparts, which data/spec surfaces are consumed, and which build/documentation surfaces are intentionally not ports. Coverage is demonstrated, not asserted.

$ tzsuite report
# … crate↔upstream matrix (14 crates) …
# … archaeology ledger over all 67 upstream files (7-bucket partition) …
# verdict: PASS (14/14 required code/script surfaces ported)

Commands

tzsuite report                  # matrix + ledger summary + verify (default)
tzsuite matrix                  # the 14-crate crate↔upstream table
tzsuite ledger [--upstream DIR] # every upstream file → typed disposition (+ bucket summary)
tzsuite verify [--upstream DIR] [--format json]   # coverage receipt (exit 1 on a gap)

Without --upstream, the committed pinned filelist (tzdb-2026b) is used; with it, any live tree.

The suite (14 published crates)

role crate → upstream
producer ziguard-rs→ziguard.awk · zishrink-rs→zishrink.awk
source-qa checktab-rs·checklinks-rs·checknow-rs·leapseconds-rs
utility tzselect-rs→tzselect.ksh · tzdate-rs→date.c
compiler zic-rs→zic.c
witness zdump-rs→zdump.c
runtime localtime-rs→localtime.c · strftime-rs · asctime-rs · difftime-rs

Archaeology ledger

Every upstream file is classified into exactly one of seven buckets: ported_as_crate · covered_as_input_data · covered_as_spec_or_doc · covered_as_build_or_release_machinery · intentionally_not_ported · future_candidate · not_applicable. Over tzdb-2026b's 67 files: 14 ported · 20 input · 23 spec/doc · 2 build · 2 intentionally-not-ported (private.h, workman.sh) · 0 future · 6 metadata — a complete partition. An unrecognized future file defaults to not_applicable with a "review on next release intake" note, so release drift is surfaced, never silently dropped.

The required code/script surfaces are the Makefile's LIBSRCS + NONLIBSRCS + NEWUCBSRCS + AWK_SCRIPTS + tzselect.ksh (14). tzsuite verify proves all 14 map to a ported_as_crate disposition. workman.sh (a troff→.txt manpage formatter) is in SOURCES but is build/doc machinery — see reports/workman-archaeology/ (WORKMAN-ARCHAEOLOGY.1).

Live integration

lab/run-suite.sh runs each present sibling crate's own self-contained test gate (admitting each crate's receipt; it does not re-run the heavy per-crate lab/oracle sweeps, which need each crate's gitignored admitted bundle). Last run: 14/14 crates green, 683 tests, 0 failures (reports/RECEIPT-TZSUITE-RS-1.md).

Claim boundary

tzsuite-rs does not create timezone policy, civil-time truth, or a monolithic libc replacement. It is an integration and archaeology harness. Not IANA authority, not an official tzcode replacement, not the runtime libraries themselves (each runtime crate states its own scope).

License

Apache-2.0. Contains no upstream code; it maps and classifies the upstream surface.

About

Integration + upstream-archaeology court for the Rust-native tz suite: maps the eggert/tz surface to 14 published crates and proves full coverage.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages