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 aims to close remaining canon gaps over time. Cooperative async channels work without OS threads; the host can grant threads per state 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.
Inspirations
mino draws from four projects that each got something 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 fast 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.