Clojure
Clojure 1.13.0-alpha1

Clojure 1.13.0-alpha1

02 July 2026
Alex Miller

Clojure 1.13.0-alpha1 is now available! Find download and usage information on the Downloads page.

Checked keys

You can now ensure that required keys are bound during map destructuring by using the new checked variants of the :keys/:syms/:strs directives - :keys!/:syms!/:strs!, which will throw if the key is not present. You can also, in all directives, specify keys after & which will not be bound, for documentation or checking purposes.

  • CLJ-2961 Checked keys

  • CLJ-2960 Specs for checked keys

  • CLJ-2949 req! - Variant of get that reports on key not found

  • CLJ-2954 let/loop/let* - disallow & as local binding

Other changes since Clojure 1.12.5

  • PersistentArrayMaps of only keyword keys now grow up to size 64 (previously was 8) before transitioning to PersistentHashMaps. PAM identity scans are more efficient than PHM lookups in this range, also makes more usage sites monomorphic and thus easier to optimize.

  • CLJ-2891 Remove ACC_FINAL designation from static initializer constants. This change was made as a prepatory step towards moving the Java bytecode baseline to address new verifier checks.

  • Runtime and test dependencies updated to latest versions

Try it out

Update your deps.edn :deps with:

org.clojure/clojure {:mvn/version "1.13.0-alpha1"}

Start a REPL with the Clojure CLI (any version) with:

clj -Sdeps '{:deps {org.clojure/clojure {:mvn/version "1.13.0-alpha1"}}}