Meta Redux: Clojurists Together Update: May and June 2026

Wait 5 sec.

Some of you might know that Clojurists Together are supporting my work on nREPL, CIDER and friendsthis year. Normally I send them a bi-monthly progress report, but I saw some other people who gotfunding for their OSS work publish those reports as blog posts for the broader public and I thoughtto try this for a change.The past two months were super productive. I had a lot of inspiration during this period and I managedto tackle a lot of long-standing ideas and issues across the entire nREPL/CIDER ecosystem. Funnily enough,I also managed to grow the ecosystem with a couple of brand new projects, but more about those later.The big highlights from my perspective: CIDER 1.22 is out CIDER 2.0 is essentially ready and needs more user testing Sayid is reborn Two brand new projects saw the light of day: port and neat Piggieback 0.7.0 is out (and Weasel got modernized while I was in the area) clj-refactor and refactor-nrepl got some love as wellBelow you’ll find more details about the work I did, project by project.CIDERCIDER 1.22 (“São Miguel”) landed in mid-June, wrapping up the 1.x series. Itsmain features: a registry for jack-in tools, so third parties can plug new build tools andClojure dialects into cider-jack-in a “default session” escape hatch from sesman’s project-based dispatch keyword-argument versions of the low-level request APIs, alongside a properdecoupling of the nREPL client layer from CIDER’s UIIt also fixed a long list of small annoyances: severe editor lag in unlinkedbuffers, several TRAMP and SSH tunnel problems, request id leaks, and a bunchof broken menu entries. CIDER 1.22.0 CIDER 1.22.2 (plus a quick 1.22.1 fixing a docs site problem)Right after that I switched the development version to 2.0 and most of theplanned work is already done. The headline items so far: transient menus for all the command groups (plus new menus for the debuggerand the inspector) inline stepwise macroexpansion SLIME-style call graph browsers (who-calls, who-implements and friends) source-based find-references a tap> buffer and a dedicated trace buffer namespace load-state indicators the revival of rich content in the REPLThat last one deserves a special mention: evaluationresults that are images now render inline out of the box, and file/URL resultsoffer their content on demand, six years after the feature had to be disabledover its safety problems. There was also a big cleanup pass: consolidatedconfiguration options, the REPL history browser renamed to cider-history toend a long-standing naming clash, theme-aware faces instead of hardcoded colors,refreshed docs and a regenerated refcard. CIDER 2.0 is available from MELPAsnapshots and I’d love for more people to take it for a spin before the finalrelease.cider-nreplLots of cider-nrepl releases, driving the CIDER work above: cider-nrepl 0.60.0 added the ops backing the new protocol exploration commands (cider/who-implements, cider/type-protocols, cider/protocols-with-method). cider-nrepl 0.61.0 brought ClojureScript test support, a ClojureScript macroexpansion fix, formatting that honors the project’s cljfmt configuration, and a pprint backed by orchard.pp. cider-nrepl 0.62.0-alpha1 and 0.62.0-alpha2 hardened the content-type and slurp middleware (URL scheme allowlist, size caps, graceful fetch errors) and cleaned up the response protocol, which is what made it safe to turn rich content on by default in CIDER 2.0.Along the way the project’s build was migrated from Leiningen to tools.deps, which required a new MrAnderson release (see the blog posts below).OrchardOrchard, the library that powers much of cider-nrepl’s functionality, kept pace: Orchard 0.42.0 and Orchard 0.43.0 continued the inspector polish, added symbol classification to orchard.meta, a programmatic listener API for the tracer, and protocol/multimethod introspection in orchard.xref. The project also moved to tools.deps and its CI now covers JDK 26.SayidSayid, the omniscient Clojure debugger, had been dormant for years and I finally gave it the revival it deserved: Sayid 0.2.0 was the big modernization pass: new mx.cider/sayid coordinates, a documented nREPL middleware API, a consolidated op surface (37 ops down to 26) and fixes for the most annoying Emacs client breakages. Sayid 0.3.0 followed with usability work: no more frozen Emacs during the reload workflow, simpler query commands and help buffers generated from the keymaps.portport is a brand new project I started in May: a minimalist Clojure interactive programming environment for Emacs, built on prepl instead of nREPL. It went from nothing to three releases in the course of the month: port 0.1.0 port 0.2.0 port 0.3.0, which added eldoc with active argument highlighting, a wire-level message log for debugging and a roughly 10x speedup in handling large prepl responses.I don’t have any particular plans for the future of this project - it was just something that I wanted to experiment with for a while.I see it as an interesting option for people looking for some middle ground between inf-clojure and CIDER.neatneat is the other new arrival: a small, language-agnostic nREPL client for Emacs. neat 0.1.0 has the essentials in place: a pure-elisp bencode codec, a comint-based REPL, and a source-buffer minor mode with eval, completion, eldoc, xref and doc lookup, tested against Clojure, Babashka and Basilisp. It’s early days, but it’s a nice testbed for exercising the nREPL protocol outside CIDER.This project also means I’ve dropped any plans to try to make CIDER a language-agnostic development environment. Going forward CIDER will focus only onClojure-like languages, and everything else will be covered by neat.Piggieback and WeaselThe nREPL org saw some ClojureScript-flavored action: Piggieback 0.6.2 and Piggieback 0.7.0. The 0.7.0 release makes load-file evaluate the editor’s buffer contents instead of re-reading from disk, tears down ClojureScript REPLs when their sessions close (no more leaked Node processes) and surfaces ClojureScript status in the describe response. Weasel 0.8.0 modernized the WebSocket REPL: the client now uses the platform’s native WebSocket, so it runs in any modern JavaScript runtime (browsers, Node 22+, Deno, Bun, workers), and the minimum requirements moved to Clojure/ClojureScript 1.12.I also backfilled proper GitHub releases for the historic tags of both projects, so their release history is finally browsable.Improving the ClojureScript support in CIDER has long been a major objective for me, and these small changes were some initial steps in that direction.refactor-nrepl and clj-refactorrefactor-nrepl got three releases: 3.12.0, 3.13.0 and 3.14.0, the last one making the AST-based indexing much faster and more reliable. clj-refactor.el received a round of maintenance on master as well, and will get a new release after I wrap up the work on CIDER 2.0.I’m still pondering the future of both projects, as I plan to move the most useful refactor-nrepl features (those that don’t carry a lot of complexity) to CIDERand cider-nrepl eventually, and I’m not sure that the flagship AST-powered refactorings are very competitive these days (compared to clojure-lsp and static project-wide analysis a la clj-kondo in general).I’ll write a bit more about this and I’d certainly appreciate more feedback from the users of clj-refactor on the subject. It’s funny thatI’ve been maintaining the project for ages, but I’ve never really used it (mostly due to its brittleness in the past). I think I managed to addresssome of the biggest problems recently, but perhaps this happened too late and the project has lost its relevance by now.Blog postsI wrote a few articles related to the work above: Port: a minimalist prepl client for Emacs neat: a language-agnostic nREPL client for Emacs nREPL Forever CIDER 1.22 (“São Miguel”) MrAnderson 0.6 CIDER 2.0 is Brewing… nREPL and ClojureScript: Demystifying Piggieback Sayid ReduxWrapping upBig thanks to Clojurists Together, Nubank and the other organizations and people supporting my Clojure OSS work! I love you and none of this would have happened without you.Sadly, the amount of financial support my projects receive has eroded massively over the past 4 years and I’ve kind of lost hope that this negative trend will eventually be reversed. It was never easy to maintain many popular OSS projects, but the job certainly hasn’t got any easier or more rewarding in recent years…Overall, a super productive two months. Hopefully the next two are going to be just as productive, although I have to admit I’ve plucked most of the low-hanging fruit already. Then again, I’ve said this many times in the past, so one never knows…