announcements 2026-09-15

https://github.com/seancorfield/rephrase https://github.com/seancorfield/rephrase/releases/tag/v1.0.6 -- Rephrase exceptions to be more beginner-friendly β€’ Full support for #CLX41ASCS (requires 1.13.222 or later). β€’ Full support for #C0B8G0WB63C (requires 0.8.8 or later). β€’ Switch build to bb. Follow-up in #C0B2UH1BPT3

πŸŽ‰ 10

https://github.com/seancorfield/deps-new https://github.com/seancorfield/deps-new/releases/tag/v0.14.0 415b3a8 -- Create new projects for the Clojure CLI / deps.edn

clojure -Ttools install-latest :lib io.github.seancorfield/deps-new :as new
β€’ Address https://github.com/seancorfield/deps-new/issues/79 by switching build-bb folders to use bb-driven build.clj files. Requires #CLX41ASCS 1.13.222 or later! β€’ Update #C07NJRDQWDS in generated projects to 2.1.0. β€’ Update Clojure to 1.12.6 in generated projects. β€’ Update dev/test deps. Follow-up in #C019ZQSPYG6

πŸŽ‰ 10

Nice! Did you consider using :min-bb-version "1.13.222" in the generated bb.edn ? (https://book.babashka.org/#_min_bb_version)

I did not, because I did not know about it πŸ™‚ I'll create an issue.

πŸ‘Œ 1

v0.14.1 released with that small change. Anyone running install-latest will automatically pick it up.

❀️ 1
Alex Miller (Clojure team) 2026-09-15T17:04:12.404079Z

https://clojure.org/news/2026/09/15/clojure-1-13-alpha7 Destructuring additions To gracefully handle missing information programmatically at runtime, use the :missing directive, which binds a name to a map of keysβ†’nil that were named in checked keys directives but not found in the input map, traversing deeply through nested maps. This toggles the default behavior of :keys!/:syms!/:strs! from throwing to collecting into the named map. (see https://clojure.atlassian.net/browse/CLJ-2976) If there’s more data than you intend to process you may want to convey it, e.g. by reintegrating it with your transformed input for passing downstream. Use the :excess directive to bind a name to a map of all keys in the input map that do not correspond to keys listed in the destructuring form, traversing deeply through nested maps. (See https://clojure.atlassian.net/browse/CLJ-2975) Bug fixes β€’ https://clojure.atlassian.net/browse/CLJ-2883 Reflector.getMethods() incorrectly returned bridge methods with covariant return type, making calls reflective β€’ https://clojure.atlassian.net/browse/CLJ-2930 bigdec - coerce from Number may lose decimal Improvements and additions β€’ https://clojure.atlassian.net/browse/CLJ-1899 transform-keys - deep-walk a map and transform all keys β€’ https://clojure.atlassian.net/browse/CLJ-2538 tap-> - add tap> variant that returns the value β€’ https://clojure.atlassian.net/browse/CLJ-2970 select-keys - implementation change to unify argument requirements across functions used in destructuring: get, req!, and select-keys

πŸ‘ 1
25
πŸŽ‰ 35

Thank you for tap->! Been looking forward to that for ages πŸ™‚

βž• 6
πŸŽ‰ 7

I have muscle memory for writing (defn spytap [x] (tap> x) x)

nice, I can remove tap-> from my repl helpers

@felipecortezfi My muscle memory (and my VS Code / Calva / Joyride ctrl+alt+d ctrl+alt+t behavior) is for (doto tap>) so I just updated that Joyride script to use tap-> instead so I keep the same key binding πŸ™‚

@seancorfield that works for ->, but in thread-last macro you'd have to wrap that in an anonymous function, right?

Yup, but that was extremely rare in our code at work (i.e., I rarely felt the need to do that). But in ->, it was pretty common.

πŸ‘ 1

Alpha7 is on our QA/staging server cluster now. I'll report back if we see any weirdness.

Alpha 7 has been in production here for four days. No weirdness!

πŸ‘ 1