26 February 2024
Alex Miller
Welcome to the Clojure Deref! This is a weekly link/news roundup for the Clojure ecosystem (feed: RSS). Thanks to Anton Fonarev for link aggregation.
This week we released Clojure 1.12.0-alpha8 which is a minor update, mainly to revert CLJ-1162 which caused problems for some cases where a type implemented both IDeref and Future. This release also contains an updated fix for CLJ-2783 which we reverted in alpha7 and caused problems with (at least) instaparse. The change for CLJ-2568 is one of the highest questions in Ask Clojure - we thought it was ready for alpha6 but it caused a test failure in our test suite when direct linking was turned off and we wanted to understand that better before we released. In light of several regression failures seen in alpha6, we’ve created a new regression test suite that checks a lot of community projects and will be using this more proactively in the future to reduce this kind of churn.
In new work, we’ve been reconsidering the design work on array class symbols, qualified methods, and method values based on some of the things we saw from the community. With array class symbols, we in particular saw both questions and concerns that indicated we had at least one invalid assumption baked into the design. The array class symbol design was based on an assumption that Foo* names were invalid class names, which is true in Java, but not on the JVM (or in Clojure via deftype)! This drove us way back to the beginning of the design process and I think we will end up changing this syntax, more on that to come.
There was a lot of feedback on qualified methods and method values with respect to the relationship of these features to reflection. Using reflection is valuable, especially in the context of exploratory programming at the REPL. This has caused us to re-think some of our approach here, design work still ongoing, but I expect there will be some changes in this area.
Bosquet LLM command line interface and observability tools - Žygimantas Medelis
Apropos 2024-02-13 - Apropos Clojure
Some controversial truths (by Peter Taoussanis) - London Clojurians
Ep 111: Loopify! - Functional Design in Clojure
Ep 112: Purify! - Functional Design in Clojure
Learn Clojure – Conditions, case - Clojure Diary
Learn Clojure – Loops - Clojure Diary
Kit Workshop - ClojureStream
Build a Graph Database in Clojure Workshop - ClojureStream
New Library: clj-reload - Nikita Prokopov
PG2 release 0.1.3: Next.JDBC-compatible API - Ivan Grishaev
Matrix vs. Async Hell vs. Flutter - Kenneth Tilton
The anatomy of a REPL - Eero Helenius
cljcastr, or a young man’s Zencastr clonejure - Josh Glover
CIDER: Preliminary Support for clojure-ts-mode - Bozhidar Batsov
New releases and tools this week:
clojure 1.12.0-alpha8 - The Clojure programming language
polylith 0.2.19 - A tool used to develop Polylith based architectures in Clojure
guardrails 1.2.3 - Efficient, hassle-free function call validation with a concise inline syntax for clojure.spec and Malli
mesalog 0.2.253 - CSV data loader for Datalog databases
cli 0.4.24 - Opinionated command line argument handling, with excellent support for subcommands
deep-diff2 2.11.216 - Deep diff Clojure data structures and pretty print the result
clj-reload 0.1.3 - Smarter way to reload Clojure code
flint-jena 0.1.3 - Library to compile Flint queries and updates into Apache Jena objects
c4k-forgejo 3.2.1 - Provision forgejo on k8s with c4k
bosquet 2024.02.22 - Tooling to build LLM applications
neanderthal 0.48.0 - Fast Clojure Matrix Library
babashka 1.3.189 - Native, fast starting Clojure interpreter for scripting
clojure-cli-config 2024-02-16 - User aliases and Clojure CLI configuration for deps.edn based projects
clay 2-alpha80 - A tiny Clojure tool for dynamic workflow of data visualization and literate programming
tools-deps-native 0.1.6 - Run tools.deps as a native binary
clj-jwt 0.5.98 - A Clojure library to handle validation of JWTs and signing claims using JSON Web Keys
splint 1.14.0 - A Clojure linter focused on style and code shape
nrepl 1.1.1 - A Clojure network REPL that provides a server and client, along with some common APIs of use to IDEs and other tools that may need to evaluate Clojure code in remote environments
calva 2.0.413 - Clojure & ClojureScript Interactive Programming for VS Code
guardrails 1.2.3 - Efficient, hassle-free function call validation with a concise inline syntax for clojure.spec and Malli