Skip to main content

Module timeline

Module timeline 

Source
Expand description

SegmentTimeline as a lazy run table (ISO/IEC 23009-1 5.3.9.6).

A timeline is never expanded into one entry per segment: each S becomes one run (first time, first number, duration, count) and a segment is found by binary search. A @r of four billion therefore costs one run; the total is still bounded by crate::limits::MAX_TIMELINE_SEGMENTS so index arithmetic cannot overflow.

Rules (5.3.9.6.1, restated in private/specs-verified/dash/docs-specs/23009-1/05-3-9-6-segment-timeline.md): @t is absolute and never smaller than the previous run’s end; absent, a run starts where the previous ended (the first at 0); @n restarts the numbering; @r >= 0 gives r + 1 segments; a negative @r repeats up to the next S@t, or for the last S to the Period end, as ceil((end - time) / d) (the spec prints no rounding rule; this is the reading the workspace’s former second reader used, pinned by vectors::timeline_numbers_gaps_negative_r_and_n).

Structs§

TimelineIndex
The lazily expanded timeline.
TimelineSegment
One segment of a timeline.