SparkStartGuideReferencePlatformsCompare GitHub

Where it runs

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 · 13layout clean, scripts running
Ubuntu 20.04 · 22.04 · 24.04layout clean, scripts running
Fedora 41JavaScriptCore comes inside webkit2gtk4.1 there
CentOS 7 — glibc 2.17the oldest C library the binary asks for, from 2012. Anything newer is in range
Alpine and other musl systemsspark build linux-musl-x86_64 / -arm64; webkit2gtk-4.1 brings the engine

Windows

Windows 10 · 11, x86_64the 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.1the 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
Winehow 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 siliconthe machine this is developed on
macOS 11 and later, Intelthe universal binary carries the slice; not run on Intel hardware here

Windowing

X11what the Linux host talks to
Waylandthrough 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.