Cross-platform
Off macOS the port computes with its own math functions, written in Rust and compiled into the program, so the result should not depend on the operating system, the CPU or the browser. CI checks it on every push: each platform below renders every corpus input and the gallery samples, and the check fails unless all of them write the same bytes. The drawings on this page are those platforms' files, all drawn by your browser, so one renderer and one set of fonts: any difference you could see would be a difference in the files.
From this CI run at commit 7e789f5.
| Platform | Toolchain | Corpus inputs equal to Linux x86-64 | Samples |
|---|---|---|---|
| Linux x86-64 | rustc 1.99.1 (58cf8f9c3 2026-10-13) | 2,591 / 2,591 | 30 / 30 |
| Linux arm64 | rustc 1.99.1 (58cf8f9c3 2026-10-13) | 2,591 / 2,591 | 30 / 30 |
| Windows x86-64 | rustc 1.99.1 (58cf8f9c3 2026-10-13) | 2,591 / 2,591 | 30 / 30 |
| macOS arm64 (portable-math) | rustc 1.99.1 (58cf8f9c3 2026-10-13) | 2,591 / 2,591 | 30 / 30 |
| WebAssembly (Node.js) | Node.js v22.23.3 | 2,591 / 2,591 | 30 / 30 |
A corpus input counts as equal when the hash of its -Tsvg output (every graph in the file) is the same; a sample, when the whole SVG file is. macOS appears with --features graphviz-pure-core/portable-math: by default the macOS build uses Apple's libm, to match C on macOS byte for byte (why).
Compare two platforms
A onlyB onlyboth: in register
Rasterising…
A ink onlyB ink onlysame pixel, faded
Every sample, every platform
Select a row to load it into the viewer. Each cell is that platform's file, with the start of its SHA-256.
76704f31d576704f31d576704f31d576704f31d576704f31d53f59e604ba3f59e604ba3f59e604ba3f59e604ba3f59e604ba256e5c5621256e5c5621256e5c5621256e5c5621256e5c56211a2b744ef41a2b744ef41a2b744ef41a2b744ef41a2b744ef476683d32b776683d32b776683d32b776683d32b776683d32b72c7ebee57c2c7ebee57c2c7ebee57c2c7ebee57c2c7ebee57c92c21cbf3192c21cbf3192c21cbf3192c21cbf3192c21cbf317917de2f307917de2f307917de2f307917de2f307917de2f306aeb9bedf26aeb9bedf26aeb9bedf26aeb9bedf26aeb9bedf2f9f71a6b9df9f71a6b9df9f71a6b9df9f71a6b9df9f71a6b9dc1c67a7131c1c67a7131c1c67a7131c1c67a7131c1c67a713121b65113fa21b65113fa21b65113fa21b65113fa21b65113fa1ed20b81cc1ed20b81cc1ed20b81cc1ed20b81cc1ed20b81cca7030033b1a7030033b1a7030033b1a7030033b1a7030033b1c37ea615d0c37ea615d0c37ea615d0c37ea615d0c37ea615d09e00e699a59e00e699a59e00e699a59e00e699a59e00e699a521496a1dcf21496a1dcf21496a1dcf21496a1dcf21496a1dcf7cc34e3b887cc34e3b887cc34e3b887cc34e3b887cc34e3b881c03567b1e1c03567b1e1c03567b1e1c03567b1e1c03567b1efaa5c1ef47faa5c1ef47faa5c1ef47faa5c1ef47faa5c1ef47159fb030a2159fb030a2159fb030a2159fb030a2159fb030a223fa2a69ef23fa2a69ef23fa2a69ef23fa2a69ef23fa2a69efc6cff0844bc6cff0844bc6cff0844bc6cff0844bc6cff0844bc44b70426fc44b70426fc44b70426fc44b70426fc44b70426f982f00e667982f00e667982f00e667982f00e667982f00e667975be16873975be16873975be16873975be16873975be16873a2c679cb31a2c679cb31a2c679cb31a2c679cb31a2c679cb3157569817ad57569817ad57569817ad57569817ad57569817ade3ad12e8c1e3ad12e8c1e3ad12e8c1e3ad12e8c1e3ad12e8c178f8c59b4778f8c59b4778f8c59b4778f8c59b4778f8c59b47How this is made
.github/workflows/cross-platform.ymlrunsscripts/cross-platform-render.shon GitHub's Linux x86-64, Linux arm64, Windows and macOS runners, andscripts/cross-platform-wasm.mjswith the WASM package under Node.js.scripts/cross-platform-compare.pycompares every platform's corpus hashes and sample files, fails the run on any difference, and writes the data for this page.- Test inputs are checked out byte for byte on every platform (
.gitattributes), since Windows would otherwise convert their line endings.