Compatibility

Carrick emulates the Linux syscall interface, not the Linux kernel. This means compatibility is a spectrum, not a binary. We run standard test suites continuously and publish the results so you can assess whether your workload will work.

Go runtime test suite

~876 / 880 standard-library test binaries pass. verified

Subsystem detail:

Known gaps:

Source: docs/conformance-coverage.md in the carrick repo.

libuv test suite

498 / 507 standalone libuv tests pass (98.2%). verified

libuv exercises the full async I/O surface: event loops, pipes, sockets, IPC, file system operations, pseudo-terminals, and timers. Nine carrick-only gaps remain (kill / sigchld signal delivery, SO_REUSEPORT, and io_uring); carrick also passes 14 tests the root Docker oracle fails.

Source: docs/nodejs-baseline/libuv-full.jsonl in the carrick repo.

Node.js & V8

node-core full plan: 5301 / 5304 (99.9%) on Node 24 and Node 26. The 3 fails are cosmetic stderr snapshots the Docker oracle also fails. verified

Subsystem detail:

Known gaps:

Source: docs/nodejs-baseline/ in the carrick repo.

LTP (Linux Test Project) syscall conformance

671 / 893 oracle-validated tests match (75%), against the current LTP 20260529 image. verified

This is the most granular measure of ABI fidelity. Breakdown by subsystem:

SubsystemPass rateNote
Scheduler78%sched_setaffinity, priority, yield
Timers83%clock_gettime, timerfd, nanosleep
Signals87%rt_sigaction, sigaltstack, sigpending
Filesystem86%open, read, write, stat, rename, link
Process73%fork, exec, wait, PID-namespace, credentials
Networking59%Socket translation is solid; gaps in raw/packet sockets
IPC43%SysV shm/sem/msg partially implemented
Memory management42%mmap/mprotect work; gaps in mremap, MADV_* flags

Source: docs/ltp-baseline/ in the carrick repo.

CPython test-suite parity

425 / 492 regrtest modules match (86.4%). verified nuanced

The remaining 18 differing modules are mostly /proc-dependent or hit specific syscall-coverage gaps:

Source: docs/cpython-baseline/ in the carrick repo.

End-to-end workloads

WorkloadStatusNotes
apt-get install hello works Full package lifecycle including dpkg scripts
Python http.server works Serves concurrent requests from the host
Interactive shell (-t) works Real PTY, job control, Ctrl-C/Ctrl-Z
OCI image pull + run works Standard Docker Hub / registry images
Go binaries works Statically linked Go executables run reliably
Node.js & V8 works Node 24/26. node-core full plan: 5301/5304 (99.9%).
libuv works 498/507 tests pass (98.2%). Event loops, pipes, IPC, epoll→kqueue.
gdb / delve not yet ptrace is Phase-1 only
x86_64 Linux binaries on macOS (Rosetta 2) verified amd64 images run via --platform linux/amd64 — glibc (Debian/Ubuntu, incl. multi-call coreutils) and static-musl (Alpine: busybox, apk) alike. Translated (slower than native arm64) with lighter automated coverage. Requires Rosetta for Linux (softwareupdate --install-rosetta).

Platform backends

These baselines are the mature macOS / Hypervisor.framework path running AArch64 Linux guests. The runtime is also being brought up on other hosts — Linux/KVM, FreeBSD/bhyve, and NetBSD/NVMM — with native x86_64 guests through a shared carrick-x86 engine. Those lanes carry their own per-backend baseline overlays and are not yet at parity with the macOS path. The --platform linux/amd64 row above is the separate macOS Rosetta 2 translation path, not a native x86_64 backend. See the HAL & platform architecture doc for current status.

Reporting issues

If you hit a binary that doesn't work, carrick compat-report will show which syscalls the binary uses and which aren't implemented. File an issue on GitHub with the report output and the binary (or reproduction steps).