what runs where, and what does not. a platform is supported when real CI builds and tests it; anything else is best-effort, and this file says which.
| platform | compiler | status |
|---|---|---|
| linux x86-64 | gcc, clang | supported: full CI, sanitizers, release artifacts |
| macOS arm64 | clang | supported: CI builds, runs every suite, ships a tarball |
| windows x86-64 | mingw-w64 gcc (MSYS2 MINGW64) | supported: CI builds and runs the suites, ships a tarball |
MSVC is not targeted: the codebase is C11 with POSIX gaps closed by
_WIN32 branches, and the Windows path is validated against mingw-w64
headers. the MSYS shell's emulated gcc is not a Windows result either;
CI names the mingw compiler explicitly so a PATH change cannot silently
substitute the emulated one.
Linux and macOS need a C11 compiler and make:
make releaseWindows needs MSYS2 with the MINGW64 toolchain:
pacman -S base-devel mingw-w64-x86_64-gcc mingw-w64-x86_64-make
make release CC=x86_64-w64-mingw32-gccthe language, the bytecode verifier, the garbage collector, the
standard library in lib/, the package manager's path dependencies,
flint fmt, flint test, and the C embedding ABI. integer printing
uses int64_t throughout, because Windows long is 32 bits and the
%ld it used to print through is undefined behaviour there past 2^31.
paths in flint source use / on every system. paths the platform
hands flint (the script argument, the executable's own location, the
working directory) may use \ on Windows, and the module resolver,
the project-root climb, and the stdlib locator all accept both.
each of these is a documented runtime error, not a missing function or a silent pretence:
process.run()andexec(): no fork, no pipes, no child."process.run() needs a POSIX system in this release."- git dependencies: the git subprocess is the same fork family.
pkg addof a URL fails; path dependencies work fully, lockfile content hashes included. http: plain sockets need Winsock andhttps://needs process spawning. requests return the usual{ok: false, error}table with"http is not supported on Windows in this release."flint syncdownloads: the curl/wget subprocess it uses.os.setenvwith an empty value: the system call deletes the variable instead of setting it, so the runtime returns false rather than reporting success and leavinghas()disagreeing.
process.fl asserts the refusal on Windows rather than being skipped:
the runner prefers a .expected.windows transcript beside the shared
one, so the suite is honest on both platforms and reports the same
count either way. every language test passes on all three systems, as
CI shows -- 157 of 157 on Linux, macOS, and Windows.
the VM uses nan-boxed values and requires a 64-bit host with pointers that fit in 48 bits. that holds on x86-64 and ARM64 on all three systems, and nowhere else is claimed.