joker

Discuss all things joker, the Clojure interpreter/linter on top of Go. https://github.com/candid82/joker
2020-03-08T06:45:30.003Z

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

2020-03-08T06:46:05.003800Z

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

Candid 2020-03-08T18:29:16.004300Z

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.

Candid 2020-03-08T18:15:57.004100Z

Joker v0.15.0 is released https://github.com/candid82/joker/releases/tag/v0.15.0

9👍
Candid 2020-03-08T18:29:16.004300Z

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.