announcements

2026-06-16T10:35:16.403939Z

libraries

bozhidar 2026-06-16T14:17:59.535239Z

📣 CIDER 1.22.0 is out after 4 months of development work! It's a release of epic proportions (as I kept postponing it for various reasons), but it's finally here. Here are a few highlights: • Fixed severe editor lag in Clojure buffers with no REPL connected (#3933) — friendly-session matching is now a cheap project-dir check instead of a per-redisplay classpath scan. (this might be a breaking change for some people, but I hope you'll agree that simplicity matters) • Now requires cider-nrepl 0.59+ / nREPL 1.7 — CIDER uses namespaced nREPL ops (`cider/info`, etc.); injected middleware was bumped accordingly. • Pluggable jack-in tools (#3884) — register your own project tools via cider-register-jack-in-tool. • Default session (#3865) — cider-set-default-session pins one session for all dispatch, bypassing sesman's project inference. (good if you want to handle your session management explicitly) • nREPL transport decoupled from the UI (#3892) plus a new keyword-arg nrepl-make-eval-handler API (#3890) — nicer for extension authors (old forms kept as shims). • Much sturdier remote/TRAMP jack-in (#3885, #3886, #3887) — remote probes via process-file, upfront command verification, no-shell ssh tunnel, and correct localhost/wildcard bind-address handling. • Long-session stability (#3894, #3896, #3897, #3898) — plugged request-id leaks, bounded handler tables, resilient response queue, and ssh-tunnel teardown on abnormal disconnect. • Project detection no longer depends on clojure-mode (#3922, #3924) — works in any buffer, e.g. M-x cider-connect from Dired. • Faster cider-connect completion (#3888) — running-nREPL port scans are cached. • Test spinner in the mode line (#3645) while tests run. • REPL history: crash fix + cider-repl-history-doctor (#3921) to clean up malformed entries. • `let-go` runtime support (#3926). Full changelog: https://github.com/clojure-emacs/cider/releases/tag/v1.22.0 Huge thanks to Clojurists Together and everyone else who contributed to this release or supports my Clojure OSS work. You rock! cider

19
5
1
❤️ 28
🎉 18
borkdude 2026-06-16T15:19:20.599079Z

https://github.com/babashka/sci: Configurable Clojure/Script interpreter suitable for scripting and Clojure DSLs SCI is used in https://github.com/babashka/babashka, https://github.com/babashka/nbb, https://github.com/nextjournal/clerk, https://github.com/BetterThanTomorrow/joyride/ and many https://github.com/babashka/sci#projects-using-sci projects. 0.13.52 (2025-06-16) • Add :interrupt-fn option: a zero-arg function called on every interpreted fn entry. See https://github.com/babashka/sci/blob/master/doc/interrupt.md (https://github.com/whilo) • Fix https://github.com/babashka/sci/issues/564: support this-asin ClojureScript • Support IFnon defrecord,`deftype`and reifyhttps://github.com/babashka/sci/issues/808,https://github.com/babashka/babashka/issues/1386,https://github.com/babashka/nbb/issues/408defnow replaces var metadata instead of merging, matching Clojure semantics. Previously, (declare foo) (def foo 42) would leave :declared true on the var's metadata. • Add nsfield to`sci.lang.Var`for compatibility with code that accesses`.ns`on vars • Add proxy-super,`proxy-call-with-super`,`update-proxy`and`proxy-mappings` • Support functional interface (FI) adaptation for instance targets (e.g. (let [^Predicate p even?] (.test p 42))) • Infer type tags from let binding values to binding names (e.g. (let [^String s "foo", q s] (.length q))) • https://github.com/babashka/babashka/issues/1935: support source for built-in vars by preserving`:file`,`:line`,`:column`metadata in copy-var • Store current analysis context during macro invocation, enabling tools like riddley to access outer locals any many more fixed in the https://github.com/babashka/sci/blob/master/CHANGELOG.md

5
13
4
2
6
sammy 2026-06-16T19:04:30.197009Z

https://github.com/sstraust/deft 0.2.0 released! This update adds support for namespaced keys in type and protocol definitions. i.e., you can now do:

(defp Positioned :required-keys [::pos - ::Point])
and
(deft Circle [::location/position radius])

(>Circle ::location/position [1 2] :radius 12)
this is useful because you can now write implementations that depend on the presence of these keys, i.e.:
(defp Gremlin :extends [location/Positioned])

(defmethod game-object/get-hitbox ::Gremlin [self]
  (js/Matter.Bodies.rectangle
   (get-in self [::location/pos ::location/x])
   (get-in self [::location/pos ::location/y])
   15 15))
detailed writeup: https://www.sammystraus.com/#deft-version-0-2-0

🎉 8