02 December 2021
Alex Miller
Welcome to the Clojure Deref! This is a weekly link/news roundup for the Clojure ecosystem. (@ClojureDeref RSS)
We have had way too few Clojure conferences of late, but the next 2 days (Dec 3-4) is your chance to attend re:Clojure 2021 online! You can find the full schedule at https://www.reclojure.org and there will be keynotes from Stephen Wolfram, designer of the Wolfram Language and author of "A New Kind of Science", and from Gerald Jay Sussman, co-creator of the Scheme programming language, co-author of the legendary "Structure and Interpretation of Computer Programs" and most recently "Software Design for Flexibility". Be sure to check out the speaker interview series too.
Get your free ticket here: https://www.meetup.com/London-Clojurians/events/281970268
Also, check out the Clojure Data Science Special on Sunday Dec 5th: https://www.meetup.com/London-Clojurians/events/282409187
Post 1.11.0-alpha3, we’ve had several questions about clojure.java.math and have prepped some follow-ups, which include a docstring fix and some reflective calls when a few functions were used as higher-order functions (otherwise, they’re inlined so this isn’t an issue). For the latter, we’ll be removing min
and max
as they are better served by the existing variadic and polymorphic impls in clojure.core. For abs
, we’re going to move that to clojure.core and include it into one of the core numeric functions with support across all the Clojure numeric types (long, double, bigint, bigdec, ratio) - those impls will use Math.abs() where appropriate for best performance.
And finally, there were immediate questions about why clojure.java.math and not clojure.math with a portable impl in ClojureScript. Thanks to the work of Paula Gearon, that seems viable so we’re also planning to make that change for the next alpha. Thanks for the feedback on this - that’s why we do these alphas!
Thanks to a suggestion from Ghadi Shayban, we also looked into using the java.lang.Math.addExact() etc methods in lieu of the existing Clojure checked non-overflowing math ops (the default when you use +, -, *, inc, dec, etc). The benefit here is that these methods are "intrinsics" in Hotspot and the Java compiler will replace these calls with hand-crafted assembly or IR code. Still needs some more eval, but looks like a nice little boost in default Clojure math.
Big picture, I think we’ll do one more chunk of new feature / bug work and then start the rampdown into a 1.11 GA release, probably within a month.
Fogus has been working on transit-clj issue #47 off and on and I think that’s getting close to a fix, probably mostly in transit-java. Also, it’s his birthday today - happy birthday Fogus!
re:Clojure Interviews 18 - Gerald Jay Sussman
Clojure Ireland - Science & engineering (How to improve as an engineer) - Sameer Rahmani
Advent of Witchcraft - part 1 (Clojure + Minecraft) - Arne Brasseur
Advent of Code 2021 Day 1 - Nikita Prokopov
I wrote myself a static site generator - Dominic Freeston
deps.edn and monorepos VIII (Polylith) - Sean Corfield
My Clojure(script) journey - Arthur Barroso
Primes in Clojure part 2: Interop - Gary Verhaegen
What is Hammock Driven Development? - Keagan Stokoe
New releases and tools this week:
Calva v2.0.228 - Calva is an integrated REPL powered environment for enjoyable and productive Clojure and ClojureScript development in Visual Studio Code. However… Peter requested that if you are interested in helping to debug the new Parinfer support, you can use version 2.0.227 - read more here.
clj-kondo 2021.12.01 - A linter for Clojure code that sparks joy
setup-clojure 3.6 - GitHub Action to provision clojure’s most popular build tools for Linux, Mac OS X and Windows
Clojure CLI 1.10.3.1040 - Command line tools for Clojure
clojure-lsp 2021.12.01-12.28.16 - A Language Server for Clojure(script)
witchcraft 0.6.150 - Clojure API for manipulating Minecraft, based on Bukkit
c4k-nextcloud - c4k-nextcloud provides a k8s deployment for nextcloud
test-doc-blocks v1.0.166-alpha - Test AsciiDoc and CommonMark code blocks found in articles and docstrings
clip 0.26.0 - Light structure and support for dependency injection
honeysql 2.1.829 - Turn Clojure data structures into SQL
tools-deps-native v0.0.4 - Run tools-deps-alpha as a native binary
fs v0.1.2 - File system utility library
babashka 0.6.6 - Native, fast starting Clojure interpreter for scripting
omni-trace 0.2.2 - Omnipotent/omniscient tracing core for debugging clojure(script)
guardrails 1.1.9 - A middle ground between unguarded functions and enforced spec instrumentation
fulcro-rad 1.1.0-RC8 - Fulcro Rapid Application Development
clojure-site-org-mode - The documentation of https://clojure.org/ converted into a single org-mode file
clojurescript-site-org-mode - The documentation of https://clojurescript.org/ converted into a single org-mode file