Core.Async
summary
Overview of core.async primitives and examples using HTTP kit and ClojureScript, showing channels, buffered/dropping/sliding semantics, alts and timeout behavior, and the go transform that compiles blocking-style code into callbacks. Demonstrates porting to cljs, running 10,000 cells of animation in a browser, integrating async HTTP calls to The Movie Database to go from ~5s to 88ms by changing when takes occur, and notes a measured ~50% slowdown inside go blocks versus raw code while keeping lightweight concurrency via go blocks.
AI-written summary · about
chapters (22)
- 0:00Core.Async introduction
- 1:14Channels as primitives
- 3:00Callbacks vs blocking in channels
- 5:49Blocking put and take
- 7:15Thread macro and channels
- 8:19Go blocks and threads
- 11:35Buffered channels and backpressure
- 13:22Dropping and sliding buffers
- 14:47Using alt to select channels
- 15:51Timeout and non-blocking ops
- 16:55Alt cancels operations
- 19:03Single-threaded shared access
- 20:26Thread pool with channels
- 21:10HTTP async integration
- 22:57Async map for responses
- 26:02Multicast channels
- 28:11PubSub with topics
- 29:15Core.Async vs actors
- 30:17Core.Async in ClojureScript
- 31:41Green threads in JS
- 33:49Movie DB query in ClojureScript
- 36:38Q&A
related talks
35mApplying the paradigms of core.async in ClojureScript
01h 04mcore.async: Concurrency without Callbacks
44mClojure core.async Evolution
34mCore.Async in Use
25mFunctional effect and streaming systems in Clojure
31mClojure at 4,000 msg/s-What We Learned, Loved, and Loathed
01h 02mSolving Problems the Clojure Way
36mKlor: Choreographic Programming in Clojure
