Annually-Funded Developers' Update: March & April 2026

By Kathy Davis

Hello Fellow Clojurists!

This is the second of six reports from the developers who are receiving annual funding for 2026. Thanks to everyone for supporting their work and important contributions to the Clojure community.

Bozhidar Batsov: nREPL, Clojure Mode, ts-mode, Orchard, CIDER, and more
Clojure Camp: Badges, nano-conj, excercises
Eric Dallo: eca, eca-desktop, clojure-lsp, clojure-lsp-intellij
Jeaye Wilkerson: Jank compiler architecture and optimization
Michiel Borkent: babashka, ClojureScript async/await, Rebel, squint, and much more

Bozhidar Batsov

2026 Annual Funding Report 2. Published May 1, 2026.

The last two months have been some of the busiest I’ve had in clojure-emacs land in a long while. No big “X.Y” CIDER release to point at yet, but there’s been a steady stream of important work across most of the sibling projects. Below are some of the highlights.

clojure-mode 5.22 and 5.23

Two clojure-mode releases back-to-back, after a long stretch of relative quiet:

Unifying the indent format across our Clojure tooling has been on my todo list for years - happy to see it finally happen!

clojure-ts-mode

No release in this window, but I poured a lot of effort into the test suite - proper indentation and font-lock test coverage, a new configuration option test suite, and integration tests against sample files. Boring infrastructure work, but it’s the kind of thing that pays compound interest as the mode keeps maturing.

Side note: In the past several months I’ve spent a bit of time hacking on neocaml and my work there provided quite a bit of inspiration for improvements to clojure-ts-mode. (and, of course - clojure-ts-mode inspired me to create neocaml in the first place)

Orchard 0.41

Orchard v0.41.0 shipped on April 13 with a rewrite of orchard.xref, a refactor of orchard.indent, and a test modernization pass. I chipped in some smaller fixes - a cycle guard in fn-transitive-deps, validating input to stacktrace/analyze, compiling a hot regex once instead of on every call, and standardizing the -test suffix across the test suite.

We’ve also migrated from Lein to tools.deps for Orchard and probably we’ll continue in this direction for the rest of our Clojure projects in the nREPL and Clojure Emacs GitHub orgs. No rush on that front, though.

cider-nrepl 0.59

