Skip to content

clj-easy/clojure-dialects-docs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 

Repository files navigation

clojure-dialects-docs

Introduction

Clojure has inspired a variety of dialects. This little repository’s goal is to provide a brief description of each with links for the curious.

We consider something a Clojure dialect when it runs Clojure (or very Clojure-ish) code. Support for a dialect-specific reader-conditional target is a good hint that we have a true dialect. You’ll find dialects sorted by their birth year below.

Where appropriate/possible, we’ve linked authors' sponsorship pages; consider sponsoring as a way of not only supporting ongoing work but also as a way of saying thank you for past efforts.

Additions and corrections to this living document are most welcome from the community.

Dialects Popularity Rankings

It useful to see Clojure dialects ranked by some measure of popularity. Question 23 of the 2025 Clojure Survey asked, "Which dialects of Clojure have you used in the last year?"

Here’s how our listed dialects ranked from the Survey:

Clojure Dialect Percentage of Respondents Using Count of Respondents Using ☆ GitHub Stars (as of March 2026)

§Clojure

98.5%

1,457

10.8k

§Babashka

60.0%

887

4.5k

§ClojureScript

55.7%

823

9.4k

§Nbb

5.4%

80

940

§Squint

5.2%

77

842

§ClojureDart

4.7%

69

1.6k

§Jank

4.7%

69

3.2k

§Scittle

4.5%

66

421

§Joyride

2.2%

33

571

§Cherry

1.4%

21

636

§ClojureCLR

1.4%

20

1.6k

§Basilisp

1.2%

18

441

§CloJerl

0.4%

6

1.7k

§Joker

0.2%

3

1.7k

§Glojure

0.2%

3

497

Coming in with 0 responses this year were:

Clojure ⬩ JVM ⬩ 2007-

Clojure is the granddaddy of them all. Clojure was invented by Rich Hickey. His first release of Clojure was in 2007. Clojure is maintained by the Clojure Core Team, which, as of this writing, includes Alex Miller, Michael Fogus, and Jarrod Taylor. Rich remains the lead. Clojure runs on the Java Virtual Machine and has reach to the entire Java ecosystem.

Clojure supports targeting dialect-specific code in .cljc files via Reader conditionals. Clojure itself recognizes the :clj reader-conditional target, and files with the .clj extension as Clojure code.

Las3r ⬩ ActionScript 2.0 ⬩ 2008-2011

Las3r, a lisp for the ActionScript Virtual Machine 2 was created by Aemon Cannon in 2008. Did Aemon create the first alternate dialect of Clojure? Could be!

ClojureCLR ⬩ .NET Framework ⬩ 2009-

ClojureCLR is a port of Clojure to the Common Language Runtime (which is the execution engine of Microsoft’s .Net Framework). ClojureCLR lives under the Clojure Core Team umbrella. Its first commit was by David Miller in 2009. David is still the leading force behind this project.

ClojureCLR recognizes the :cljr reader-conditional target, and files with the .cljr extension as ClojureCLR code.

Scriptjure ⬩ JavaScript ⬩ 2009-2011

Scriptjure is a Clojure library for generating JavaScript by Allan Rohner. Scriptjure predates §ClojureScript. This project was announced in 2009, and its last commit was in 2011.

While not actively under development, Scriptjure provided some initial inspiration for §Squint, §Cherry, and likely, §ClojureScript.

ClojureScript ⬩ JavaScript ⬩ 2011-

ClojureScript is a compiler for Clojure that emits JavaScript compatible with the Google Closure optimizing compiler. ClojureScript lives under the Clojure Core Team umbrella. Its first commit was by Rich Hickey in 2011, and its ongoing development has been led by David Nolen & Mike Fikes. David remains the active lead to this day.

ClojureScript recognizes the :cljs reader-conditional target, and files with the .cljs extension as ClojureScript code.

While not a dialect in itself, shadow-cljs is certainly worth mentioning. It was created by Thomas Heller in 2015. Described as "ClojureScript compilation made easy", it is favoured by many ClojureScript developers because of its ease of use.

In 2024, Google stopped public work on the Closure library. The Clojure Core team now maintains a fork of Closure. Being Clojure-minded, they undid many past breaking changes committed by Google.

