jolt
A Clojure compiler implemented on top of Janet
A Clojure interpreter that runs on the Janet scripting language instead of the Java Virtual Machine, letting you write and run Clojure code without installing Java or the standard Clojure toolchain.
Jolt is a Clojure interpreter built on top of a language called Janet. Clojure is a functional programming language with a Lisp-style syntax that normally runs on the Java Virtual Machine. Jolt lets you write and run Clojure code without Java, by translating it into Janet instead. Janet is a small, portable scripting language designed to compile to a single self-contained binary.
The practical result is that you can run Clojure scripts, start an interactive Clojure session, or embed a Clojure environment inside a Janet application, all without installing Java or the standard Clojure toolchain. Jolt ships a Clojure-compatible standard library and supports the core features of the language including macros, lazy sequences, destructuring, multimethods, and protocols.
One notable design choice is the evaluation pipeline. By default Jolt walks through your code and interprets it step by step, which supports every Clojure feature but is slow for compute-heavy work. There is an optional compiled mode where most code gets translated to native Janet operations before running. The README shows a recursive number calculation that runs roughly 600 times faster in compiled mode than interpreted mode. The two modes share the same context, so compiled and interpreted code can call each other freely.
Jolt also exposes Janet's standard library to Clojure code through an explicit naming convention, so if you need networking, file access, or other system features, you can call Janet functions directly from your Clojure code. The project includes an nREPL server, which is a standard protocol that lets code editors like CIDER and Calva connect to a running Jolt session and interact with it, the same way they connect to a standard Clojure server.
The project is still maturing. Compiled mode has some gaps, and a handful of JVM-specific Clojure features like Java class imports are not available. It is intended for scripting and embedding, not as a drop-in replacement for production Clojure.
Where it fits
- Run Clojure scripts on machines without a Java installation by using Janet as the runtime
- Embed a Clojure scripting environment inside a Janet application
- Connect your code editor (CIDER, Calva) to a Clojure nREPL session without the standard Clojure toolchain
- Write Clojure macros, lazy sequences, and multimethods for lightweight scripting tasks