Revactor is an application framework for Ruby which uses the Actor model to simplify the creation of high-performance network services.

Writing concurrent systems is one of the most difficult problems facing programmers today. Working with threads is difficult, and asynchronous approaches are confusing and difficult to work with.

Actors simplify concurrent programming by eliminating the race conditions and deadlocks of threads as well as the inversion of control in asynchronous APIs. Furthermore, each Actor has a mailbox, making communication between Actors incredibly simple.

Revactor’s TCP sockets API is virtually identical to Ruby’s, meaning that porting programs from Ruby to Revactor is a snap. While underneath it achieves high scalability by using non-blocking I/O, Actors can make blocking calls to read and write from sockets, or even make entire HTTP requests and read responses. If you want to use asynchronous I/O for tasks like message processing, you can also have network events delivered directly to Actors as a message.

Revactor incorporates ideas similar to many other languages and frameworks, including Erlang, Scala and Python frameworks like Eventlet and Kamaelia.