Every line here was run, not assumed: the binary was started on
that system and asked to check its own layout and execute the document's
scripts. Where the answer is no, it says why.
✓ run and checked
○ builds, or follows from what was measured
✗ known not to work
Linux
✓
Debian 11 · 12 · 13
layout clean, scripts running
✓
Ubuntu 20.04 · 22.04 · 24.04
layout clean, scripts running
✓
Fedora 41
JavaScriptCore comes inside webkit2gtk4.1 there
✓
CentOS 7 — glibc 2.17
the oldest C library the binary asks for, from 2012. Anything newer is in range
✓
Alpine and other musl systems
spark build linux-musl-x86_64 / -arm64; webkit2gtk-4.1 brings the engine
Windows
✓
Windows 10 · 11, x86_64
the target this is built and checked against
✓
Windows, 32-bit (win-x86)
280 KB, same layout, same scripts
○
Windows on ARM (win-arm64)
not run on real hardware here — and such a machine runs the x86_64 build under emulation anyway
○
Windows 7 · 8.1
the binary imports the Universal CRT, which ships with Windows only from 10. Earlier needs KB2999226, which Windows Update has delivered since 2015. Building against the older msvcrt instead would need a second toolchain: zig ships no import library for it
✓
Wine
how Windows is checked from a Mac. Its own JScript is below ES5, which is why the bundling step targets es5
macOS
✓
macOS 11 and later, Apple silicon
the machine this is developed on
○
macOS 11 and later, Intel
the universal binary carries the slice; not run on Intel hardware here
Windowing
✓
X11
what the Linux host talks to
✓
Wayland
through XWayland, which every desktop that defaults to Wayland installs
How it is checked
spark cross app/index.html
The same document through macOS, a Linux container and Wine, each asked
“is every widget where the layout put it?”, each leaving a screenshot
behind. The distribution table above comes from running the Linux binary in a
clean container of each — installing nothing but
libx11-6 libxft2 libfontconfig1, then adding the JavaScript engine
to see the scripts run.
The engine is opened, not linked. Debian and Ubuntu
call it libjavascriptcoregtk-4.1-0; Fedora ships it inside
webkit2gtk4.1. Spark opens it at run time under every name it is
known by — and a machine without it still starts and still shows the document,
with one line saying its scripts will not run.