Our team has been in and out the last couple weeks with a variety of summer vacation, but we are starting to focus our sights on the end game for Clojure 1.12.

Several pieces of work are in the review stage:

  • CLJ-2775 - new functions to support Java streams in the Clojure world (for seq, into, and reduce), particularly useful when interacting with a Java API that provides streams

  • CLJ-2792 - makes all IDeref instances into java.util.function.Supplier’s

  • CLJ-2791 - adds a good spliterator implementation to PersistentVector. All Collections get a default implementation but this one has direct access to the underlying data, and being immutable it is perfectly amenable to use under Java parallel streams.

Ongoing work is still happening on these big new features that we intend to deliver:

  • Functional interface adapters (using Clojure functions as Java functional interface instances) - the gnarly adapter work is essentially done, but still working on when and where this will happen

  • Method thunks - new syntax and compiler support to use Java static methods, instance methods, and constructors directly as Clojure functions

I’ve mentioned work on variadic invocation in the past and while we’ve made some progress on this, I think we’re going to slip that out of 1.12 to start closing things down.