Skip to content

v0.3.0, the charts

Choose a tag to compare

@tamnd tamnd released this 04 Sep 08:54
· 50 commits to main since this release
v0.3.0
4b18e6b

The M3 mirror release. All 154 charts draw, and the same numbers produce the same bytes on Linux, macOS and Windows.

That last part is the milestone. The original's chart layer writes a matplotlib script, shells out to python3 and deletes the script, and what comes back depends on which fonts the machine happens to have, so two people running it produce two different pictures and neither can check the other. A chart drawn here is a function of its data and nothing else, and CI proves it on three operating systems on every push rather than asserting it in a README.

The renderer is written here, which was not the plan. Both ways plotters can draw text are closed to us: font-kit resolves system fonts, which is the thing being removed, and ab_glyph sits on a crate cargo-deny already fails the build on. What was left turned out to be small, because a chart is only two kinds of shape. Rectangles have an exact coverage per pixel with no sampling in it, and glyphs are outlines that skrifa reads out of the fonts already embedded here and zeno fills in scalar arithmetic with no SIMD path to diverge on.

The check that mattered most is the one that says the fixtures were not fooling us. All 154 charts drawn straight from the original's published output.json in upstream mode are byte for byte identical to the 154 drawn from the golden series committed here.

Two divergences came out of this release. Every chart is 1880 by 1130, where the original's own 154 come out in three widths because it crops each one to whatever it turned out to need. And every chart drawn from real measurements carries a line along the bottom naming the profile and the machine, because a throughput chart that does not say which box it came off invites a comparison that is not valid. Both are written down in divergences.md as D14 and D15.

Nothing has been measured yet. The runner is M5 and the first sweep is M6, so every chart drawn so far is drawn from the original's numbers.