kgio provides non-blocking I/O methods for Ruby without raising
exceptions on EAGAIN and EINPROGRESS. It is intended for use with the
Unicorn and Rainbows! Rack servers, but may be used by other
sockets accept()ed by a TCP_NOPUSH/TCP_CORK listener
automatically flush on kgio_*read calls if there is pending
data. “Kgio.autopush = false” disables this globally,
and Kgio::Socket also get “kgio_autopush=” to enable/disable
on a per-object individual basis.
ECONNRESET exceptions get empty backtraces for kgio_*read.
There’s nothing a programmer can do about these, so there’s
no point in going through the expensive backtrace generation
Kgio.try* singleton methods added for working with non-Kgio
enhanced objects. No more needing to use Object#extend
and blowing away your method cache to make existing I/O
objects kinder and gentler.
IPv6 support should be complete, systems without a native
getaddrinfo(3) are now unsupported (and will remain so
unless somebody complains).
There should be no other backwards-incompatible changes other
than requiring getaddrinfo(3) and friends for IPv6 support.
Jr ungr #vsqrsf naq jvyy arire or xvaq abe tragyr gb gurz!