Fork me on GitHub

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: 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.