Platform support
Release targets, support tiers, filesystem semantics, and the exact meaning of tested support.
sqrail’s portable contract is the same on supported operating systems. A platform is called supported only after the bundled build, unit tests, Unicode-path end-to-end tests, interruption cleanup, no-overwrite race, install layout, and release packaging all pass on that target.
Tiers
| Tier | Target | CI runner | Release archive |
|---|---|---|---|
| 1 | Linux x86-64 | Ubuntu 24.04 x64 | .tar.gz |
| 1 | Linux Arm64 | Ubuntu 24.04 Arm64 | .tar.gz |
| 1 | macOS x86-64 | macOS 15 Intel | .tar.gz |
| 1 | macOS Arm64 | macOS 15 Arm64 | .tar.gz |
| 1 | Windows x86-64 | Windows 2025 x64 | .zip |
| 1 preview | Windows Arm64 | Windows 11 Arm64 public-preview runner | .zip |
| 2 | Linux/macOS with a packaged DuckDB shared library | Ubuntu 24.04 and macOS 15 | distribution-owned |
Windows Arm64 remains preview until GitHub’s hosted runner is generally available and repeated release builds establish equivalent reliability. Other POSIX systems and other C++20 toolchains may build from source, but are best-effort until they have a maintained CI lane. No FreeBSD, musl, 32-bit, or big-endian release artifact is currently claimed.
Filesystem and process semantics
- POSIX output files use owner read/write permissions and spill workspaces use owner-only directory permissions.
- Windows output files and spill workspaces receive a protected DACL granting the current user full access without inherited access rules.
- POSIX commits use a same-directory hard link followed by removal of the private temporary name. Filesystems without hard-link support fail closed.
- Windows commits use a no-replace, write-through move.
- Windows binaries opt into UTF-8 process paths and long-path awareness.
-
SIGINT/SIGTERMare supported on POSIX. Windows console Ctrl+C and Ctrl+Break are translated to the same structured interruption path.
Network filesystems can weaken durability or atomicity guarantees despite successful system calls. Release tests cover the hosted runner’s local filesystem; applications requiring crash-consistent remote storage should stage to local disk and copy the completed artifact separately.
What “tested” means
The repository defines the matrix, but a local checkout alone cannot prove every target. Before a release tag, all six bundled lanes, the system-DuckDB lanes, Clang static analysis, ASan/UBSan, ThreadSanitizer, both fuzz targets, and package reproducibility checks must be green for the exact commit. A signed annotated tag then rebuilds and attests each archive.