Planck ⬩ JavaScript ⬩ 2015-2024

Planck is a stand-alone ClojureScript REPL announced by Mike Fikes in 2015. Planck uses Self-Hosted/Bootstrapped ClojureScript. It includes core library extensions to make it more Clojure-like.

Planck ships its own executable and uses the JavaScriptCore engine.

Planck does not seem to be actively developed anymore.

Planck does not have a planck-specific reader conditional target, but recognizes the :cljs reader-conditional target and .cljs file.

Jank ⬩ C++ atop LLVM jit ⬩ 2015-

Jank is the native Clojure dialect hosted on LLVM with seamless C++ interop. Jeaye Wilkerson started working on Jank in 2015, dove back into the effort in 2022, and went full-time on the project in 2025. Jank has gotten much attention from the Clojure community as Jeaye continues to lead it towards a production release.

Jank recognizes the :jank reader-conditional target, and files with .jank extension as Jank code.

Lumo ⬩ JavaScript ⬩ 2016-2020

Lumo, a fast, cross-platform, standalone ClojureScript environment, was announced in 2016 by Antonio Nuno Monteiro. Development activity stopped in 2020, and the repository was archived in 2022.

Lumo is similar in spirit to §Planck but runs on Node.js and uses the V8 JavaScript engine.

Joker ⬩ Go ⬩ 2016-

Joker is a small Clojure interpreter, linter, and formatter written in Go by Roman Bataev. Its first release was in 2016. Joker is targeted at lightweight scripting with amenities for formatting and scripting.

Fun fact: Joker’s linter inspired clj-kondo.

Joker recognizes the :joker reader-conditional target, and files with the .joke extension as Joker code.

See also: §Glojure.

Clojerl ⬩ Erlang VM ⬩ 2017-

Clojerl, Clojure for the Erlang VM, was released by Juan Facorro in 2017.

From the README:

It is fair to say that combining the power of the Erlang VM with the expressiveness of Clojure could provide an interesting, useful result to make the lives of many programmers simpler and make the world a happier place.

Clojerl recognizes the :clje reader-conditional target, and files with the .clje extension as Clojerl code.

Ferret ⬩ Embedded C++11 ⬩ 2018-2020

Ferret, a free software lisp implementation for real time embedded control systems, was released by Nurullah Akkaya in 2018.

Interesting fact: Perhaps in the spirit of embedding, all source code for the project is kept in a single org-mode file named ferret.org.

See also §Jank.

Basilisp ⬩ Python 3 ⬩ 2018-

Basilisp, a Clojure-compatible(-ish) Lisp dialect hosted on Python 3 with seamless Python interop, was first released by Chris Rink in 2018.

Basilisp recognizes the :lpy reader-conditional target, and files with the .lpy extension as Basilisp code.

For another way to reach out to the Python ecosystem, have a peek at libpython-clj.

Babashka ⬩ JVM via GraalVM ⬩ 2019-

Babashka is a native, fast starting Clojure interpreter for cross-platform scripting. This very popular runtime includes many Clojure libraries built-in, and works with a large array of Clojure libraries. Michiel Borkent made his first release of Babashka in 2019.

Babashka uses SCI, the Small Clojure Interpreter.

Babashka recognizes the :bb (or :clj, whichever comes first) reader-conditional target, and files with the .bb (or .clj) extension as Babashka code.

ClojureRS ⬩ Rust ⬩ 2020-.?.

ClojureRS, Clojure, implemented atop Rust, was created by Cameron Cooper in 2020.

I don’t see any announcements or releases. Perhaps this was an initial experiment.

Scittle ⬩ JavaScript ⬩ 2021-

Scittle allows you to execute Clojure(Script) directly from browser script tags via SCI. Michiel Borkent announced Scittle in 2021.

Scittle allows for quick front-end development with no build ceremony at all.

Scittle recognizes the :scittle reader-conditional target.

nbb ⬩ JavaScript ⬩ 2021-

nbb provides scripting in Clojure on Node.js using SCI. It can be thought of as Babashka, but for Node.js. Michiel Borkent announced nbb in 2021.