cider-nrepl v0.59.0 landed on April 14. The headline change from my side is that the ops are now properly namespaced (#710) - something that’s been sitting in the issue tracker for a very long time. CIDER on master already speaks the new namespaced ops with a fallback to the legacy names for older cider-nrepl versions, so upgrades should be painless.

Other notable bits: Compliment and clj-reload are no longer shaded, the test middleware properly binds *report-counters*, and we extract inline maps from composite Lein profiles correctly.

refactor-nrepl

refactor-nrepl got a serious modernization push in April - no release yet, but a lot of cleanup landed:

Expect a refactor-nrepl release once the dust settles.

clj-refactor.el

Just a small cleanup pass to align with the new Emacs 28+ baseline. clj-refactor is in maintenance mode these days, but I’m trying to keep it healthy.

Eventually I’ll be taking a closer look at moving some of its functionality to clojure-mode and CIDER, but there’s more ground-work that needs to be done first.

CIDER

No CIDER release this cycle, but master accumulated a lot of structural work that will land in CIDER 1.22:

This is shaping up to be one of those releases that doesn’t look flashy on the outside but cleans up a ton of long-standing internal mess. The decoupling work in particular has been on my mind for years.

I’ve also started working on experimental support for prepl in CIDER. I’m not sure if this will ever land or be properly supported, but it’s been a fun side quest to me to ensure that CIDER logic is decoupled properly from its bundled nREPL client that I plan to eventually spin out of CIDER.

MrAnderson

Slightly outside the clojure-emacs org, but related: I’ve been helping MrAnderson get back on its feet. Three PRs landed in March/April:

MrAnderson is what cider-nrepl (and others) use to shade dependencies, so a healthy MrAnderson is in everyone’s interest. There’s more to come here!

What’s next

CIDER 1.22 once the jack-in and decoupling work settles, a refactor-nrepl release to ship all the April cleanup, and hopefully a fresh MrAnderson cut soon after.

As always - thanks to everyone who pitched in, especially Sashko Yakushev who once again did much of the the heavy lifting on cider-nrepl and Orchard.

And a HUGE THANKS to the members of Clojurists Together for supporting my Clojure OSS work! You rock!


Clojure Camp

2026 Annual Funding Report 2. Published May 12, 2026.


Eric Dallo

2026 Annual Funding Report 2. Published May 8, 2026.

Excited 2 months of lots of work and help from Clojurians! We had improvements in eca and clojure-lsp mainly, and new projects as well.

ECA

ECA keeps growing a lot, receiving lots of contributions, with more than 800 stars already I’m planning a stable release soon, in these 2 months we had lots of releases with ton of stuff, so I will focus on the main highlights:

0.109.1 - 0.131.1

ECA Desktop

eca-desktop eric mar apr

Since ECA has been pretty stable and built in top of a nice extensible protocol, it worked so well that we decide to offer the same server capabilities to a Desktop client, similar to Claude Desktop but reusing the same server, this makes possible to have the same experience without an Editor, especially useful for non techinical people in price for a thin layer connecting to the server.

That’s a lot for ECA and all part of the amazing community that’s been activelly helping with issues, feedback and contributions.

clojure-lsp

We had some important bumps with lots of fixes, new code actions and contributions! The main highlight here is the arrival of performance tests in the project, which is a long waited thing which would help unblock performance optmizations in clojure-lsp since now we have a way to reliable know a mean, p90, p80 of how much time clojure-lsp spend on its features like initialization.

2026.05.05-12.58.26

clojure-lsp-intellij

3.5.1 - 3.5.5


Jeaye Wilkerson

2026 Annual Funding Report 2. Published May 8, 2026.

Howdy folks! Thank you so much for the sponsorship this year. For the last two months, I have been focused on compiler architecture and optimization for jank.

On the compiler architecture side, I have designed and implemented a custom intermediate representation (IR) for jank programs which sets the stage for writing Clojure-specific optimization passes. This IR operates at the level of Clojure’s semantics, which is much higher level than LLVM IR, and so we are able to perform optimizations which LLVM could never do for us.

On the optimization side, I have taken the first benchmark of many, recursive fibonacci, and I have optimized it to be nearly twice as fast as Clojure JVM, for the same exact code. This benchmark is the first of many and I will be following up with more benchmark optimization results in the coming two months, using our new IR as a platform for optimizing jank’s performance.

To read all about the details of jank’s IR and the benchmark optimization, take a look at this blog post:


Michiel Borkent

2026 Annual Funding Report 2. Published May 11, 2026.

In this post I’ll give updates about open source I worked on during March and April 2026.

To see previous OSS updates, go here.

Sponsors

I’d like to thank all the sponsors and contributors that make this work possible. Without you, the below projects would not be as mature or wouldn’t exist or be maintained at all! So a sincere thank you to everyone who contributes to the sustainability of these projects.

gratitude

Current top tier sponsors:

Open the details section for more info about sponsoring.

Sponsor info

If you want to ensure that the projects I work on are sustainably maintained, you can sponsor this work in the following ways. Thank you!

Updates

Babashka conf and Dutch Clojure Days 2026

Babashka Conf 2026 was held on May 8th in the OBA Oosterdok library in Amsterdam! David Nolen, primary maintainer of ClojureScript, was our keynote speaker. We’re excited to have Nubank, Exoscale, Bob, Flexiana and Itonomi as sponsors. Nubank and Exoscale are hiring. Wendy Randolph was our event host. For the schedule and other info, see babashka.org/conf.
The day after babashka conf, Dutch Clojure Days 2026 was also held - so it was a great weekend in Amsterdam!
Hope to have seen many of you there!

Projects

In the last two months I spent significant time organizing babashka conf, but made progress in several projects as well.

My upstream work to enable async/await in ClojureScript was merged in the beginning of March. The implementation mirrors squint. Thanks David for reviewing and merging. Also deftest now supports an ^:async annotation so you can use async/await and don’t need to mess around with the cljs.test/async macro anymore:

I’ll be presenting this work at the Dutch Clojure Days.

Rebel-readline is now bb compatible. The work involved mainly exposing more JLine stuff and making sure rebel-readline didn’t hit any internal JLine APIs. One step to drive this to completion was to make a dependency, compliment, bb compatible. Thanks both to Bruce and Alexander for the cooperation.

Squint now supports cljs.test and multimethods! clojure-mode was ported to use the new cljs.test.

On the cream front, I put in effort to make the binary smaller and have been keeping up with the new GraalVM EA releases. I’ve been posting bug reports to the crema maintainer. Currently there’s still an unfixed bug around core.async that I have trouble reproducing in pure Java. I also added lots of library tests to CI so I can ensure stability in the long run. For now it remains experimental, but the direction is promising.

A performance PR to weavejester/dependency speeds up depend, depends? and topo-sort significantly, so clerk notebooks render faster.

The cljfmt library, also by @weavejester, now fully runs from source in babashka. The Java diff library that wasn’t bb-compatible was replaced with text-diff, but only for the babashka path. The JVM build of cljfmt still uses the original Java diff library, with a possible switch later once text-diff has matured.

Several SCI fixes were made to improve Clojure compatibility between babashka and Clojure. E.g. records can now support extending to IFn which was a blocker for some Clojure libs that tried to run in bb so far.

Clj-kondo 2026.04.15 got a few new linters thanks to @jramosg for stewarding most of these. It also has better out of the box potemkin support, and @alexander-yakushev contributed a wave of performance improvements.

Updates per project below. Bullets are highlights; see each project’s CHANGELOG.md for the full list.

Contributions to third party projects:

Other projects

These are (some of the) other projects I’m involved with but little to no activity happened in the past two months.

Click for more details