Public release v1.8.0 · Spec v0.2.0-draft · Star on GitHub

CLI

crisp analyzes Crisp, emits Rust, and drives Cargo. Pass a project directory (with crisp.toml); . is the default.

Everyday commands

crisp check  <path>
crisp emit   <path>
crisp build  <path>
crisp run    <path>
crisp test   [path…]

crisp check

Fast analyze-only pass: resolve modules/imports, typecheck, ownership probe (and related frontend passes). Does not write a full Cargo project or run the binary. Use this while editing to catch errors quickly.

crisp check examples/hello
crisp check .

crisp emit

Runs the full frontend → CIR → Rust pipeline and writes a generated Cargo crate under <path>/target/rust/ (Cargo.toml, src/…). Stops there — no cargo build. Useful when you want to inspect or hand-tweak the emitted Rust.

crisp emit examples/hello
# → examples/hello/target/rust/

crisp build

Same as emit, then runs cargo build on the generated project. Produces a native binary via rustc. Prefer this when you need a built artifact without running it yet.

crisp build examples/hello

crisp run

Build (emit + cargo build) and execute the crate’s binary. Prints program stdout/stderr. Typical day-to-day command for examples and small apps. The process working directory is the Crisp crate root (the folder with crisp.toml), not target/rust; CRISP_CRATE_ROOT is set to that absolute path (#106).

crisp run examples/hello
# → "hello world"

crisp test

Emits Rust, then runs Crisp test "…" / test_compile_fail items via cargo test on the generated crate. Several crate paths may be given; a pasted and is ignored. Test function names include the module path so the same title can appear in two files (#102).

crisp test examples/shapes
crisp test examples/math examples/shapes_generic
crisp test examples/with_tests

Debug / inspect (crisp)

crisp resolve

Prints the resolved module graph and name bindings for a crate. Compiler/debug aid when imports or modules look wrong.

crisp resolve examples/nested_math

crisp parse

Parses a single .crp file and prints the AST. Takes a file path, not a project root.

crisp parse examples/hello/src/main.crp

Companion: reveal

crisp answers “does it compile and run?” reveal answers “what did inference decide?” (types, ownership, errors, traits, emitted Rust). Same install as crisp.

reveal types examples/hello       # inferred signatures
reveal ownership examples/hello   # & / &mut / owned
reveal errors examples/fallible   # ambient error sets
reveal traits examples/shapes     # user + shape traits
reveal rust examples/hello        # generated Rust entry
reveal --help

Full walkthrough: QUICKSTART §10.

Language server

crisp-lsp speaks LSP on stdin/stdout (hover, inlay hints, crate diagnostics). Editors spawn it; you rarely run it by hand.

cargo install --path crates/crisp-lsp --locked
crisp-lsp

VS Code / Cursor: ./scripts/package-vsix.sh then Extensions → Install from VSIX… (editors/vscode-crisp). Settings: crisp.lsp.path, crisp.lsp.enabled.

Install crisp → · QUICKSTART.md →