announcements 2026-07-27

New release of https://github.com/fgasperino/csp-clj version 0.0.2. Performance improvements & behavior fixes. Check it out if you're on a recent jvm version and are into poking at virtual threads.

πŸ‘ 1
πŸŽ‰ 1

Are you aware why core.async reverted their change to use virtual threads for go blocks and kept the state machine? I'm curious if so, and in that case if your library was able to circumvent the issue that virtual threads caused?

> Like regular threads, (and unlike go blocks) virtual threads must terminate ordinarily and will keep referenced resources alive until they do. > > Due to this difference in semantics, go blocks are unchanged and continue to use the go analyzer and run on platform threads. If you wish to get the benefits and constraints of virtual threads, convert go to io-thread and parking ops to blocking ops.

I think the issue was that it could cause a memory leak. If a virtual thread is parked waiting to take from a channel, and nothing will ever put into or close that channel, the thread never terminates. The JVM continues retaining the virtual thread, which in turn retains the channel and anything else referenced by its stack, so the whole abandoned operation can never be garbage collected.

Yes. I'm not addressing that, and my (personal) usage patterns are long running pipelines instead of transient channel use. I may document the use cases which this isn't a good fit, but for now i'm just experimenting with primatives.

Cool, it would be nice to just document that it's leaky depending on the use of it, so users know. Otherwise a cool library, it's nice to see some experimentation in the CSP space.

1.4 of https://github.com/lispyclouds/claxon: A minimal, pure clojure, data-driven NATS client is now out. The highlight of this release is that I finally got to tuning some of the low level TCP knobs and we now have upto 3-8x read and dispatch performance at lower memory consumption and allocs. Additionally, loads of internal code and handler management simplification and fix some long standing doc wrinkles. Happy NATSing! πŸ˜„

πŸ”₯ 5

Pre-release of https://github.com/mpenet/hako - A Modern, high-performance, Low-alloc Binary Serialization Library for Clojure. Built on JDK 25 FFM MemorySegment. Quite possibly the fastest β€” and lowest-allocation β€” binary serializer for Clojure on the JVM today. See https://github.com/mpenet/hako/tree/main#benchmarks.

πŸ‘€ 9
πŸŽ‰ 13

Here's a new fun library: https://github.com/squint-cljs/squint-inline Use squint from existing CLJS projects. Example:

(squint/defn public-user [resp]
  (-> resp
      (select-keys [:id :name])
      (assoc :active true)))

(public-user (js/JSON.parse "{\"id\":1,\"name\":\"ada\",\"secret\":\"x\"}"))
;; => #js {:id 1 :name "ada" :active true}
Follow up in #C03U8L2NXNC squint

πŸ™Œ 5
πŸ™ŒπŸ» 1
3

That's a fun idea: use Squint instead of converting js->cljs. If I were to use this, I think some care will be required to help me remember which functions expect JS data vs CLJS data. Perhaps a naming convention or namespace or something like that.

πŸ‘ 1

We added roundqube webmail to c4k-mail and released. c4k-mail is a one shot stalwart k9s installation. https:// http://repo.prod.meissa.de/meissa/c4k-mail #C061V2K37 #k9s #c4k #stalwart #mail #C03S1KBA2

πŸŽ‰ 3

https://github.com/babashka/babashka: Native, fast starting Clojure interpreter for scripting 1.13.219 (2026-07-27) The first release after a three month hiatus. A lot has been going on but these are the highlights: β€’ Tasks get automatic --help and shell completions, through the new :exec-fn and :cmd keys. See https://blog.michielborkent.nl/babashka-tasks-cli.html! β€’ Clojure 1.13 map destructuring with`:keys!`etc. The rest of the changelog is too long to mention here. So, for the whole changelog, see https://github.com/babashka/babashka/blob/master/CHANGELOG.md#113219-2026-07-27 babashka Follow up in #CLX41ASCS

8
πŸŽ‰ 20

An epic release! Congrats!

❀️ 1

Thanks! Excited for auto help and completion for tasks. Been using it heavily for babashka.cli CLIs

πŸ‘ 1

https://github.com/clj-commons/rewrite-clj now uses the new babashka task cli support πŸŽ‰ I had been using a mix of docopt (older work) and babashka cli (newer work) for tasks. Rewrite-clj now has streamlined, consistent, and succinct task cli support. Very cool! Thanks @borkdude!

πŸŽ‰ 1

That "case study" helped a lot to streamline this feature, thanks @lee

❀️ 1

https://github.com/weavejester/teensyp and https://github.com/weavejester/capra now work with Babashka out of the box, which is nice πŸ™‚

1
πŸŽ‰ 2

Glojure AOT compiled runtime speed matches GraalVM native-image on my real world projects! > As of today's releases of #C0AEASGBZ7Y v0.1.64 & #C05NVNMA2ES v0.7.2 Unless you need to use non-standard Java libaries, I can't think of any good reasons to use GraalVM. Glojure beats GraalVM on: β€’ Ease of use (one simple gloat command) β€’ Compile speed (secs vs minutes) β€’ Binary size (about half the size) β€’ Native target platforms (~25 vs 4) β€’ Licensing β€’ Viewable source code β€’ Clojure runtime. No need for SCI. β€’ Go interop GraalVM wins on: β€’ Full Java interop Same on: β€’ Runtime speed (for now!) β€’ Both produce native binaries and shared libraries I'll soon be posting a lot more about this breakthrough and how it is getting used.

6
7
πŸŽ‰ 22

@ingy thanks a lot for creating all this. Clojure on Golang sounds very promising to finally get rid of the cold-start troubles. How realistic is it to migrate a Clojure web application to your stack and what is missing?

@ingy maybe as first step only a go web server and glojure that uses https://github.com/ring-clojure/ring to respond with a hello-world HTML, which would also need some deps.edn like mechanism I guess. However, feel free to ignore my thoughts here, I'm just wondering what the different goals of the multiple Clojure on Go projects are that have been announced in the last couple of weeks here.

Alex Miller (Clojure team) 2026-07-27T18:24:18.648249Z

Clojure CLI 1.12.5.1664 is now available β€’ Change Maven session concurrency to use a single shared session rather than one per thread β€’ Fix regressions in reporting paths on errors for deps.edn files (validation, etc)

3
πŸŽ‰ 6

Is there any difference between this and .1661?

Alex Miller (Clojure team) 2026-07-27T19:03:02.885889Z

the second bullet here is new since then, but no change on the first

πŸ‘πŸ» 1

Announcing https://github.com/outskirtslabs/protocol53: One Clojure API for managing DNS records across providers... pairs well https://github.com/outskirtslabs/clave the pure-clojure ACME client implementation with automatic-HTTPS adapters for ring-jetty and aleph+netty.

πŸŽ‰ 5