Expand description
§ucal-core — absolute time in Planck ticks
An unsigned integer count of Planck-time units since a stipulated datum, and a
positional calendar over that integer in base 5. Implements Part A of
RFC UCAL-1 for profile UC-1.
§What tick 0 is
Tick 0 is a stipulated datum, conventionally identified with the FLRW t→0 limit. It is exact by declaration and unrevisable within a profile. It is not a measurement, not a derivation, and not an observed event (Rule Q, N17).
The stipulation is a necessity rather than a shortcut, for three independent reasons, each sufficient:
- Exactness cannot come from measurement. The published age carries ±0.020 Gyr — about 1.17×10⁵⁸ ticks, 0.145% of the span. A datum inheriting that error bar would make every timestamp uncertain relative to zero.
- The t→0 limit is not an observable event; it is where the FLRW extrapolation’s coordinates degenerate, and classical time is undefined below roughly one tick.
- The extrapolation is model-dependent. Under inflation the FLRW t→0 limit is not a physical event at all.
This puts the datum in ordinary company: TAI’s 1958-01-01, the Julian Day epoch, the Unix epoch. The parallel to the SI second is exact — 9 192 631 770 caesium cycles was chosen to match the ephemeris second, and the definition does not inherit that provenance.
What a profile does assert about physics is carried separately, as
profile::Profile::big_bang_claim, and no arithmetic can consume it.
§What this crate does not contain
Rule A.2: no Earth-derived quantity is referenced, named or defined here. The
Julian year, the day, the hour and every civil calendar live outside, in
ucal-civil. The single exception is the declared bridge constant
(profile::Bridge), which exists precisely so that the boundary is visible.
Rule E: no floating-point type appears in any signature, field, constant or intermediate. A CI lint enforces it.
§Layout
backend— the integer backend and thebackend::TickIntsurface. Rule W keeps the domain[0, 2^512)on both backends.error— Appendix E diagnostics.tier— the5^(5k)grid (Rule G) and tier naming (Rule N).value—value::Instant,value::Delta,value::Windowand the inertvalue::SignedWindow.codec— the two text forms (§6, Rule D) and the Appendix F group codec.ident— canonical binary (§7.1) and UCID (§7.2), and the Rule S ordering property both depend on.locale— tier-name tables (Appendix D). Names are display-only (Rule N), so adding one cannot change what a value means.num— Appendix H: wideningmul_div, directedisqrt, exact rationals, interval arithmetic, continued fractions.profile—profile::UC1, the datum, and provenance.qualified—qualified::Kindand the calendar qualifier every local rendering must carry (§6.6, §13.4).
Rule S in one sentence: the binary form and UCID sort lexicographically in chronological order; the text forms do not, unless zero-padded to a fixed tier width.
Re-exports§
pub use backend::TickInt;pub use backend::Ticks;pub use backend::CANONICAL_BYTES;pub use backend::DOMAIN_BITS;pub use codec::Fmt;pub use codec::Form;pub use codec::parse;pub use codec::render;pub use error::Code;pub use error::TimeError;pub use error::Warning;pub use ident::Ucid;pub use ident::CROCKFORD;pub use ident::UCID_BITS;pub use ident::UCID_LEN;pub use locale::LocaleId;pub use num::isqrt_ceil;pub use num::isqrt_floor;pub use num::mul_div;pub use num::RatInterval;pub use num::Ratio;pub use num::cf_expand;pub use num::convergents;pub use profile::Bridge;pub use profile::Citation;pub use profile::Frame;pub use profile::MeasuredValue;pub use profile::Profile;pub use profile::Provenance;pub use profile::UC1;pub use qualified::CalendarIdentity;pub use qualified::CalendarQualifier;pub use qualified::Kind;pub use qualified::Qualified;pub use tier::Tier;pub use tier::TierName;pub use tier::TierTable;pub use tier::GROUP_BASE;pub use value::Delta;pub use value::Instant;pub use value::IntervalOrdering;pub use value::Precision;pub use value::Rounding;pub use value::Sign;pub use value::Signed;pub use value::SignedWindow;pub use value::Span;pub use value::Stated;pub use value::Window;
Modules§
- backend
- The integer backend.
- codec
- Text codecs (§6, Appendix F) — the two forms of one value (Rule D).
- error
- Diagnostics (Appendix E).
- ident
- Canonical binary (§7.1) and UCID (§7.2).
- locale
- Locale tables for tier names (Appendix D, Rule N).
- num
- Exact integer numerics (Appendix H).
- profile
- Profiles (§2, Rule P) and the datum (Rule Q).
- qualified
- Calendar-qualified renderings (§6.6, §13.4).
- tier
- The tier grid (§4, Rule G) and tier naming (Rule N).
- value
- The value types (§5):
Instant,Delta,Signed,SignedWindow,Window,Precision,Rounding.
Constants§
- RFC
- The RFC revision this crate implements.
- SPEC_
DELTAS - Deltas applied against the RFC text; see
spec/SPEC-DELTAS.md.