hi all, just found out about this, really interesting thanks for this work
I'm working on something using golang channels heavily and wonder what your view on clojure/async is when ported to go
Joker's async capabilities are somewhat limited because it doesn't support true multithreading: https://candid82.github.io/joker/joker.core.html#go It uses GIL (Global Interpreter Lock) to make sure the interpreter only runs in one thread at a time to avoid race conditions. On the other hand, being built on top of Go's runtime, Joker's implementation of clojure/async primitives is very simple, almost trivial. It also doesn't have to distinguish between <!
and <!!
, and users don't have to worry about blocking vs. non-blocking I/O inside goroutines. There is no complex state machine transformation behind go
macro. All the heavy lifting is done by Go runtime.
Joker v0.15.0
is released https://github.com/candid82/joker/releases/tag/v0.15.0