About mino

What is mino?

mino is a tiny, embeddable Lisp runtime library implemented in pure ANSI C. It is designed as a scripting and extension layer for native applications: the host links the library, creates a runtime instance, installs capabilities, and evaluates user code through a compact C API.

The language centers on immutable values, persistent collections with structural sharing, code-as-data, macros, and REPL-driven interactive development. It fills the space where an application needs a programmable extension layer with strong data semantics and a safer default than mutable state.

The standalone REPL is a convenience for development and testing. The center of the design is a host process embedding the language for scripting, configuration, automation, extension, and interactive inspection.

Inspirations

mino draws from three languages that each got something deeply right:

The goal is not to replicate any of these languages, but to combine their best ideas into something new: a tiny embeddable runtime with Clojure's data model, Lua's embedding philosophy, and Fennel's pragmatic minimalism.

Why embed mino?

Use cases

mino is built for domains where user scripts, host automation, and data-driven logic benefit from a safe, compositional value model.

Related projects

mino exists alongside other excellent projects in the same programming tradition. Each one occupies a distinct niche.

jank

jank is a native Clojure dialect with an LLVM-based compiler, inline C++ interop, and full AOT and JIT compilation. It brings the power of Clojure to native applications with strong performance and world-class error reporting. If you want to write entire programs in a native Lisp, jank is a great choice.

Babashka

Babashka is a fast-starting Clojure scripting runtime built on GraalVM native image. It starts in milliseconds, ships as a single binary, and gives you access to a rich set of libraries for shell scripting, HTTP, JSON, and more. If you want to replace bash scripts with Clojure, Babashka is the tool.

Lua

Lua is the gold standard for embeddable scripting. It is small, fast, portable, and battle-tested in game engines, networking equipment, and countless other systems. Its C API is a model of embedding design. If you need a proven, mature scripting runtime with a vast ecosystem, Lua is hard to beat.

Fennel

Fennel is a Lisp that compiles to Lua. It gives you macros, pattern matching, and Lisp syntax while running on the Lua VM with full access to the Lua ecosystem. If you want Lisp expressiveness on top of Lua's runtime, Fennel is a beautiful way to get it.

What makes mino different

None of the projects above fill a specific gap: an embeddable scripting runtime with an immutable-first data model and zero external dependencies.

mino exists because no one else offers this particular combination:

If you have a C program and want to give it a programmable extension layer where user scripts work with safe, immutable values in a sandboxed environment, mino is built for that.

When to choose something else

mino is not the right tool for every situation. Here is when we would point you elsewhere:

All of these projects are excellent. They are complementary rather than competing, and we encourage you to explore each one.

Design principles