Skip to content

tl v0.6.0

Choose a tag to compare

@IAFahim IAFahim released this 09 Sep 17:33
· 1267 commits to main since this release
f3f91fe

v0.6 turns the compiled timeline path into a direct generated kernel. Runtime and compiled timelines now share one static per-work ITrack<TTrack,TClip,TInput,TResult> contract, and named ITimeline<TTrack,TClip> partial structs are both the authoring definition and the generated API.

Measured on .NET 10.0.11 and an i9-14900K:

Operation Runtime interpreter Compiled kernel Speedup
Full consumer, scalar 15.340 ns 4.489 ns 3.42x
Full consumer, batch 8 11.231 ns 4.104 ns 2.74x
Sum consumer, scalar 11.157 ns 2.473 ns 4.51x

Every measured arm allocated zero managed bytes. A narrower predictable batch experiment reached 1.195 ns/tick, establishing that the 1–2 ns throughput tier is feasible when the operation algebra is restricted.

This release also moves runtime timeline retention into one explicitly owned native block, removes generated managed arrays, adds scalar and batch specialization, bounds large generated source with compact per-track interval programs, and makes generator output deterministic and cacheable across unchanged builds and preprocessor configurations.

This is a pre-1.0 breaking release. Tracks<TTrack,TClip>, TrackWork<TTrack,TClip>, scratch overloads, and separate compiled consumer interfaces are removed. Existing consumers move their loop body into static ITrack.Forward and ITrack.Backward operations. The legacy Build(...).Compile() declaration remains for one migration release.

Release gates passed: 43 runtime tests, 60 generator tests, JIT and NativeAOT parity, runtime NativeAOT, all executable verification suites, package isolation, deterministic cache reuse, and the 178,299/200,000-byte source budget.