nio4r provides a high performance IO selector API which lets you monitor
several IO objects for events simultaneously using a single system call.
It's similar to Kernel.select, but keeps its state between calls.

https://github.com/celluloid/nio4r

Selectors thunk to the epoll on Linux and kqueue on BSDs, using libev for
Rubies with C extension support (MRI, Rubinius) and Java NIO on JRuby.

We're trying to get all Celluloid dependencies onto 1.x versions this year.
nio4r is the first! (unless you count timers, which is already on 2.0.0).
That's right, we're freezing APIs and trying to get things solid.

Changes from 0.5.0:

* Have Selector#register obtain the actual IO from a Monitor object because
Monitor#initialize might convert it
* Drop 1.8 support

Enjoy!

-- 
Tony Arcieri