Skip to content

Installation

cl-process-kit targets SBCL only (it relies on sb-ext:run-program and SBCL-specific FFI for process-group/PTY handling). Two install paths are supported: the Nix flake, and a plain ASDF/local checkout.

Nix flake

nix flake check github:nerima-lisp/cl-process-kit   # run the test suite
nix build github:nerima-lisp/cl-process-kit          # build the ASDF system
{
  inputs.cl-process-kit = {
    url = "github:nerima-lisp/cl-process-kit/v3.4.0";
    inputs.nixpkgs.follows = "nixpkgs";
  };
}

Pin a release tag rather than following the default branch, the same way this project pins its own cl-boundary-kit/cl-log-kit/cl-host-kit/ cl-date-kit/cl-concurrent-kit/cl-tty-kit/cl-codec-kit/ cl-weave inputs in flake.nix -- an unpinned github: reference tracks whatever is on main, which can change under a consumer without warning.

Pull the packaged system or devShell from cl-process-kit.packages.<system>.cl-process-kit / cl-process-kit.devShells.<system>.default. The optional native PTY backend is available as cl-process-kit.packages.<system>.cl-process-kit-pty.

The flake pins its own cl-boundary-kit, cl-log-kit, cl-date-kit, cl-concurrent-kit, cl-host-kit, cl-tty-kit, cl-codec-kit, and cl-weave (test-only) dependency versions, so nix flake check / nix build are the most reproducible way to consume the library.

ASDF / local checkout

git clone https://github.com/nerima-lisp/cl-process-kit.git

Point CL_SOURCE_REGISTRY (or a file under ~/.config/common-lisp/source-registry.conf.d/) at the checkout — and at your own cl-boundary-kit, cl-log-kit, cl-date-kit, cl-concurrent-kit, and cl-codec-kit checkouts, then load it:

(asdf:load-system "cl-process-kit")

The optional PTY system

cl-process-kit/pty (package process-kit/pty) additionally depends on cl-tty-kit and a compiled native PTY shared library; see PTY Backend for the build step and the CL_PROCESS_KIT_PTY_LIBRARY environment variable it requires.

Verifying the install

(process-kit:run "/bin/echo" (list "cl-process-kit is installed"))
;; => a PROCESS-RESULT whose stdout is "cl-process-kit is installed\n"

Continue with Quick Start for a tour of the synchronous, asynchronous, cancellation, and pipeline APIs.