How is this project related to Scala Actors?

The question is answered in the guide.

[top]


Is promise a monad?

Yes. Promises do look a lot like IO monads in the haskell, particularly for sequential control flow. Interleaving control flow could require some changes to to it. And possibly a big portion of the ideas from this framework could be integrated into haskell with some special monad. Then AsyncControl.doAsync is a function that converts from this new monad to IO monad. However, it is possible that IO monad could be extended to support interleaving activities. I have not looked into haskell for a long time, so you would better ask someone else.

[top]


How is it related to scalaz.concurrent.Promise?

There are many distinctions, the basic is that scalaz's Promise is a wrapped actor and AsyncScala Promise is sub-actor component. See the the guide for more details. As result AsyncScala allows for richer and simpler interaction patterns because of shared memory interactions are allowed within single vat/actor. Also AsyncScala Promise are much cheaper to create, since event loop is shared with other components. As minor drawback, AsyncScala promise could not be directly shared with other threads and vats (but it is needed extremely rarely and there are simple workarounds for such cases).

[top]


How is AsyncScala NIO compared to akka NIO support?

IMHO AsyncScala NIO is simpler to use than akka NIO. It is too early to compare them on performance front since AsyncScala implementation is not yet optimized and there is no benchmarks yet. But you could already compare usability using implementation of simple echo server done in akka and AsyncScala. IMHO the AsyncScala version is a bit shorter and natural looking, looks at the code it is possible to understand what it is going from structure of the code.

And it is also possible to put the entire echo server even into a single thread. Note that there are two additional threads created. One for reading from stdin, and other is for the timer. It is even a bit shorter version than with actor-based vats.

[top]


Are there other implementations of the same ideas?

The primary ideas of the library and component model were first seen by me in E programming language. However, the AsyncScala frameworks stretches the idea further to more complete set of structured asynchronous programming operators.

Also, Mark Miller (one of authors of E programming language) works on library for EcmaScript based on the same concepts.

[top]