Actors and Ruby
I’ve spent the last month learning Rubinius’s Actor API for safer concurrency with threads. My entire career really has been focused on learning and building scalable and high performance infrastructure. My explorations with Fibers over the last year lead me to believe that they are essentially a workable hack to get around Ruby’s current issues but not really something that developers should use widely. Debugging is difficult and testing very difficult with any reactor-based system.
On the other hand, I do think Actors are a good step forward for concurrency by making Threads safer to utilize. By the end of this year, we’ll have several Ruby VMs (JRuby, MacRuby, Rubinius) that can execute threads in parallel, allowing a single Ruby process to peg a multi-core machine; Actors will be helpful in building applications that can take advantage of this.
I’ve written two posts on the Carbon Five blog, the first covering Actors in general and the second covering my new, simple but full-featured asynchronous processing library, girl_friday, which leverages Actors. Take a look and let me know what you think!