Actors done right
Reactors.IO fuses
the best parts of
functional reactive programming
and the
actor model

Reactors.IO is a framework
for building distributed systems.
It combines the strengths of functional reactive programming
and classical actor systems to provide
a next generation foundation for distributed computing.

Primarily targetting the JVM,
the Reactors framework has bindings
for both Java and Scala.
More coming soon!

Concurrent

Concurrency is achieved by separating
event propagations into entities called reactors.
Reactors communicate through typed channels.

// The DNS server channel is a globally available server channel
// that responds to requests for a channel with the specified name.
val dns: Server[Name, Channel[String]]
// Reactor that sends a set of keys to a shard.
class DhtClient(val shard: String, val keys: Set[String])
extends Reactor[Unit] {
// Request the channel to the shard from the DNS server.
(dns ? shard) onEvent { dht =>
// Use the channel to send all the keys.
for (k

And does all this work?

It sure does.

Reactors.IO was used
to implement a real-time 3D engine prototype.
The reactive nature of a game engine
was an excellent fit for Reactors.IO,
both from the user interface and
from the game simulation standpoint.

The Reactors.IO implementation ensures
low GC overheads and good throughput.
The engine delivers a steady, high frame rate (>100FPS),
with low latency.