July 6, 2026
Nil drama just got checked
Clojure 1.13 adds support for checked keys
Clojure just made missing info louder, and fans are split between relief and outrage
TLDR: Clojure 1.13 adds a new way to immediately complain when expected map data is missing, aiming to catch mistakes sooner. The community is split: some love the clearer errors, while others think it clashes with the language’s traditionally relaxed attitude toward missing values.
Clojure’s latest test release just dropped a small-looking change that sparked a very big feelings-fest: developers can now tell the language to blow up immediately when expected information is missing, instead of quietly sliding along with an empty value. In plain English, that means fewer mysterious crashes later — and way more arguments now. The official pitch is simple: catch mistakes where they start, not after they’ve wandered through your app wearing a fake mustache. There are also some under-the-hood speed and cleanup tweaks, but let’s be honest: the real show is the comments.
One camp basically said, “Wait, wasn’t Clojure’s whole vibe to be chill about missing stuff?” One commenter flat-out asked if this felt "counter to clojure philosophy", which is the kind of sentence that instantly summons a philosophy cage match. Another person admitted they actually like the old way, where missing data often turns into nil and the program keeps moving, calling it more pragmatic and less anxiety-inducing. On the other side, supporters were positively gleeful, arguing that real errors should happen at the moment of the mistake, not later as some random crash that sends everyone on a debugging treasure hunt. One fan predicted lovers of the old “nil-punning” style would soon discover “the joys” of immediate failure — which is such a deliciously smug victory lap it almost deserves popcorn. Even the practical crowd got involved: one team had just upgraded to the current version and is already eyeing 1.13, except, plot twist, it’s still an alpha and that makes managers nervous. Classic developer drama: everyone agrees bugs are bad, but not on how loudly the language should yell about them.
Key Points
- •Clojure 1.13.0-alpha1 has been released and is available for download and testing.
- •The release adds checked map-destructuring directives `:keys!`, `:syms!`, and `:strs!`, which throw if required keys are missing.
- •Destructuring directives can now list keys after `&` without binding them, for documentation or checking.
- •Keyword-only PersistentArrayMaps now remain in that representation up to size 64 before converting to PersistentHashMaps, up from 8.
- •The release also removes ACC_FINAL from static initializer constants as preparation for a future Java bytecode baseline change and updates runtime/test dependencies.