Nbb recognizes the :org.babashka/nbb (and :cljs, whichever comes first) reader-conditional tag.

Joyride ⬩ JavaScript ⬩ 2022-

Joyride, making VS Code hackable like Emacs since 2022, was created by Peter Strömberg and Michiel Borkent.

Joyride uses SCI, the Small Clojure Interpreter.

Joyride recognizes the :joyride (and :cljs) reader-conditional target.

ClojureDart ⬩ Flutter & Dart ⬩ 2022-

ClojureDart is a Clojure dialect for Flutter and Dart. The inventors and leads for this project are Christophe Grand & Baptiste Dupuch. It was first announced in 2022, is being used for production applications, and remains under active development.

ClojureDart supports multiple targets. It can compile to native binaries (iOS, Android, macOS, Linux, and Windows) and can also target JavaScript and WASM.

ClojureDart recognizes the :cljd reader-conditional target, and files with the .cljd extension as ClojureDart code.

Cherry ⬩ JavaScript ⬩ 2022-

Cherry is an experimental ClojureScript to ES6 module compiler. Michiel Borkent first announced Cherry in 2022.

Although §Squint and Cherry share some underlying tech, Cherry is a full-fledged ClojureScript compiler. It might gain traction, or it might inspire changes to §ClojureScript, or both.

Fun fact: Cherry was initially forked from §Scriptjure.

Cherry recognizes the :cherry reader-conditional target.

Squint ⬩ JavaScript ⬩ 2022-

Squint is a light-weight ClojureScript dialect. Michiel Borkent first released Squint in 2022.

If you squint, it looks like Clojure, but it is really a lightweight transpiler of ClojureScript syntax to mutable JavaScript.

Fun fact: Squint was initially forked from §Scriptjure.

Fun fact: Squint was originally called ClavaScript.

Squint recognizes the :squint reader-conditional target.

Glojure ⬩ Go ⬩ 2023-

Glojure is a Clojure interpreter hosted on Go with the Clojure core libraries available (as Go), full Go interop support, AOT compilation to Go source code, and REPL support. James Hamlin made his first release of Glojure in 2023.

In 2025, Ingy döt Net started collaborating on Glojure and in 2026 created the Glojure Automation Tool, Gloat. Gloat is a zero-dependency CLI that compiles Clojure (and YAMLScript) code to Go-project-ready Go code, native binaries & shared libraries (for more than 20 architectures), and Wasm binaries (both server and browser). Gloat is currently using an actively developed fork of Glojure with plans to merge improvements and bug fixes upstream.

Glojure recognizes the :glj reader-conditional target, and files with the .glj extension as Glojure code.

In your travels, you might also stumble upon another Glojure by David Jarvis. This work was announced in 2017. It is documented as incomplete, and has not had new activity since 2017.

See also: §Joker.

ClojureWasm ⬩ WebAssembly ⬩ 2026-

ClojureWasm is an independent Clojure runtime implemented in Zig, optimized for high-performance native execution and deep WebAssembly runtime integration. Shota Kudo created ClojureWasm in 2026.

This Pre-Alpha experiment can interop with WebAssembly modules. It can also be used to build your own stand-alone executable that does not require ClojureWasm.

ClojureWasm recognizes the :cljw (and :clj) reader-conditional target.

Cream ⬩ JVM via GraalVM + Crema ⬩ 2026-

Cream is a fast starting Clojure runtime built with GraalVM native-image + Crema Cream is another Michiel Borkent experiment, created in 2026.

GraalVM’s Crema allows for eval, so unlike §Babashka, it does not require SCI and supports runtime class loading.

This is a very early, but interesting, experiment.

Since this is really running Clojure on a JVM, is it really a dialect? We can rationalize that its unique runtime (and its limitations) make it one. Besides, we aren’t terribly pedantic.

ClojureFnl ⬩ Fennel ⬩ 2026-

ClojureFnl is an early proof of concept of a Clojure to Fennel transpiler. It was announced in 2026 by Andrey Listopadov. The ClojureFnl runtime host is Lua.

ClojureFnl recognizes the :cljfnl reader conditional target.

License

Distributed under the EPL License, same as Clojure. See LICENSE.

About

Brief descriptions of known Clojure dialects

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages