In this post I'll give updates about open source I worked on during January and February 2024.
To see previous OSS updates, go here.
I'd like to thank all the sponsors and contributors that make this work possible. Like you can read on Bozhidar Batsov's blog these aren't the easiest times for Open Source sponsored software. I have no reason to complain, but I did see a similar drop in sponsoring in the last year. I'm thankful for those who sponsored my projects in the past and even more for those who keep doing so!
Without you, the below projects would not be as mature or wouldn't exist or be maintained at all.
Current top tier sponsors:
Open the details section for more info about sponsoring.
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!
If you're used to sponsoring through some other means which isn't listed above, please get in touch.
On to the projects that I've been working on!
Here are updates about the projects/libraries I've worked on last month.
clj-kondo: static analyzer and linter for Clojure code that sparks joy. Released 2024.02.12
String*
) may occur outside of metadatabigint
in CLJS is a known symbol in extend-type
:java-static-field-call
locally(Thread/interrupted)
(System/err)
assert
in hooksdatomic-type-extensions
to datalog syntax checking:exclude-files
in combination with linting from stdin + provided --filename
argument:macroexpand
hook:unused-value
using :config-in-call
:not-a-function
linter in reader tagns-map
unmaps var defined prior in namespaceif
/when
condition as always truthy, e.g. (when #'some-var 1)
squint: CLJS syntax to JS compiler
simple-benchmark
doseq
expression with set!
in function return position"exports"
field to package.json
<
and >
in JSX stringsnull
in statement positionbabashka: native, fast starting Clojure interpreter for scripting. Two releases in the past two months with the following changes:
:deps-root
as part of hash to avoid caching issue with deps.clj
(.readPassword (System/console))
by upgrading GraalVM to 21.0.2
read-string
should use non-indexing reader for compatibilty with Clojurejavax.net.ssl
classeshash-unordered-coll
--version
or version
etcclojure.reflect/reflect
java.util.ScheduledFuture
, java.time.temporal.WeekFields
Runnable
to be used without importcatch
to be used as var nameclojure.lang.LongRange
bb.edn
to be empty--debug
is enabledbabashka.cli
to 0.8.55
which contains subcommand improvementsdeps.clj
to 1.11.1.1435
babashka.fs
to 0.5.20
plumbing.core
shadow.css
by improving tools.reader
compatibilityprocess: Clojure library for shelling out / spawning sub-processes
exec
now converts :env
and :extra-env
keywords (@lread)java.nio.file.Path
as :dir
argumentPath
in :out
, :err
and :in
:out :bytes
(@hansbugge)babashka.json: babashka JSON library/adapter
:key-fn
+ read
behavior for cheshiretools-deps-native and tools.bbuild: use tools.deps directly from babashka
edamame: Configurable EDN/Clojure parser with location metadata
^[String]
metadata notation which desugars into ^{:param-tags [String]}
:map
and :set
options to coerce map/set literals into customizable data structures, for example, an ordered collections to preserve key order.nbb: Scripting in Clojure on Node.js using SCI
cljs.test/run-test
macropromesify
http-client: babashka's http-client
CLI: Turn Clojure functions into CLIs!
:opts
to :error-fn
input--dirs
, --only
, etc--no-option
(--no
prefix) in combination with subcommands:exec-args
over spec :default
sdispatch
improvements (@Sohalt, @borkdude)::cmds
order of entries in the table doesn't matterfoo --opt1=never bar --opt2=always
SCI: Configurable Clojure/Script interpreter suitable for scripting and Clojure DSLs
hash-ordered-coll
read-string
should use non-indexing readerThese are (some of the) other projects I'm involved with but little to no activity happened in the past month.
cherry: Experimental ClojureScript to ES6 module compiler
fs - File system utility library for Clojure
neil: A CLI to add common aliases and features to deps.edn-based projects
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.
sci.configs: A collection of ready to be used SCI configs.
grasp: Grep Clojure code using clojure.spec regexes
lein-clj-kondo: a leiningen plugin for clj-kondo
http-kit: Simple, high-performance event-driven HTTP client+server for Clojure.
deps.clj: A faithful port of the clojure CLI bash script to Clojure
babashka.nrepl: The nREPL server from babashka as a library, so it can be used from other SCI-based CLIs
rewrite-edn: Utility lib on top of rewrite-clj with common operations to update EDN while preserving whitespace and comments
jet: CLI to transform between JSON, EDN, YAML and Transit using Clojure
quickdoc: Quick and minimal API doc generation for Clojure
pod-babashka-go-sqlite3: A babashka pod for interacting with sqlite3
pod-babashka-fswatcher: babashka filewatcher pod
lein2deps: leiningen to deps.edn converter
scittle: Execute Clojure(Script) directly from browser script tags via SCI
sql pods: babashka pods for SQL databases
cljs-showcase: Showcase CLJS libs using SCI
babashka.book: Babashka manual
rewrite-clj: Rewrite Clojure code and edn
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
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
Published: 2024-02-29
Tagged: clojure oss updates