Rainbows! at a glance

Confused by all the options we give you? So are we! Here's some tables to help keep your head straight. Remember, engineering is all about trade-offs.

core features and compatibility


module rack.input streaming Ruby 1.8 Ruby 1.9 Rubinius slow clients
Unicorn/Base Yes Yes Yes Yes No
Revactor Yes No Yes No Yes
ThreadPool Yes Yes Yes Yes Yes
Coolio No Yes Yes No Yes
ThreadSpawn Yes Yes Yes Yes Yes
EventMachine No Yes Yes No Yes
CoolioThreadSpawn No No Yes No Yes
FiberSpawn Yes No Yes No Yes
FiberPool Yes No Yes No Yes
ActorSpawn Yes Not yet No Yes Yes
NeverBlock No Yes Yes No Yes
CoolioThreadPool No Yes No No Yes
CoolioFiberSpawn Yes No Yes No Yes
WriterThreadPool Yes Yes Yes Yes no
WriterThreadSpawn Yes Yes Yes Yes no
Epoll no Yes Yes Yes Yes
XEpoll no Yes Yes Yes Yes
XEpollThreadSpawn Yes Yes Yes Yes Yes
XEpollThreadPool Yes Yes Yes Yes Yes

application requirements


module slow I/O (backend, not client) thread safety single thread reentrant
Unicorn/Base avoid No No
Revactor Coolio, Revactor, not Fiber::IO No Yes
ThreadPool thread-safe Ruby Yes No
Coolio Coolio No No
ThreadSpawn thread-safe Ruby Yes No
EventMachine EventMachine No No
CoolioThreadSpawn thread-safe Ruby, Coolio Yes No
FiberSpawn Rainbows::Fiber::IO No Yes
FiberPool Rainbows::Fiber::IO No Yes
ActorSpawn thread-safe Ruby Yes Yes
NeverBlock NeverBlock, EventMachine No Yes
CoolioThreadPool thread-safe Ruby, Coolio Yes No
CoolioFiberSpawn Rainbows::Fiber::IO No Yes
WriterThreadPool avoid Maybe Maybe
WriterThreadSpawn avoid Maybe Maybe
Epoll No No No
XEpoll No No No
XEpollThreadSpawn thread-safe Ruby Yes No
XEpollThreadPool thread-safe Ruby Yes No

middlewares and frameworks


model DevFdResponse AppPool Rack::Lock async
Unicorn/Base no-op no-op no-op lots of RAM :P
Revactor no-op Yes No! Revactor itself
ThreadPool Yes Yes Yes thread-safe Ruby
Coolio Yes no-op no-op DevFdResponse
ThreadSpawn Yes Yes Yes thread-safe Ruby
EventMachine Yes no-op no-op async_sinatra, Cramp, rack-fiber_pool
CoolioThreadSpawn Yes Yes Dumb thread-safe Ruby
FiberSpawn Yes Yes No! Rainbows::Fiber::IO, Rainbows.sleep
FiberPool Yes Yes No! Rainbows::Fiber::IO, Rainbows.sleep
ActorSpawn no-op Yes Yes thread-safe Ruby
NeverBlock Yes Yes* Yes* NeverBlock, async_sinatra
CoolioThreadPool Yes Yes Dumb Coolio, thread-safe Ruby
CoolioFiberSpawn Yes Yes No! Coolio, Rainbows::Fiber::IO, Rainbows.sleep
WriterThreadPool Yes no-op no-op thread-safe Ruby in response body only
WriterThreadSpawn Yes no-op no-op thread-safe Ruby in response body only
Epoll Yes no-op no-op DevFdResponse
XEpoll Yes no-op no-op DevFdResponse
XEpollThreadPool Yes Yes Yes thread-safe Ruby
XEpollThreadSpawn Yes Yes Yes thread-safe Ruby

Originally generated with the Darkfish Rdoc Generator 2, modified by wrongdoc.

We love to hear from you!
Email patches (with git send-email), pull requests, questions, bug reports, suggestions, etc. to us publically at rainbows-talk@rubyforge.org.
No subscription to the mailing list is necessary, just let us know to Cc: you if you're unsubscribed.
To subscribe, email rainbows-talk-request@rubyforge.org with "subscribe" in the Subject and respond to the automated confirmation message.
Do not waste bandwidth with HTML, HTML mail will not be read.
Quote only parts you're responding to and do not top post.
For sensitive topics, email us privately at rainbows@bogomips.org.