Repository navigation
v0.0.1
0.0.1 (2026-10-24)
The first release: easing, springs, tweens and timelines driven by the
host's clock, with the same results on every platform.
Added
- Easings: Penner's power, sine, expo, circ, back, elastic and bounce
curves landing exactly on 0 and 1, CSS Easing Level 2's keywords,
cubic-bezier(),steps()with every jump position andlinear()
with points, rough easings from a seed, springs as easings and host
functions, each in the in, out, in-out and out-in modes, with even
tables andlinear()points fitted to a tolerance. - Springs in closed form, made from stiffness and damping, a frequency
and damping ratio, or a perceptual duration and bounce, with settling
times; decay from a rate or iOS's deceleration, landing on a chosen
end or held between bounds by a spring; iOS's rubber band; punch and
seeded shake, with the shake's noise alone for trauma-driven shakes. - Interpolation of numbers and vectors, colors in Oklab, OkLCh, linear
sRGB or sRGB as CSS Color 4 interpolates them, angles with CSS's hue
methods, rotations by slerp, integers, discrete values, scales in
their logarithm, and van Wijk and Nuij's smooth zoom and pan. - Keyframe paths and tracks of every value kind: linear, step, Bezier,
centripetal Catmull-Rom and monotone segments, at constant speed if
asked, with the path's direction and angle. - Web Animations' timing with a playback rate per node, a repeat delay
and a choice of how reverse iterations ease; staggers over a row or a
grid from any origin. - A context of targets in one block from the host's allocator, with
fixed capacities, grown only when the host asks, and transitions by an
easing, a spring or a decay that start from a target's current value
and velocity, shortened on reversal as CSS Transitions does, with
durations set from a measured distance. - Clips of tracks on nested timelines with positions, labels and marks;
players with Web Animations' play, pause, reverse, finish, cancel,
seek and rate; layers composed by replace and add with weights;
incremental tracks; events as counted records in a bounded queue. - Reduced motion, under which what can finish finishes at once and
what is marked essential plays on. - Clips' players run on the host's task system with the same results
as on one thread, and players of one clip in step share their work. - Results that are the same bits on x86-64, 32-bit x86 with SSE2,
AArch64 and WebAssembly, whatever the host's floating-point
environment. - A static or shared library, a CMake package and a pkg-config module;
Linux, macOS, Windows withclang-cl, and WebAssembly.
Changed
- Against the withdrawn 1.0 releases: sine and cosine are within 1 ulp
for every finite argument, so results change where an argument
reaches 1.5 * 2^20 radians, which were bounded but inexact before:
an underdamped spring sampled that far into its oscillation, an
elastic easing of a very short period, and an OkLCh color mix, a
sine easing or a slerp extrapolated that far. - Breaking against the withdrawn 1.0 releases:
mtwnGetClipBytesnow
takes the context as its first argument; the transition, clip, clip
track, clip timeline and player defs lose theirversionfield, the
transition def's value methods move aftertarget, the player def's
bindingCountbeforebindings, the clip track def'skeyframeCount
afterslot, and the player, clip track and timeline defs' reserved
bytes grow. Only the context def carries the ABI version, which holds
the whole release before 1.0.