crisp analyzes Crisp, emits Rust, and drives Cargo. Pass a project directory (with crisp.toml); . is the default.
crisp check <path> crisp emit <path> crisp build <path> crisp run <path> crisp test [path…]
crisp checkFast 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 emitRuns 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 buildSame 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 runBuild (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 testEmits 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
crisp resolvePrints 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 parseParses a single .crp file and prints the AST. Takes a file path, not a project root.
crisp parse examples/hello/src/main.crp
revealcrisp 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.
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.