Skip to content

v0.15.4

Choose a tag to compare

@rawframe-release rawframe-release released this 02 Nov 23:48
0016bf5

0.15.4 (2026-11-02)

This release keeps linear() easings monotonic where mtwnIsEasingMonotonic says they are, which a timeline's crossing count relies on (#243). A sample inside a segment could land an ulp past the segment's later point and step down at it. A sample moves only there, by at most about an ulp, so only hosts sampling linear() just below a point see it.

Fixed

  • A linear() sample no longer passes its segment's later point (#243). A segment's sample is a + share * (b - a), and the rounded difference could carry it an ulp past b where the share is 1 or rounds to it: linear(0, 0.03 1%, 0.3 3%, 1) gave 0.30000000000000004 just below 3% and 0.3 at 3%. A timeline eased by such a curve could count a mark twice, depending on where the frames fell. Inside a segment the sample is now held at the point's output where it would pass it.
    • mtwnSampleEasing, and the tracks, transitions and timelines eased by linear(), its fits and rough easings included, change only at those progresses, just below a point, by at most about an ulp of the segment's larger output.
    • A clip's records change only where a timeline eased by such a linear() had a frame land there: a mark it crossed twice is now crossed once.