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.
| 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 |
| 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 |
| 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 |
require "never_block/frameworks/rails" (before Rails is loaded)Originally generated with the Darkfish Rdoc Generator 2, modified by wrongdoc.
We love to hear from you!