NCL is a Rust-native Common Lisp implementation. It targets ANSI Common Lisp and the selected SBCL public APIs, contribs, and library-referenced symbols recorded in the wave plan. SBCL 2.6.0 supplies the conformance and performance baselines; NCL has its own implementation and extension API.
The wave plan records current decisions, phases, and acceptance criteria. Design contracts are in docs/src/design/.
The native reader, compiler, runtime, and command-line path are connected. These CLI results have been verified:
nix develop --command cargo run -p ncl -- --version
ncl 0.1.0
nix develop --command cargo run -- --eval '(+ 1 2)'
3
nix develop --command cargo run -- --eval '(progn (defun fib (n) (if (< n 2) n (+ (fib (- n 1)) (fib (- n 2))))) (fib 25))'
75025The binary also supports an interactive REPL and --load, --script, and --compile-file. The remaining ANSI surface, performance work, and library load matrix are tracked in the wave plan.
Open a development shell before running Rust commands; bare cargo may fail to link the binary on macOS:
nix developFrom the development shell, run formatting, lint, and standards checks:
cargo fmt --all -- --check
cargo clippy --locked --workspace --all-targets --all-features -- -D warnings
python3 scripts/check_standards.pyFor local lane work, run cargo test -p <crate> for each changed crate. If a
test under tests/ changes, run cargo test -p ncl --test <name>. CI runs
workspace tests in debug and release on x86-64 Linux and AArch64 macOS:
cargo test --locked --workspace --all-features --all-targets
cargo test --locked --workspace --all-features --all-targets --releaseCoverage and documentation are separate checks:
nix run path:.#rust-coverage -- --summary-only --fail-under-regions 95.0
mkdocs build --strict --config-file docs/mkdocs.ymlMIT.