Clojure Deref (June 2, 2023)

Clojure Deref (June 2, 2023)

02 June 2023
Alex Miller

Welcome to the Clojure Deref! This is a weekly link/news roundup for the Clojure ecosystem. (@ClojureDeref RSS)

From the core

Over the course of the last few weeks, I’ve been moving all of the Clojure and contrib library continuous integration and release builds from the Clojure build box over to GitHub actions, which has been somewhat tedious, but has opened up some new opportunities for testing and automation. Ultimately I would like to move a lot of this towards and out of Maven, but one step at a time.

We did a Clojure CLI build this week that includes several important fixes that came in from the community via Ask Clojure, so thank you to everyone that is adding and voting on things there, it really does help as a central place. This release also contains some important changes to accept -X and -T args over stdin, which is groundwork for fixing some add-libs issues. We have a batch of things in the queue for another alpha soon.

I have also been working on our approach to improving functional interface Java interop. The crux of this is that when calling a Java API that accepts a functional interface argument (not just the java.util.function interfaces, but any "single abstract method" interface), wouldn’t it be nice if IFn’s could just be passed directly without needing to reify the functional interface and adapt? Sure would. We’ve looked at many possible approaches to this and are starting to prototype some primary contenders. This has also fed a lot of learning that might feed some other things we’re looking at.

Fogus has continued work on stream integration - CLJ-2775 is the first part of that, but there may be some additional work as well.

Thanks to Anton Fonarev for all the assistance on link aggregation! With me spending less time on that, I can spend more time writing status like above, so it really helps.

Libraries and Tools

New releases and tools this week:

  • Clojure CLI

  • tiara 0.2.1 - A small data structure library

  • babashka 1.3.180 - Native, fast starting Clojure interpreter for scripting

  • splint 1.7.0 - A Clojure linter focused on style and code shape

  • fulcro-rad 1.5.0 - Fulcro Rapid Application Development

  • cli-tools 0.7 - CLIs and subcommands for Clojure or Babashka

  • clj-kondo 2023.05.26 - Static analyzer and linter for Clojure code that sparks joy

  • clojure-ts-mode 0.1.0 - The next generation Clojure major mode for Emacs, powered by TreeSitter

  • fzf.clj - A small, data-driven and babashka-compatible wrapper around fzf

  • splint 1.8.0 - Linter focused on style and code shape

  • statecharts 1.1.0 - A Statechart library for CLJ(S)

  • slip 0.0.58 - A Clojure+Script micro-library for building systems of objects (IOC)

  • tools.gitlibs 2.5.197 - API for retrieving, caching, and programatically accessing git libraries

  • tools.deps 0.18.1354 - Deps as data and classpath generation

  • michelangelo 0.1.0 - Turtle transforming library

  • deps-try 0.5.0 - Try out Clojure libraries via rebel-readline

  • calva 2.0.367 - Clojure & ClojureScript Interactive Programming for VS Code