Skip to content
0:00 / 0:00

#clojure#virtualthreads#core.async

Evolving Clojure with Virtual Threads #JVMLS

Java

276K subscribers • 13 videos on Hallway

YouTube
  • Recommended by 2 people: 1 in engineering communities and 1 curated list.
  • Presented by Alex Miller

Advanced. Deep dive for people who know the field.

6.7K views1 year ago2 recommendations

Programming languagesSystems programmingLisp and ClojureConcurrency and parallelismPerformance and optimization

Alex Miller explains how Clojure's core.async library is evolving to leverage Java virtual threads while preserving backward compatibility.

Clojure’s core.async library brought Go-style CSP concurrency to both the JVM (and JS!) by transforming code into state machines via the `go` macro, allowing process pausing at channel operations like ⟨!, ⟩!, and alt! (as an expression, not a statement, as in Go). This transformation enabled asynchronous workflows and "select" without a central coordinator, but came at the cost of maintaining two complex and evolving versions of the Clojure analyzer. With the arrival of Java virtual threads, a new implementation of core.async is emerging-—one that retains the same semantics and API but leverages virtual threads to implement process supsension. This talk will explore the design choices behind supporting both implementations, and how we preserved backward compatibility. Introducing virtual threads also provided an opportunity to better differentiate semantic workload categories (compute, I/O, mixed). The new core.async.flow framework leverages all of the flexibility above to provide process execution on top of pure functions of immutable message data. Flow runs these functions in process execution nodes, on workload-appropriate threads, and provides topology, lifecycle, communication, monitoring, and error handling support. Presented by Alex Miller (Clojure Core Team / NuBank) during the 2025 JVM Language Summit (CA, August 2025). • core.async Rationale ➤ clojure.github.io/core.async/rationale.html • core.async.flow ➤ clojure.github.io/core.async/flow.html • Are We There Yet? ➤ infoq.com/presentations/Are-We-There-Yet-Rich-Hickey/ • The Language of the System ➤ youtu.be/ROor6_NGIWU?feature=shared • Clojure core.async ➤ youtu.be/yJxFPoxqzWE?feature=shared • Inside core.async Channels ➤ youtu.be/hMEX6lfBeRM?feature=shared • youtube.com/playlist?list=PLX8CzqL3ArzUOgZpIX6GsoRhPbnij-sco playlist • jvmlanguagesummit.com/ Tags: #JVM #Clojure

Why it's here

2 people recommend this

u/dustingetzin r/Clojure • Recommends

Evolving Clojure with Java’s Virtual Threads — Alex Miller — JVM Language Summit 2025

programming-talkscurated list on GitHubRecommends

Under “Clojure”

Evolving Clojure with Virtual Threads 00:40:24 by **Alex Miller** (2025)