explaingit

jolt-lang/jolt

14JanetAudience · developerComplexity · 3/5Setup · moderate

TLDR

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.

Mindmap

mindmap
  root((jolt))
    What it does
      Clojure without Java
      Janet runtime
      nREPL server
    Modes
      Interpreted mode
      Compiled mode fast
    Features
      Macros
      Lazy sequences
      Multimethods
    Audience
      Clojure developers
      Scripters
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Run Clojure scripts on machines without a Java installation by using Janet as the runtime

USE CASE 2

Embed a Clojure scripting environment inside a Janet application

USE CASE 3

Connect your code editor (CIDER, Calva) to a Clojure nREPL session without the standard Clojure toolchain

USE CASE 4

Write Clojure macros, lazy sequences, and multimethods for lightweight scripting tasks

Tech stack

ClojureJanet

Getting it running

Difficulty · moderate Time to first run · 30min

Requires Janet to be installed, Java class imports and some JVM-specific Clojure features are not available.

In plain English

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.

Copy-paste prompts

Prompt 1
I want to run a Clojure script using jolt without installing Java. How do I install jolt and execute a .clj file?
Prompt 2
How do I start jolt's nREPL server and connect to it from CIDER in Emacs or Calva in VS Code?
Prompt 3
What Clojure features are missing or slower in jolt's compiled mode, and how do I know when to use interpreted mode instead?
Prompt 4
How do I call Janet standard library functions like networking or file I/O from within my Clojure code running in jolt?
Open on GitHub → Explain another repo

← jolt-lang on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.