Fork me on GitHub
#joker
<
2020-03-08
>
benjyz06:03:30

hi all, just found out about this, really interesting thanks for this work

benjyz06:03:05

I'm working on something using golang channels heavily and wonder what your view on clojure/async is when ported to go

Candid18:03:16

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.