Skip to content

Compatibility

Implementation

cl-process-kit targets SBCL only. It is not portable Common Lisp and does not aim to be: sb-ext, sb-posix, sb-thread, and sb-alien are used throughout, and the native spawn and PTY backends under native/ are POSIX-specific C. Other Common Lisp implementations are out of scope.

Platforms

Platform Status
x86_64-linux Verified on every push and pull request by CI
aarch64-darwin Declared by the flake and exercised locally; not covered by CI

Both platforms are declared in flake.nix's systems, but the check job in .github/workflows/ci.yml runs on ubuntu-latest and does not pass --all-systems, so only x86_64-linux is verified automatically. A change that only builds on macOS can therefore still break Linux, and the reverse is caught only when someone runs the suite on a Mac.

Running on both is worth the effort, because process semantics diverge exactly where this library works: signal delivery, process-group reaping, and whether closing a descriptor interrupts a thread already blocked reading it (macOS and the BSDs do; Linux does not). Two defects shipped in 0.2.0 were invisible on macOS and reproducible on Linux — see 1.0.0's ### Correctness notes in the release notes.

Seven process-group tests are it-skipped under #+linux; see Development for why, and for how to run the Linux suite locally in a container.

Stability

The current exported API is the supported API for this release line. The release does not ship aliases for older release lines. Symbols that are not exported from the process-kit package are internal and may change in any release, including the %-prefixed helpers that appear in backtraces.

Consumers should depend on the current exported interface and pin a release when they need reproducible behavior; this page documents supported implementation and platform boundaries, not an older API promise.

The optional cl-process-kit/pty system depends on cl-tty-kit and on a native shared library that is not built by default. It is versioned with the core system but its API is younger and correspondingly less settled.