OSS updates March and April 2025
In this post I'll give updates about open source I worked on during March and April 2025.
To see previous OSS updates, go here .
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!
On to the projects that I've been working on!
Blog posts I blogged about an important improvement in babashka regarding type hints here .
Interviews Also I did an interview with Jiri from Clojure Corner by Flexiana, viewable here .
VIDEO
Updates Here are updates about the projects/libraries I've worked on in the last two months.
babashka : native, fast starting Clojure interpreter for scripting.Improve Java reflection based on provided type hints (read blog post here ) Add compatibility with the fusebox library Fix virtual ThreadBuilder
interop Add java.util.concurrent.ThreadLocalRandom
Add java.util.concurrent.locks.ReentrantLock
Add classes:java.time.chrono.ChronoLocalDate
java.time.temporal.TemporalUnit
java.time.chrono.ChronoLocalDateTime
java.time.chrono.ChronoZonedDateTime
java.time.chrono.Chronology
#1806 : Add cheshire.factory
namespace (@lread )Bump GraalVM to 24
Bump SCI to 0.9.45
Bump edamame to 1.4.28
#1801 : Add java.util.regex.PatternSyntaxException
Bump core.async to 1.8.735
Bump cheshire to 6.0.0
Bump babashka.cli to 0.8.65
clerk : Moldable Live Programming for ClojureReplace tools.analyzer with a more light-weight analyzer which also adds support for Clojure 1.12 squint : CLJS syntax to JS compiler#653 : respect :context expr
in compile-string
#657 : respect :context expr
in set!
expression#659 : fix invalid code produced for REPL mode with respect to return
#651 Support :require
+ :rename
+ allow renamed value to be used in other :require clauseFix #649 : reset ns when compiling file and fix initial global object Fix #647 : emit explicit null
when written in else branch of if
Fix #640 : don't emit anonymous function if it is a statement (@jonasseglare ) Fix #643 : Support lexicographic compare of arrays (@jonasseglare ) Fix #602 : support hiccup-style shorthand for id and class attributes in #jsx
and #html
Fix #635 : range
fixes Fix #636 : add run!
defclass
: elide constructor when not providedFix #603 : don't emit multiple returns Drop constructor requirement for defclass
clj-kondo : static analyzer and linter for Clojure code that sparks joy.#2522 : support :config-in-ns
on :missing-protocol-method
#2524 : support :redundant-ignore
on :missing-protocol-method
#1292 : NEW linter: :missing-protocol-method
. See docs #2512 : support vars ending with .
, e.g. py.
according to clojure analyzer#2516 : add new --repro
flag to ignore home configuration#2493 : reduce image size of native image#2496 : Malformed deftype
form results in NPE
#2499 : Fix (alias)
bug (@Noahtheduke )#2492 : Report unsupported escape characters in strings#2502 : add end locations to invalid symbol#2511 : fix multiple parse errors caused by incomplete formsdocument var-usages location info edge cases (@sheluchin ) Upgrade to GraalVM 24 Bump datalog parser Bump built-in cache SCI : Configurable Clojure/Script interpreter suitable for scriptingFix #957 : sci.async/eval-string+
should return promise with :val nil
for ns form rather than :val <Promise>
Fix #959 : Java interop improvement: instance method invocation now leverages type hints Fix #942 : improve error location of invalid destructuring Add volatile?
to core vars Fix #950 : interop on local in CLJS Bump edamame to 1.4.28
quickdoc : Quick and minimal API doc generation for ClojureFix #32 : fix anchor links to take into account var names that differ only by case Revert source link in var title and move back to <sub>
Specify clojure 1.11 as the minimal Clojure version in deps.edn
Fix macro information Fix #39 : fix link when var is named multiple times in docstring Upgrade clj-kondo to 2025.04.07
Add explicit org.babashka/cli
dependency CLI : Turn Clojure functions into CLIs!#119 : format-table
now formats multiline cells appropriately (@lread )Remove pom.xml
and project.clj
for cljdoc #116 : Un-deprecate :collect
option to support custom transformation of arguments to collections (@lread )Support :collect
in :spec
process : Clojure library for shelling out / spawning sub-processes#163 , #164 : Program resolution strategy for exec
and Windows now matches macOS/Linux/PowerShell (@lread )Fix memory leak by executing shutdown hook when process finishes earlier than VM exit (@maxweber ) html : Html generation library inspired by squint's html tagFix #3 : allow dynamic attribute value: (html [:a {:a (+ 1 2 3)}])
Fix #9 : shortcuts for id and classes cherry : Experimental ClojureScript to ES6 module compilerAdd cljs.pprint/pprint
Add add-tap
Bump squint compiler common which brings in new #html
id and class shortcuts + additional features and optimizations, such as an optimization for aset
nbb : Scripting in Clojure on Node.js using SCIAdd better Deno + jsr:
dependency support, stay tuned. instaparse-bb : Use instaparse from babashkaedamame : Configurable EDN/Clojure parser with location metadata#117 : throw on triple colon keywordfs - File system utility library for Clojure#141 : fs/match
doesn't match when root dir contains glob or regex characters in path#138 : Fix fs/update-file
to support paths (@rfhayashi )sql pods : babashka pods for SQL databasesUpgrade to GraalVM 23, fixes encoding issue with Korean characters Other projects These are (some of the) other projects I'm involved with but little to no activity happened in the past month.
Click for more details
rewrite-edn : Utility lib on top ofdeps.clj : A faithful port of the clojure CLI bash script to Clojurescittle : Execute Clojure(Script) directly from browser script tags via SCIrewrite-clj : Rewrite Clojure code and ednpod-babashka-go-sqlite3 : A babashka pod for interacting with sqlite3tools-deps-native and tools.bbuild : use tools.deps directly from babashkahttp-client : babashka's http-clienthttp-server : serve static assetsbbin : Install any Babashka script or project with one commansci.configs : A collection of ready to be used SCI configs.Added a configuration for cljs.spec.alpha
and related namespaces qualify-methods Initial release of experimental tool to rewrite instance calls to use fully qualified methods (Clojure 1.12 only0 neil : A CLI to add common aliases and features to deps.edn-based projects.tools : a set of bbin installable scriptssci.nrepl : nREPL server for SCI projects that run in the browserbabashka.json : babashka JSON library/adaptersquint-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.grasp : Grep Clojure code using clojure.spec regexeslein-clj-kondo : a leiningen plugin for clj-kondohttp-kit : Simple, high-performance event-driven HTTP client+server for Clojure.babashka.nrepl : The nREPL server from babashka as a library, so it can be used from other SCI-based CLIsjet : CLI to transform between JSON, EDN, YAML and Transit using Clojurepod-babashka-fswatcher : babashka filewatcher podlein2deps : leiningen to deps.edn convertercljs-showcase : Showcase CLJS libs using SCIbabashka.book : Babashka manualpod-babashka-buddy : A pod around buddy core (Cryptographic Api for Clojure).gh-release-artifact : Upload artifacts to Github releases idempotentlycarve - Remove unused Clojure vars4ever-clojure - Pure CLJS version of 4clojure, meant to run forever!pod-babashka-lanterna : Interact with clojure-lanterna from babashkajoyride : VSCode CLJS scripting and REPL (via SCI )clj2el : transpile Clojure to elispdeflet : 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
Published: 2025-05-02
Tagged:
clojure
oss updates