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:
- 5.22 (March 3): a big bug-fix dump —
clojure-sort-nsno longer mangles:gen-class,clojure-thread-last-alldoesn’t eat closing parens into line comments,clojure-add-aritypreserves arglist metadata,letfnbindings get a function face, andedn-modeindents data like data. On the feature side: a newclojure-preferred-build-toolfor projects that have several build tool files lying around, a dedicatedclojure-discard-facefor#_forms, and project root detection for ClojureCLR’sdeps-clr.edn. - 5.23 (March 25): adopts the modern indent spec tuple format (
((:block N)),((:inner D)), …) thatclojure-ts-modeandcljfmtalready use. The legacy format (integers,:defn, positional lists) still works, but it’s slated for removal inclojure-mode6. There’s a new publicclojure-get-indent-specAPI, and CI moved off CircleCI onto GitHub Actions.
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:
- Dropped
http-kitin favor of the JDK’s built-in HTTP client (one fewer dependency, one less thing to break). - Restored
hotload-dependencyon top oftools.deps. - A new
def-opmacro to simplify how ops are defined and how errors are handled. - A shared test session helper, a
make linttarget, and modernized CircleCI executors. - A full dependency bump.
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:
nrepl-client.eldecoupled from CIDER. It no longer depends onsesmanor any of CIDER’s UI layer, which makes the nREPL client genuinely reusable outside CIDER. I also splitcider-connection.elintocider-session.el+cider-connection.eland decoupledcider-eval.elfromcider-repl.el.cider-jack-ingot a serious overhaul: a proper jack-in tool registry, unified entry points around shared helpers, TRAMP fixes, sane runtime defaults, andcider--resolve-commandnow actually works over TRAMP.- A pile of resilience fixes for the nREPL client: tear down the SSH tunnel on abnormal client disconnect, spawn the tunnel without a shell, plug request-id leaks in raw response handlers, stop response-handler errors from poisoning the response queue, and put a FIFO cap on
nrepl-completed-requestsso it can’t grow without bound. - Namespaced ops everywhere, matching
cider-nrepl0.59 - with a fallback to the legacy op names so oldercider-nreplkeeps working. - A new
nrepl-make-eval-handlerwith a keyword-arg API (and removal of the trivial wrappers that used to live around it). - Mode-line spinner while tests are running, which is a small thing but I missed it every time I ran a long test suite.
- Lots of test coverage backfill on the client side.
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:
- Modernize deps and migrate CI to GitHub Actions
- Fix resource leaks, null safety, and minor code issues
- Exclude
clj-kondo.exportsfrom jar extraction
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.
- Some of our CT funds are being set aside to support three efforts this year:
- sponsoring conference attendance for new Clojurians,
- supporting Clojure and non-Clojure meetups with a “pizza fund” (WIP),
- hosting an experimental nano-conj (in-person multi-day open-ended hack-on-clojure “retreat”) (WIP)
- On the “dev side”….
- Worked through most of the backlog of exercises done in mobs and released on https://exercises.clojure.camp/
- Continued on badge system, mostly wrestling with display of the “learning graph”
- Other happenings
- Hosted an in-person workshop at the Recurse Center (with another planned)
- Started a new book club reading Knesl’s “Applied High Order Functions in Clojure”
- Early planning for our presence at Conj this year (may be doing a “Learning Together” track on the workshop day, featuring Mobbing and Pairing sessions)
- Raf has a major commitment finishing up in May, so June+July should see a big push on Camp projects (and resuming regular Mobs)
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
- Plugins: New plugin system to load external configuration from git repos or local paths, with an official marketplace at plugins.eca.dev. Plugins can provide skills, MCP servers, agents, commands, hooks, rules and arbitrary config overrides, managed via
/plugins,/plugin-installand/plugin-uninstall. - Remote web control: New remote web control server for browser-based chat observation and control via web.eca.dev, allowing you to observe and drive ECA chats from any browser.
- Trust mode: Clients can now auto-accept tool calls that would require manual approval, with regex patterns support for fine-grained
shell_commandapproval. - Task tool: Built-in task tracking tool to let the agent plan and follow multi-step work more reliably.
- Background shell commands: New
backgroundparameter onshell_commandand a dedicatedbg_jobtool to manage long-running processes like dev servers and watchers. - Chat list, open, fork and
/model: Newchat/list,chat/openand/forkcommands let clients render a chat sidebar and clone existing conversations, plus a new/modelcommand to switch model mid-chat. - Message flags: Named checkpoints inside a chat for resuming and forking from a specific point, with full chat history preserved across compactions via tombstone markers.
ask_usertool: LLMs can now ask the user questions with optional selectable options, fully integrated with hooks and trust modes.- Image generation: Support for OpenAI’s built-in
image_generationtool via the Responses API, including image edits across turns and MCP tools that return image content. - Prompt steering: New
chat/promptSteernotification to inject user messages into a running prompt at the next LLM turn boundary, without stopping it. - MCP improvements: New
mcp/addServer,mcp/removeServer,mcp/updateServer,mcp/enableServerandmcp/disableServerrequests to manage MCP servers at runtime, plus much better OAuth spec compliance and a switch from the Java SDK to plumcp. - More providers and models: Added LiteLLM, LM Studio, Mistral and Moonshot as built-in providers with login support, Claude Opus 4.7, deepseek-v4-pro, gpt-5.4 and gpt-5.5 variants, and GitHub Enterprise Copilot.
ECA Desktop
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
- Fix
cyclic-dependencieslinter falsely reporting cycles for(require ...)calls inside(comment ...)forms. #2107 - Support find-definition for fully qualified vars even when the namespace is not explicitly required. #2028
- Fix
create-testcode action appending a duplicatedeftestwhen one with the matching name already exists, now navigating to the existing deftest instead. #2274 - Change the default of
:clean :ns-inner-blocks-indentationfrom:next-lineto:keep, soclean-ns(including the automatic run afteradd-missing-libspec,add-require-suggestion,add-missing-import, andmove-form) no longer reflows the:require/:importblock when the user has not configured an indentation style. Users who want the previous behavior can set:clean :ns-inner-blocks-indentation :next-lineexplicitly. #2261 - Fix
add-missing-requirerefer suggestions leaking across languages, so a.cljfile no longer offers refers defined only in.cljsfiles (and vice versa). #2271 - Add
:private-by-default-on-extract?setting to control whether extracted functions and defs are private by default. #2258 - Measure performance of code actions
- Avoid incorrect circular dependency errors from
:as-aliasby working around clj-depend bug. - Fix inline-def to work with defs with metas.
- Bump clj-kondo to
2026.04.16-20260503.191510-9. - bump up timeout for code action performance measurement, include p90 measurement #2236
- implementation of inline function. #1827
- Fix initialization crash when a source file has syntax errors (e.g. unbalanced parens) by using safe parser in unused-public-var linter’s
:gen-classcheck. #2242 - Bump rewrite-clj to
1.2.54. - implement move to :let refactoring #1732
- Measure performance of didOpen and didChange
- if code-action selection end-position args aren’t provided, don’t try to use them #2276
- add unit tests for command actions location args #2279
- New code actions: replace
:referwith:asand replace:aswith:refer, with support for merging into existing:refervectors.
clojure-lsp-intellij
3.5.1 - 3.5.5
- Implement
createServerInstallerandcreateLanguageServerSettingsContributoronClojureLanguageServerFactory. Newer LSP4IJ versions added these as default interface methods, but ourdef-extension/gen-class-backed factory always overrides interface methods, so explicit stubs are required. - Fix
slurp-action-testagainst newer LSP4IJ versions. Bumpclj4intellijto0.9.0and switch the test fixture tosetup-heavyso the project base has a real filesystem path (LSP4IJ’sFileSystemWatcherManagercallsVirtualFile.toNioPath(), which throws on the in-memoryTempFileSystemused by light fixtures). - Fix new namespace creation incorrectly creating files under the absolute host filesystem path. #83
- Fix
QuoteHandlercompile error by mergingBAD_CHARACTERinto the quote-handlerTokenSet. - Fix auto closing single quotes.
- Improve CI to have plugin zips in all releases, avoiding wait for Jetbrains approval.
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.
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!
- Github Sponsors
- The Babashka or Clj-kondo OpenCollective
- Ko-fi
- Patreon
- Clojurists Together
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.
-
babashka: native, fast starting Clojure interpreter for scripting.
- Released 1.12.216, 1.12.217 and 1.12.218
- Support rebel-readline as external REPL provider:
- Add proxy support for
Completer,Highlighter,ParsedLine,Writer,Reader - Add
clojure.repl/special-docandclojure.repl/set-break-handler! - Add
clojure.main/repl-read - Add
org.jline.reader.Bufferto class allowlist
- Add proxy support for
- Add
clojure.java.javadocnamespace withjavadocavailable in REPL #1933 - Fix
(doc var),(doc set!)and other special forms #1932 - Support
(source inc)and(source babashka.fs/exists?)for built-in vars #1935 - Support
BABASHKA_REPL_HISTORYenv var for configurable REPL history location #1930 - Fix
deftypeanddefrecordinside non-top-level forms (e.g.let,testing) #1936 - #1948: add
java.util.HexFormatinterop support - #1403: fix uberscript warnings with
:as-alias - #1955: support
-versionas an alias for--version - #1954: add
clojure.lang.EdnReader$ReaderException - #1951: fix
--prepareflag skipping next token - #1967: expose
clojure.data.xml.tree/{flatten-elements,event-tree},clojure.data.xml.eventrecord constructors, andclojure.data.xml.jvm.parse/string-source - #1969: include
java.net.Proxyandjava.net.Proxy$TypeJava classes (@jeeger) - #1939: disable JLine backslash escaping/shell history commands (@bobisageek)
- Performance improvements for math operations and for calling functions on locals
- Add many new classes to reflection config:
java.lang.reflect.Constructor,java.lang.reflect.Executable,java.util.stream.Collectors,java.util.Comparator(forreify), and more - Bump JLine to 4.0.12, cheshire to 6.2.0,
nextjournal.markdownto 0.7.255, edamame to 1.5.39,data.xmlto 0.2.0-alpha11,jsoupto 1.22.2, rewrite-clj to 1.2.54, tools.cli to 1.4.256, transit-clj to 1.1.357, fs to 0.5.32 - Full changelog
-
SCI: Configurable Clojure/Script interpreter suitable for scripting
- Fix
recurwith 20+ args inloop(#1035) - Check
recurarity, throw when it doesn’t match (#1034) - Support
IFnondefrecord,deftypeandreify(#808, #1036) - Validate single binding pair in let-like conditional macros (#1037)
- Normalize SCI types in hierarchy lookups (#1033)
- Expose
IPrintWithWriteras protocol (#1032) - Optimize tight loops: fused binding nodes + specialized inlined calls (#1031)
- Support special form documentation in
docmacro - Include SCI types in
ns-map - Full changelog
- Fix
-
clj-kondo: static analyzer and linter for Clojure code that sparks joy.
- Released 2026.04.15
- #2788: NEW linter:
:not-nil?which suggests(some? x)instead of(not (nil? x)), and similar patterns withwhen-notandif-not(default level::off) - #2520: NEW linter:
:protocol-method-arity-mismatchwhich warns when a protocol method is implemented with an arity that doesn’t match any arity declared in the protocol (@jramosg) - #2520: NEW linter:
:missing-protocol-method-arity(off by default) which warns when a protocol method is implemented but not all declared arities are covered - #2768: NEW linter:
:redundant-declarewhich warns whendeclareis used after a var is already defined (@jramosg) - #1878: support potemkin’s
import-fn,import-macro, andimport-def - #2498: support new potemkin
import-vars:referand:renamesyntax - Performance optimizations across many linting paths (@alexander-yakushev) and hook-fn lookup caching to avoid repeated SCI evaluation
- Add type support for
pmapand future-related functions (future,future-call,future-done?,future-cancel,future-cancelled?) (@jramosg) - #2762: fix false positive:
throwwith string in CLJS no longer warns about type mismatch (@jramosg) - #2770: linter-specific ignores now correctly respect the specified linters
- #2773: align executable path for images to be
/bin/clj-kondo(@harryzcy) - #2621: load imports from symlinked config dir (@walterl)
- #2798: report correct filename and error details when
StackOverflowErroroccurs during analysis - Full changelog
-
cream: Clojure + GraalVM Crema native binary
- Followed each GraalVM EA release: EA21 shrunk the binary to ~175MB, EA22 brought a virtual-thread fix, EA23 fixed the forkjoin segfault, EA24 finally allowed re-enabling
clojure.core.async-test - Added smoke tests for
httpkit,nextjournal/markdown,clj-yaml, core.async ioc-macros - Updated 10M loop benchmark numbers for EA21
- Added Windows test status notes (still some failures on EA22)
- Followed each GraalVM EA release: EA21 shrunk the binary to ~175MB, EA22 brought a virtual-thread fix, EA23 fixed the forkjoin segfault, EA24 finally allowed re-enabling
-
squint: CLJS syntax to JS compiler
- Released 0.10.186, 0.11.187, 0.11.188 and 0.11.189
- Add multimethod support:
defmulti,defmethod,get-method,methods,remove-method,remove-all-methods,prefer-method,prefers, plus hierarchy opsisa?,derive,underive,make-hierarchy,parents,ancestors,descendants(#806) cljs.test/reportis now a multimethod, extensible viadefmethod.test-varnow fires:begin-test-var/:end-test-varevents.- Accept plain
awaitin async functions, in anticipation of CLJS next. The legacyjs-awaitandjs/awaitforms continue to work as aliases for now. - Add built-in
cljs.test/clojure.testsupport:deftest,is,testing,are,use-fixtures,async,run-tests - Fix
with-metanow preserves callability when applied to a function - #783: auto-load macros from
.cljcfiles via:require(no need for:require-macros); resolve qualified symbols from macro expansions - #784: resolve transitive macro deps and auto-import runtime deps from macro expansion
- #809: add
squint.compiler/compile*andsquint.compiler/transpile*which accept either a string or a sequence of pre-parsed forms, skipping theforms -> string -> formsroundtrip for SSR use cases - #810: shorthand classes in
#html/#jsxwere erased when an attrs map was present without a:classkey - Full changelog
-
cherry: Experimental ClojureScript to ES6 module compiler
- Accept plain
awaitas a special form, in anticipation of CLJS next - Multiple
:require-macrosclauses with:refernow properly accumulate instead of overwriting each other - Add
cherry.testwithclojure.test-compatible testing API:deftest,is,testing,are,use-fixtures,async,run-tests. Macros are compiler built-ins (shared with squint), so no:require-macrosplumbing is needed in user code.
- Accept plain
-
nbb: Scripting in Clojure on Node.js using SCI
- Released 1.4.207
- #408: support
IFnondefrecordandreify - Fix REPL and nREPL not awaiting promesa thenables (e.g.
p/thenresults)
-
fs: file system utility library for Clojure
- Released 0.5.32 and 0.5.33
- #232: add
touchfn (@lread & @borkdude) - #197: docstring review: consistent arg naming, improved docstrings, added
Coercions and Returns/Argument Naming Conventionssections to README (@lread) - #231: get/set attribute functions were never following links. They now respect the
:nofollow-linksoption (@lread) - #254: fix
split-extandextensionon dotfiles with parent dirs (e.g.foo/.gitignore) - #202:
gzip&gunzipnow honor dest dir when specified (@lread) - #215: document effect of
umaskon created files and directories (@lread) - #182: enable soft & hard link tests on Windows (@lread)
- #242: test: add JDK 26 to CI test matrix (@lread)
-
clerk: Moldable Live Programming for Clojure
- Improve analysis performance by bumping
weavejester/dependency(#808) - Bump SCI to
v0.12.51(#793), enablesasync/awaitin viewer functions - Improve presentation performance (#803)
- Remove bb-specific code for array-map data structure (#805)
- Preserve TOC opts (#806)
- Remove redundant declare of
present+reset!(#809) - Fix
build-graphcrash on non-Clojure source files (#810)
- Improve analysis performance by bumping
-
edamame: configurable EDN and Clojure parser with location metadata and more
-
Nextjournal Markdown: A cross-platform Clojure/Script parser for Markdown
- Released 0.7.225
- Add option
:disable-footnotes trueto disable parsing footnotes #67
-
quickdoc: Quick and minimal API doc generation for Clojure
-
grasp: Grep Clojure code using clojure.spec regexes
- Released 0.2.5
- Bump SCI to 0.12.51, Clojure to 1.12.4
- Upgrade CI to GraalVM 25; move Windows CI from Appveyor to GitHub Actions
- Fix bug in native which dropped all match results (@bsless)
- Fix circular reference in
grasp.impl
-
babashka.nrepl: The nREPL server from babashka as a library
- Lock output stream in
sendto prevent interleaved bencode frames from concurrent writes infoandlookupop refinements:lookupcarries nestedinfomap whereasinfois a flatmap
- Lock output stream in
-
pod-babashka-instaparse: instaparse from babashka
- Expose
add-line-and-column-info-to-metadata - Drop macOS Intel builds, now building for macOS aarch64 only
- Migrate Windows CI from Appveyor to GitHub Actions
- Upgrade CI to GraalVM 25
- Add
--features=clj_easy.graal_build_time.InitClojureClassesto native-image
- Expose
-
instaparse-bb: Use instaparse from babashka
- Released 0.0.7
- Bump pod to 0.0.7
- Add
add-line-and-column-info-to-metadataandget-failure - Fix opts passing in
parser(e.g.:output-format :enlive) - Support
java.net.URLfor grammars
-
babashka-sql-pods: babashka pods for SQL databases
- Released 0.1.5 and 0.1.6
- #74: add DB2 support (@janezj)
- #72: handle concurrent requests (@katangafor)
- Upgrade to Oracle GraalVM 25.0.2; bump
next.jdbc,cheshire(Jackson 2.12 -> 2.20), PostgreSQL, MSSQL, HSQLDB, MySQL Connector/J drivers - Remove DuckDB support
- #51: macOS binaries are now aarch64 only
-
http-client: HTTP client built on java.net.http
- Replace defunct
httpstat.usexamples withhttpbin.orgin tests
- Replace defunct
-
neil: A CLI to add common aliases and features to deps.edn-based projects
- Fix README instructions for dev installation (@teodorlu)
-
deps.clj: a faithful port of the clojure CLI bash script to Clojure
Contributions to third party projects:
- ClojureScript:
- weavejester/dependency: improve performance of
depend,depends?, andtopo-sort - weavejester/cljfmt: #404 babashka compatibility via new text-diff lib (merged!)
- Engelberg/instaparse: submitted #242 for babashka compatibility. Required
:bbreader conditionals to replace theAutoFlattenSeqdeftype with plain vectors plus metadata markers, swap theSegmentdeftype for areify-basedCharSequence, and add a CI test runner. Open, awaiting review.
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
- scittle: Execute Clojure(Script) directly from browser script tags via SCI
- pod-babashka-go-sqlite3: A babashka pod for interacting with sqlite3
- unused-deps: Find unused deps in a clojure project
- pod-babashka-fswatcher: babashka filewatcher pod
- sci.nrepl: nREPL server for SCI projects that run in the browser
- babashka.nrepl-client
- http-server: serve static assets
- sci.configs: A collection of ready to be used SCI configs.
- html: Html generation library inspired by squint’s html tag
- rewrite-edn: Utility lib on top of rewrite-clj
- rewrite-clj: Rewrite Clojure code and edn
- tools-deps-native and tools.bbuild: use tools.deps directly from babashka
- bbin: Install any Babashka script or project with one command
- qualify-methods
- Initial release of experimental tool to rewrite instance calls to use fully qualified methods (Clojure 1.12 only)
- tools: a set of bbin installable scripts
- babashka.json: babashka JSON library/adapter
- speculative
- squint-macros: a couple of macros that stand-in for applied-science/js-interop and promesa to make CLJS projects compatible with squint and/or cherry.
- lein-clj-kondo: a leiningen plugin for clj-kondo
- http-kit: Simple, high-performance event-driven HTTP client+server for Clojure.
- jet: CLI to transform between JSON, EDN, YAML and Transit using Clojure
- lein2deps: leiningen to deps.edn converter
- cljs-showcase: Showcase CLJS libs using SCI
- babashka.book: Babashka manual
- pod-babashka-buddy: A pod around buddy core (Cryptographic Api for Clojure).
- gh-release-artifact: Upload artifacts to Github releases idempotently
- carve - Remove unused Clojure vars
- 4ever-clojure - Pure CLJS version of 4clojure, meant to run forever!
- pod-babashka-lanterna: Interact with clojure-lanterna from babashka
- joyride: VSCode CLJS scripting and REPL (via SCI)
- clj2el: transpile Clojure to elisp
- deflet: make let-expressions REPL-friendly!
- deps.add-lib: Clojure 1.12’s add-lib feature for leiningen and/or other environments without a specific version of the clojure CLI
- CLI: Turn Clojure functions into CLIs!
- quickblog: light-weight static blog engine for Clojure and babashka
- process: Clojure library for shelling out / spawning sub-processes
- parmezan: fixes unbalanced or unexpected parens or other delimiters in Clojure files
- reagami: A minimal zero-deps Reagent-like for Squint and CLJS