Hello everyone,
I’ve just made my initial public release of Rev, a high performance
event
library for Ruby 1.9 built on top of libev. Events are monitored with
advanced system calls including epoll on Linux, kqueues on BSD, and
event
ports on Solaris. You can read more about libev here:
http://software.schmorp.de/pkg/libev.html
The release has not yet reached the gem mirrors, so you can grab it here
for
the time being:
http://rev.rubyforge.org/releases/gems/rev-0.1.0.gem
Rev gives you the ability to monitor Ruby IO objects for readability
and/or
writability. It also lets you configure either one-shot or periodic
timers. Future plans include wrappers for monitoring signals as well as
filesystem events.
Rev makes use of a number of new Ruby 1.9 features, namely the ability
to do
blocking calls inside of native threads using the
rb_thread_blocking_region() function. The entire event loop is written
with
scalability in mind, with nearly constant time overhead compared to the
number of events being monitored, at least on Linux, FreeBSD, or
Solaris.
In addition to a C extension which provides Ruby bindings to libev, Rev
also
provides asynchronous observer-like wrappers for Ruby’s core socket
classes
using the new Ruby 1.9 *_nonblock methods. It also provides
asynchronous
DNS resolution for the purpose of making outgoing connections.
You can view the RDoc here:
Enjoy!