About mino
mino is an embeddable Clojure-inspired Lisp runtime implemented in C. The host application links the library, creates one or more runtimes, installs capabilities, and evaluates user code through a compact C API. The language centers on immutable values and persistent collections; the embedding API is the product.
mino is Clojure-inspired today and continues to close canon gaps over time. Cooperative async runs by default, with host-granted threading when needed.
Where to go next
- Homepage - the four pillars and the three-roles walkthrough.
- Get Started - install, build, and run your first script in under a minute.
- Documentation - C API reference, language reference, embedding cookbook, and the Clojure compatibility matrix.
- Coming from Clojure - what's the same, what differs, and what's missing.
- Changelog - release history.
Inspirations
mino draws from four projects that each got something deeply right: Clojure for immutable values, persistent data structures, and a data-first programming model; Lua for proving a small, portable C implementation can be a world-class embeddable scripting language; Fennel for showing Lisp syntax and macros can layer cleanly over a minimal runtime; and Erlang/BEAM for the discipline of isolated processes communicating by message passing. Mino combines these lineages into an embeddable runtime with persistent data and capability-gated host interop.
Mino borrows from BEAM twice. The first borrowing is isolation: each mino_state owns its heap and communicates with peers via cross-state channels and values, never shared mutable references. The second is Erlang's bit syntax - binary data as a first-class type with bit-precise field access. mino's MINO_BYTES value and the bits / bits-get / let-bits surface bring the same shape to embedded scripts, where binary protocols and sensor packets are common.
Related projects
- jank - native Clojure dialect with an LLVM-based compiler.
- Babashka - fast-starting Clojure scripting runtime on GraalVM.
- Lua - embeddable scripting language in C with a mutable data model.
- Fennel - Lisp that compiles to Lua.
- Janet - embeddable Lisp in C with a register-based VM and package manager.
- JO Clojure - native C/C++ Clojure-like runtime with persistent data structures.
- nanoclj - tiny Clojure interpreter in C.
- clojure-rt - LLVM-based Clojure implementation for deterministic performance.