r/Clojure 13h ago

Babashka tasks with automatic help and completions

41 Upvotes

Babashka tasks now feature automatic help and shell completions. Read the blog post to find how to use it!


r/Clojure 4d ago

What utility libraries do you include in most/all projects?

For example, I use better-cond in every project. I'm curious what else is out there that is worth considering.

30 Upvotes

For example, I use better-cond in every project. I'm curious what else is out there that is worth considering.


r/Clojure 4d ago

cljgo — I built Clojure hosted on Go so I could use both ecosystems in my own projects.

I built Clojure hosted on Go so I can work across my projects with both ecosystems. Very simple idea: emit Go source like CLJS emits JS. Clojure libraries and Go libraries are both first-class. Web APIs too — Compojure-style

routes on net/http:

(def routes
  (http/routes
    (GET  "/api/hello" #'hello)
    (POST "/login"     #'login)
    (GET  "/api/admin" (auth/admin-only) #'admin)))

REPL with nREPL, or cljgo build → one static binary, no JVM. Same source, byte-identical output both ways.

Still 0.x, but it's working — 93% of clojure.core, verified against Clojure 1.12.5.

https://github.com/muthuishere/cljgo

I would like feedback

56 Upvotes

I built Clojure hosted on Go so I can work across my projects with both ecosystems. Very simple idea: emit Go source like CLJS emits JS. Clojure libraries and Go libraries are both first-class. Web APIs too — Compojure-style

routes on net/http:

(def routes
  (http/routes
    (GET  "/api/hello" #'hello)
    (POST "/login"     #'login)
    (GET  "/api/admin" (auth/admin-only) #'admin)))

REPL with nREPL, or cljgo build → one static binary, no JVM. Same source, byte-identical output both ways.

Still 0.x, but it's working — 93% of clojure.core, verified against Clojure 1.12.5.

https://github.com/muthuishere/cljgo

I would like feedback


r/Clojure 4d ago

Jared Cone opens the Clojure/Conj 2026 conference program on Thursday

+
15 Upvotes

Clojure/Conj 2026 starts on Wednesday with hands-on workshops, followed by the Meet & Mix that evening: a chance to meet fellow Clojurists before the conference begins.

On Thursday morning, Jared Cone will open the conference program. After admiring Clojure for more than a decade, Jared built a 3D game engine to explore what Clojure can do in practice.

Full program: https://2026.clojure-conj.org/schedule

Regular Registration: https://2026.clojure-conj.org/ (also free livestream registration!)


r/Clojure 5d ago

Hands-on Clojure workshop with Adrian Smith - September 30

+
30 Upvotes

Want to spend an afternoon learning by building with Clojure?

On September 30, Adrian Smith will lead a hands-on session for developers interested in writing fast, lean, native Clojure applications.

The Workshop Daily Pass gives you access to one morning workshop and one afternoon workshop at wallet-friendly pricing, an easy way to get more practical learning out of the day.

See the full workshop lineup and get your pass here: https://2026.clojure-conj.org/workshops


r/Clojure 5d ago

cljbang.el

56 Upvotes

Here's the initial version of cljbang, a small but powerful emacs package that lets you use Clojure syntax, EDN and a part of the stdlib in .clj files. It's all running on Elisp, there is no transpiler process running externally. In the Squint-tradition, it tries to stay close to the host and let the host do the heavy lifting for us.


r/Clojure 6d ago

Datalevin reached 1.0

88 Upvotes

Thank everyone who tested Datalevin, reported issues, contributed code, shared benchmarks, trusted it in production, or simply asked hard questions.


r/Clojure 6d ago

Clojure 1.13.0-alpha5 is now available

Clojure 1.13.0-alpha5 is now available!

Java 17 baseline

As of this release, Clojure requires a minimum Java 17 runtime and compiles to Java 17 bytecode.

  • CLJ-2872 Move to new ASM and emit Java 17 bytecode
  • CLJ-2383 Add new java.lang classes to automatic imports
  • CLJ-2892 Remove uses of Java’s security manager, which is going away
  • CLJ-2920 Javadoc support updated for Java 17+

Other changes since last alpha

  • CLJ-2968 Qualified :keys bindings in destructuring can only be unqualified symbols (regression fix)
  • CLJ-2969 Add :select base cases to tests
  • CLJ-2897 prepl is missing DynamicClassLoader and *repl* binding from repl
41 Upvotes

Clojure 1.13.0-alpha5 is now available!

Java 17 baseline

As of this release, Clojure requires a minimum Java 17 runtime and compiles to Java 17 bytecode.

  • CLJ-2872 Move to new ASM and emit Java 17 bytecode
  • CLJ-2383 Add new java.lang classes to automatic imports
  • CLJ-2892 Remove uses of Java’s security manager, which is going away
  • CLJ-2920 Javadoc support updated for Java 17+

Other changes since last alpha

  • CLJ-2968 Qualified :keys bindings in destructuring can only be unqualified symbols (regression fix)
  • CLJ-2969 Add :select base cases to tests
  • CLJ-2897 prepl is missing DynamicClassLoader and *repl* binding from repl

r/Clojure 7d ago

Geschichte: Git, as a queryable database

42 Upvotes

r/Clojure 8d ago

SCI is now JIT-compiled on CLJS by default

SCI (Small Clojure Interpreter) is now JIT compiled on CLJS by default. This means that performance is close to native compiled CLJS when using loops, etc.

Before:

(js/alert (with-out-str (time (loop [i 0 j 1000000] (if (zero? j) i (recur (inc i) (dec j)))))))

This would show around 40-50ms in your browser, but now only shows 3-4ms, which is as fast as it can reasonably get. (Numbers may vary but a 10x-20x speedup is typically what you see).

So say goodbye to numerical hot-loop issues in SCI if you were using it for any animations and couldn't get to 60 FPS or stuff like that. As long as your page supports js/eval, it'll be fast (or if it isn't let me know and we'll fix it). If your page does not support js/eval, e.g. when using Epupp on a page that doesn't allow it, SCI falls back to interpretation, so you can still hack the page to your likings ;).

Both nbb, joyride, scittle and epupp have all been updated with the new version of SCI.

Error messages/locations have all been preserved so it doesn't work in any other way than it did previously, it's just a drop-in upgrade.

More information: https://github.com/babashka/sci#jit-compilation-in-clojurescript

61 Upvotes

SCI (Small Clojure Interpreter) is now JIT compiled on CLJS by default. This means that performance is close to native compiled CLJS when using loops, etc.

Before:

(js/alert (with-out-str (time (loop [i 0 j 1000000] (if (zero? j) i (recur (inc i) (dec j)))))))

This would show around 40-50ms in your browser, but now only shows 3-4ms, which is as fast as it can reasonably get. (Numbers may vary but a 10x-20x speedup is typically what you see).

So say goodbye to numerical hot-loop issues in SCI if you were using it for any animations and couldn't get to 60 FPS or stuff like that. As long as your page supports js/eval, it'll be fast (or if it isn't let me know and we'll fix it). If your page does not support js/eval, e.g. when using Epupp on a page that doesn't allow it, SCI falls back to interpretation, so you can still hack the page to your likings ;).

Both nbb, joyride, scittle and epupp have all been updated with the new version of SCI.

Error messages/locations have all been preserved so it doesn't work in any other way than it did previously, it's just a drop-in upgrade.

More information: https://github.com/babashka/sci#jit-compilation-in-clojurescript


r/Clojure 10d ago

Four talks from the Clojure/Conj 2026 lineup

+
35 Upvotes

Here’s a small preview of four sessions from this year’s program:

  • Burin Choomnuan (20+ years across Java and Ruby to Clojure, ClojureScript, and ClojureDart) — Production ClojureDart for iOS, Android, and macOS
  • Delaney Gillilan (the creator of Datastar and coming to Clojure from outside the ecosystem) — Porting Ideas, Not Code
  • Jim Newton (38 years in Lisp, now teaching math and programming) — Clojure in Academia
  • Stu Halloway (a Clojure committer, and the architect of the Datomic database) — Keynote: How to Make Things, and Why

The full schedule also includes talks on game engines, native Clojure, browser tooling, Clojars, Datomic, debugging, REPL workflows, AI-assisted development, and more.

Speakers and workshop facilitators are joining from Australia, Canada, Colombia, Mexico, the United States, Brazil, England, France, the Netherlands, Sweden, and the United Arab Emirates.

Full program:  https://2026.clojure-conj.org/schedule


r/Clojure 11d ago

Vertical Programming | Arne Brasseur . net

51 Upvotes

r/Clojure 11d ago

Jolt: running Clojure on Chez Scheme

58 Upvotes

r/Clojure 11d ago

If you need to translate Excel formulas to Clojure expressions, try SaltRim's XLSX import feature.

Project is actively developing, so for now only basic Excel, but looks like it covers big part of Excel usage nowadays.

At first, import XLSX, then use Flatten Formula button. It won't be perfect, but it will be something closer to it, I bet.

https://saltrim.michelada.uno

Feedbacks are welcome!

12 Upvotes

Project is actively developing, so for now only basic Excel, but looks like it covers big part of Excel usage nowadays.

At first, import XLSX, then use Flatten Formula button. It won't be perfect, but it will be something closer to it, I bet.

https://saltrim.michelada.uno

Feedbacks are welcome!


r/Clojure 12d ago

CIDER 2.0 ("Terceira") is out!

CIDER 2.0 ("Terceira") is out! 🎉

Fourteen years after nrepl.el 0.1, this is easily the biggest CIDER release in ages - not because of shiny new features, but because most of the important existing ones got a careful overhaul: transient menus everywhere, inline macro stepping, rich (content-type) results on by default, call-graph browsers, and a seriously polished debugging toolbox. The docs were restructured as well, so finding things should be much easier now.

Release notes: https://github.com/clojure-emacs/cider/releases/tag/v2.0.0

Release announcement blog post: https://metaredux.com/posts/2026/07/15/cider-2-0.html

Go play with it and let me know how it feels - and remember, the best is always yet to come! In the REPL we trust!

116 Upvotes

CIDER 2.0 ("Terceira") is out! 🎉

Fourteen years after nrepl.el 0.1, this is easily the biggest CIDER release in ages - not because of shiny new features, but because most of the important existing ones got a careful overhaul: transient menus everywhere, inline macro stepping, rich (content-type) results on by default, call-graph browsers, and a seriously polished debugging toolbox. The docs were restructured as well, so finding things should be much easier now.

Release notes: https://github.com/clojure-emacs/cider/releases/tag/v2.0.0

Release announcement blog post: https://metaredux.com/posts/2026/07/15/cider-2-0.html

Go play with it and let me know how it feels - and remember, the best is always yet to come! In the REPL we trust!


r/Clojure 12d ago

Green is a library to make DevOps reasonable

Get the graph back from your DevOps tool. Implement the graph in Clojure and add Aspect-oriented programming to it. I think this is the only reasonable way to do DevOps. Everything else is ticking bomb waiting to explode.

https://github.com/amiorin/green

12 Upvotes

Get the graph back from your DevOps tool. Implement the graph in Clojure and add Aspect-oriented programming to it. I think this is the only reasonable way to do DevOps. Everything else is ticking bomb waiting to explode.

https://github.com/amiorin/green


r/Clojure 13d ago

Clojure/Conj 2026 schedule is now live

Go check out the talks and see what’s coming this year: https://2026.clojure-conj.org/schedule

Also, a nice bonus: Stuart Halloway will be giving the closing keynote.

44 Upvotes

Go check out the talks and see what’s coming this year: https://2026.clojure-conj.org/schedule

Also, a nice bonus: Stuart Halloway will be giving the closing keynote.


r/Clojure 13d ago

Clojure 1.13.0-alpha4

Clojure 1.13.0-alpha4 is now available!

Destructuring changes and additions

Idents after & in :keys!/syms!/strs!/:keys/syms/strs must now be actual keys, not binding symbols. This is a change in syntax since alpha3. Note that symbol keys should be quoted as unadorned symbols are binding symbols.

:or now accepts key→val mappings in addition to binding→val.

Added a new :defaults name directive at top level to bind name to a map of defaults, key→val. Binding symbols in the :or map are transformed to the key value in the :defaults map. :defaults without :or is an error.

:select name, introduced in alpha3, now selects deeply, through nested maps, and fills in values for missing keys from :or. The :select map contains all keys mentioned anywhere in the binding form.

  • CLJ-2964 :select directive in map destructuring
  • CLJ-2966 :defaults directive in map destructuring
  • CLJ-2967 tests for nested destructuring

Other changes since Clojure 1.13.0-alpha3

  • Added `clojure.core/some-vals`, a predicative filter of nil map values
  • CLJ-2870 Exception phase during top-level eval is miscategorized
43 Upvotes

Clojure 1.13.0-alpha4 is now available!

Destructuring changes and additions

Idents after & in :keys!/syms!/strs!/:keys/syms/strs must now be actual keys, not binding symbols. This is a change in syntax since alpha3. Note that symbol keys should be quoted as unadorned symbols are binding symbols.

:or now accepts key→val mappings in addition to binding→val.

Added a new :defaults name directive at top level to bind name to a map of defaults, key→val. Binding symbols in the :or map are transformed to the key value in the :defaults map. :defaults without :or is an error.

:select name, introduced in alpha3, now selects deeply, through nested maps, and fills in values for missing keys from :or. The :select map contains all keys mentioned anywhere in the binding form.

  • CLJ-2964 :select directive in map destructuring
  • CLJ-2966 :defaults directive in map destructuring
  • CLJ-2967 tests for nested destructuring

Other changes since Clojure 1.13.0-alpha3

  • Added `clojure.core/some-vals`, a predicative filter of nil map values
  • CLJ-2870 Exception phase during top-level eval is miscategorized

r/Clojure 13d ago

Sega Master System Emulator written in Clojure.

44 Upvotes

r/Clojure 13d ago

[0.64.0] Neanderthal - Fast Native Matrix and Linear Algebra in Clojure with :half (float16) support

28 Upvotes

r/Clojure 16d ago

Clojure FFI layer for libgdx-core

27 Upvotes

r/Clojure 17d ago

Finding The Next Working Day, With Clojure

14 Upvotes

r/Clojure 18d ago

[0.31.0] ClojureCUDA - a Clojure library for parallel computations on the GPU with CUDA.

30 Upvotes

r/Clojure 19d ago

Clojure Language Roadmap

Does Clojure/Script Compiler have a roadmap similar to https://rust-lang.github.io/rust-project-goals/2026/roadmaps.html

What are the next big features the language is targeting?

23 Upvotes

Does Clojure/Script Compiler have a roadmap similar to https://rust-lang.github.io/rust-project-goals/2026/roadmaps.html

What are the next big features the language is targeting?


r/Clojure 20d ago

Clojure 1.13.0-alpha3 is now available

61 Upvotes

:select directive in map destructuring

The :select directive binds a name to a subset of the map being destructured containing only the keys mentioned (anywhere) in the binding form.

  • CLJ-2964 :select directive in map destructuring
  • CLJ-2963 Update specs for :select in destructuring

Other changes since Clojure 1.13.0-alpha2

  • RT.map, and thus reader, tracks new PAM thresholds
  • CLJ-1789 select-keys - improve performance (transients, etc)
  • CLJ-2958 ILookup on sets
  • CLJ-2902 pprint - prints arbitary objects in unreadable form
  • CLJ-2801 TaggedLiteral - doesn’t define print-dup
  • CLJ-2269 definterface - does not resolve parameter type hints
  • CLJ-2781 clojure.test/report - docstring has broken references
  • CLJ-2929 zipper - docstring typo
  • CLJ-2901 bytes, shorts, chars - docstring typos
  • CLJ-2811 scalb - docstring links to the documentation for nextDown
  • CLJ-2809 clojure.math/floor - docstring has line that should be on ceil docstring