<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/jolt-clojure-compiler-implemented-with-chez-scheme-fluwodouc" -->

---
title: Jolt: Clojure compiler implemented with Chez Scheme
description: Jolt is a self-hosted Clojure implementation that runs on Scheme (Chez natively, Gambit for JavaScript) instead of the JVM. It compiles Clojure to a...
canonical: https://daily.dev/posts/jolt-clojure-compiler-implemented-with-chez-scheme-fluwodouc
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: Jolt: Clojure compiler implemented with Chez Scheme | daily.dev
og:description: Jolt is a self-hosted Clojure implementation that runs on Scheme (Chez natively, Gambit for JavaScript) instead of the JVM. It compiles Clojure to a...
og:url: https://daily.dev/posts/jolt-clojure-compiler-implemented-with-chez-scheme-fluwodouc
og:image: https://api.daily.dev/og/posts/fLuWODoUc.png
og:image:alt: Jolt: Clojure compiler implemented with Chez Scheme
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Jolt: Clojure compiler implemented with Chez Scheme

**[Hacker News](https://daily.dev/sources/hn)** · 3 min read · 0 upvotes · 0 comments

## Summary

Jolt is a self-hosted Clojure implementation that runs on Scheme (Chez natively, Gambit for JavaScript) instead of the JVM. It compiles Clojure to a host-neutral IR, then emits Scheme. Key features include: ahead-of-time compilation via `jolt build` into a single standalone binary, OS-thread-based concurrency (future, agent, pmap, core.async), persistent immutable collections (HAMT maps/sets, 32-way trie vectors), exact numeric tower with ratios and bignums, lazy seqs, transducers, multimethods, protocols/records, and nREPL support for REPL-driven development. Notable divergences from standard Clojure include no general Java interop, no BigDecimal, and partial regex support. Installation is via Homebrew or a curl script with no additional runtime dependencies.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://jolt-lang.github.io>

## Questions this post answers

### Is there a way to run Clojure without the JVM?

Jolt is a self-hosted Clojure implementation that runs on Chez Scheme natively or on Gambit compiled to JavaScript, requiring no JVM. It supports persistent collections, lazy seqs, transducers, multimethods, protocols, atoms, future/agent/pmap, core.async, and runtime eval. The `jolt build` command produces a single standalone binary with no Scheme or JVM needed at runtime.

_Developers moving Clojure workloads off the JVM track alternatives like Jolt on daily.dev._

### What Clojure features are missing or different in Jolt compared to standard Clojure on the JVM?

Jolt diverges from standard Clojure in three areas: no general Java interop (no reflection, gen-class, or proxy — only a shimmed subset of java.* plus a C FFI), no BigDecimal support (decimal? is always false), and regex is compiled via java.util.regex with common patterns working but some Java-specific features differing. The rest of the numeric tower, collections, and concurrency primitives match JVM semantics.

_Clojure developers evaluating non-JVM runtimes weigh these trade-offs on daily.dev._

## Community take

How the wider developer community reacted, aggregated from 1 discussion and 51 comments across hackernews (as of 2026-08-11).

**TL;DR:** The community is genuinely interested in Jolt as a capable Clojure-on-Scheme runtime, but a significant thread debates whether its rapid development velocity (2k commits in ~2 months) and LLM-assisted authorship undermine its credibility — a debate the author (yogthos) joined directly to defend the project.

**Sentiment:** 45% positive · 35% mixed · 20% skeptical

**The case for**

- The author's deep Clojure experience (nearly two decades) and an existing, well-specified language spec made rapid porting feasible without reinventing core design decisions.
- It already passes the full Jank clojure-test-suite and has its own conformance corpus, plus benchmark comparisons against JVM timings.
- Scheme/FFI interop is available, enabling native library access and creative use cases like GTK-based reactive UIs.
- Standalone binaries are small (one tester reported an 18MB chess game executable) and require no additional runtime dependencies.
- The portable Scheme layer now allows targeting multiple backends (Chez, Gambit), broadening future applicability.

**The pushback**

- The project was developed with heavy LLM assistance, which was not prominently disclosed upfront and raises questions about code quality and maintainability.
- 2,000 commits from a single author in roughly two months is seen by some as a red flag for rushed, under-reviewed work.
- No general Java interop limits drop-in compatibility with the broader JVM Clojure ecosystem (e.g., Datomic required extra work).
- Some commenters feel the polished marketing website overstates maturity for what is still a very early-stage project.

**By community**

- hackernews (mixed): Enthusiastic interest in the technical achievement is tempered by a heated debate over LLM-assisted development velocity and disclosure, with the author actively defending the project in the thread.

**Hottest debate:** Whether the project's ~2,000 commits in two months constitute low-quality 'AI slop' or legitimate rapid development enabled by a competent, experienced author using LLM tooling.

**Open questions**

- How does Jolt handle reader conditionals (`:clj` branch vs. a future `:cljolt` branch) for cross-platform Clojure projects?
- What is the long-term maintenance story for a largely single-author, LLM-assisted codebase of this scope?
- How does performance compare to JVM Clojure across a broader range of real-world workloads beyond the current benchmark harness?

**Highlights**

> The reason it's possible to move fast here is due to the fact that I'm porting an existing language to a new runtime. All the hard work and hammock time has already been spent by the core Clojure team and the community. I'm not aiming to reinvent the wheel here. Furthermore, having worked with Clojure for nearly two decades now, I have a very good idea of what the language does, and what I need to implement on the host platform. Once I had the basics bootstrapped, it was really a matter of getting tests passing, and then getting more and more libraries to run on it which allowed me to exercise their own tests. And that's what really made the whole thing possible. It's sort of the ideal scenario where you have very well specified inputs and outputs, and a ton of existing tests to ensure you are implementing the behaviors correctly. The only other aspect here is performance, and that's addressed by having an extensive benchmark harness which compares with JVM timings. This allows me to see where performance gaps are, and focus on addressing them. I would be careful in extending my experience of being able to port Clojure to Chez Scheme runtime to working with LLMs in general because in most cases you don't have such well defined parameters when you start.
> — [yogthos on hackernews · 1 comments](https://news.ycombinator.com/item?id=49265065)

> I have a slightly different goal from Jank because my goal is to provide a runtime that supports existing Clojure libraries. I've spent the time to map out Java standard library APIs that popular libraries use and to create shims on top of Chez that allows them to run seamlessly. You can see a list of libraries that are fully tested and officially supported here. https://jolt-lang.github.io/docs/libraries.html On top of that, I expose the API for creating shims in user space, so people can easily add their own for the libraries they want to use that might not be covered in the core. And I leverage this functionality myself to create libraries for JDBC layer or crypto that rely on doing FFI to shared system libraries that aren't part of the core runtime. In terms of how production ready Jolt is, it's still fairly new obviously, so there will inevitably be bugs. However, it already passes full https://github.com/jank-lang/clojure-test-suite from Jank, and has its own conformance corpus https://github.com/jolt-lang/jolt/blob/main/test/chez/corpus... which is a superset of that. On top of that, I'm now able to run original test suites for the libraries I support and compare them with JVM outputs to ensure there aren't unintended divergences. The other side of it is the benchmark harness which I use to ensure performance stays reasonably close to the JVM, in most cases it's within 1.x, and the worst case is around 6x right now. https://github.com/jolt-lang/jolt/tree/main/bench So, Jolt basically aims to be a drop in JVM replacement for running existing Clojure code.
> — [yogthos on hackernews](https://news.ycombinator.com/item?id=49263556)

> This appears to be vibecoded but not disclosed as such. 2k commits from a single author starting from June 1st with really long commit messages and source code comments. The GitHub org has 19 additional projects that are all recently created. edit: Yup, found a very long blog post that says it's made with LLMs near the end https://yogthos.net/posts/2026-07-02-jolt.html
> — [davexunit on hackernews](https://news.ycombinator.com/item?id=49264060)

> I am the creator of jank. I am also not interested in a flame war. The key differentiator for jank is the seamless C++ interop, which is a problem not many people are willing to tackle, due to its scope and complexity. jank is a novel approach to this, providing incredible JIT and AOT support of arbitrary C++ libraries alongside your Clojure code, including a Cargo-inspired native build system for building your native deps along with your program (or finding them in the installed system). For some people, there is another key differentiator, which is the amount of AI-generated code involved. My understanding is that Jolt and other newer dialects like Glojure have a lot of spunk and are exploring new ideas, given the velocity that AI-driven coding can provide. I don't see jank ever being categorized in that way.
> — [Jeaye on hackernews · 1 comments](https://news.ycombinator.com/item?id=49263897)

> It definitely is vibe-coded, but yogthos is a competent programmer who has been working on public Clojure projects and repos since 2009, and has maintained a large Clojure framework since well before LLMs were a thing. It's just being fair.
> — [rahen on hackernews · 1 comments](https://news.ycombinator.com/item?id=49264912)

**Source threads**

- [hackernews](https://news.ycombinator.com/item?id=49223965) · 136 points · 51 comments

## Similar posts on daily.dev

- [Jolt — Clojure on Scheme](https://daily.dev/posts/jolt-clojure-on-scheme-1ny2df0b1) · Hacker News · 0 upvotes · 0 comments
- [Wrapping GTK4 in 800 lines of Clojure with Jolt](https://daily.dev/posts/wrapping-gtk4-in-800-lines-of-clojure-with-jolt-imbs6wmv6) · Lobsters · 0 upvotes · 0 comments
- [jank-lang/jank: The native Clojure dialect hosted on LLVM with seamless C\+\+ interop.](https://daily.dev/posts/jank-lang-jank-the-native-clojure-dialect-hosted-on-llvm-with-seamless-c-interop--4t9a8v9dz) · Hacker News · 0 upvotes · 0 comments
- [jank now has its own custom IR](https://daily.dev/posts/jank-now-has-its-own-custom-ir-xb0nzvh5o) · Lobsters · 0 upvotes · 0 comments

---

Tags: [#functional-programming](https://daily.dev/tags/functional-programming), [#compiler](https://daily.dev/tags/compiler), [#clojure](https://daily.dev/tags/clojure)

[View this post on daily.dev](https://daily.dev/posts/jolt-clojure-compiler-implemented-with-chez-scheme-fluwodouc)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"Jolt: Clojure compiler implemented with Chez Scheme","url":"https://daily.dev/posts/jolt-clojure-compiler-implemented-with-chez-scheme-fluwodouc","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/jolt-clojure-compiler-implemented-with-chez-scheme-fluwodouc"},"datePublished":"2026-08-11T19:16:25.790Z","dateModified":"2026-08-11T23:32:43.420Z","description":"Jolt is a self-hosted Clojure implementation that runs on Scheme (Chez natively, Gambit for JavaScript) instead of the JVM. It compiles Clojure to a...","image":"https://media.daily.dev/image/upload/s--VDukGCjf--/f_auto/v1722860399/public/Placeholder%2002","thumbnailUrl":"https://media.daily.dev/image/upload/s--VDukGCjf--/f_auto/v1722860399/public/Placeholder%2002","isAccessibleForFree":true,"articleSection":"Hacker News","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"Hacker News","logo":"https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/hn","url":"https://daily.dev/sources/hn"},"commentCount":0,"discussionUrl":"https://daily.dev/posts/jolt-clojure-compiler-implemented-with-chez-scheme-fluwodouc","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":0},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"keywords":"functional-programming,compiler,clojure","timeRequired":"PT3M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"Hacker News","item":"https://daily.dev/sources/hn"},{"@type":"ListItem","position":3,"name":"Jolt: Clojure compiler implemented with Chez Scheme"}]}
{"@context":"https://schema.org","@type":"FAQPage","@id":"https://daily.dev/posts/jolt-clojure-compiler-implemented-with-chez-scheme-fluwodouc#faq","mainEntity":[{"@type":"Question","name":"Is there a way to run Clojure without the JVM?","acceptedAnswer":{"@type":"Answer","text":"Jolt is a self-hosted Clojure implementation that runs on Chez Scheme natively or on Gambit compiled to JavaScript, requiring no JVM. It supports persistent collections, lazy seqs, transducers, multimethods, protocols, atoms, future/agent/pmap, core.async, and runtime eval. The `jolt build` command produces a single standalone binary with no Scheme or JVM needed at runtime. Developers moving Clojure workloads off the JVM track alternatives like Jolt on daily.dev."}},{"@type":"Question","name":"What Clojure features are missing or different in Jolt compared to standard Clojure on the JVM?","acceptedAnswer":{"@type":"Answer","text":"Jolt diverges from standard Clojure in three areas: no general Java interop (no reflection, gen-class, or proxy — only a shimmed subset of java.* plus a C FFI), no BigDecimal support (decimal? is always false), and regex is compiled via java.util.regex with common patterns working but some Java-specific features differing. The rest of the numeric tower, collections, and concurrency primitives match JVM semantics. Clojure developers evaluating non-JVM runtimes weigh these trade-offs on daily.dev."}}]}
```

