README.md

Green

Cooperative multitasking for Ruby. Proof of concept.

Based on Ruby 1.9 Fibers, but unlike EM::Synchrony it uses symmetric coroutines (only #current and #transfer used) and HUB-orientend architecture. So coroutines transfer control to HUB and HUB transfer control to coroutines. Coroutines never tranfer control to each other.

In comparison with EM-Synchrony it allows:

develop real complex cooperative multitasking apps;

timeouts. Yes, in common case you cannot add timeout with EM-Synchrony;

kill greens. And it safe unlike kill Threads;

works with REPL and debugger. EM-Synchrony uses Fiber.yield, so you cannot run nothing in REPL;

works with every environment. You can run nonblock web-applications with Unicorn;