Clojure Deref (July 20, 2023)

Clojure Deref (July 20, 2023)

20 July 2023
Alex Miller

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

From the core

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.

Libraries and Tools

New releases and tools this week:

  • byte-streams 0.3.3 - A Rosetta stone for JVM byte representations

  • superlifter 0.1.5 - A DataLoader for Clojure/script

  • TrueGrit 2.1.30 - A data-driven, functionally-oriented, idiomatic Clojure library for circuit breakers, bulkheads, retries, rate limiters, timeouts, etc.

  • primitive-math 1.0.1 - For the discerning arithmetician

  • overarch 0.1.0 - A data driven description of software architecture based on the C4 model

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

  • xtdb 1.24.0 - General-purpose bitemporal database for SQL, Datalog & graph queries. Developed by @juxt

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

  • humanize 1.0-beta-1 - Produce human readable strings in clojure

  • aws-api 0.8.686 - AWS, data driven

  • rdf 0.3.0 - A backstop for shared logic between rdf-based implementations of IGraph

  • biff 0.7.9 - A Clojure web framework for solo developers

  • pod-babashka-fswatcher 0.0.5 - Babashka filewatcher pod

  • astronvim-config 2023-07-08 - Practicalli AstroNvim user configuration with AstroNvim Community Packages, written in Lua

  • igraph-jena 0.3.0 - Porting Jena to the IGraph protocol

  • edamame 1.3.23 - Configurable EDN/Clojure parser with location metadata

  • pretty 2.0 - Library for helping print things prettily, in Clojure

  • humanize 1.0 - Produce human readable strings in clojure

  • clj-new 1.2.404 - Generate new projects based on clj, Boot, or Leiningen Templates!

  • clolog - Full-featured logic programming (AKA "Prolog") embedded in/callable from and supporting calls to Clojure

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

  • playback 0.3.9 - Interactive Programming and Print Debugging Reimagined

  • project-templates 2023-07-17-2 - Clojure CLI Production level templates for seancorfield/deps-new

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

  • repley - A web REPL made with Ripley

  • lein2deps 0.1.1 - Lein project.clj to deps.edn converter

  • sitefox 0.0.17 - Node + cljs backend web framework

  • license-finder 0.2.1 - Finds licenses of your Clojure(Script) dependencies

  • fulcro-rad 1.5.3 - Fulcro Rapid Application Development

  • ash-ra-template 0.7.0 - Expressive & customizable template system featuring Clojure language processing