v3.2.0
tagf64a36fac8473249aa86f72557f5b5424a612b61
object f039e80b90260f7c4a831806ddc4d22fc9d27eb4
authorEric Wong <normalperson@yhbt.net>
Tue, 16 Jul 2013 18:25:51 +0000 (16 18:25 +0000)
sleepy_penguin 3.2.0 - minor bug fixes, preliminary kqueue support

epoll support and thread-safety improvements.  The dangerous
Epoll::IO interface is now an option for those who want to share an
epoll descriptor across fork and maintain their own IO object
references to avoid extra overhead.  Use the regular (high-level)
Epoll interface unless you're willing to shoot yourself in the face.

There is also preliminary Kqueue support (which should work under
libkqueue on Linux).  Similar to our epoll interface (and unlike
most event libraries/frameworks) our kqueue interface also supports
one-shot notifications and _embraces_ multi-threaded use.

Note: unlike epoll, kqueue has close-on-fork behavior, so kqueue
descriptors are not (ever) inheritable across fork.

Added EPOLLWAKEUP constant (Linux 3.5 + glibc 2.17 required) to
allow descriptors to prevent system suspend while active
(this requires the CAP_BLOCK_SUSPEND privilege).

Inotify and Epoll interfaces now use thread-local buffers for
thread-safety and improved concurrency without GVL.

Errno::EINTR is no longer propagated into Ruby-land, for consistency
with existing Ruby IO APIs.