|
|
|
|
|
by pron
4716 days ago
|
|
That's right. Pulsar re-implements core.async on top of its own lightweight threads. Nevertheless, we aim to make it so that any code written using core.async could easily use Pulsar instead. We implemented core.async because we saw it could be easily done, but Pulsar's goals are broader. Frameworks like Akka give you actors, core.async gives you go blocks and channels, and Scala's async gives you async blocks and futures. In Quasar/Pulsar these are all special cases of lightweight threads. Once you can run 100Ks or 1M threads on a single machine, all sorts of possibilities are open to you. |
|
The problem is, give it six months and there will be many libraries that themselves use core.async. The application developer then either can't use those libraries or has to fork them herself. This just isn't going to happen, so everyone ends up with the default implementation.
Thinking about it, it might be possible to write a lein plugin that intercepts load-library and puts in your own implementation. That might actually work. That or engage the clojure.core team and get some redesign on core.async so that it's pluggable at an application layer.
Please don't take this as blind criticism. Quasar looks really interesting and I'd like to see app developers be able to easily use it from Clojure.