Kgio 2.2.0 - kinder, gentler I/O for the Internets

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
applications.

Changes:

  • 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
    process.

  • 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!

Eric W. wrote in post #979543:

Jr ungr #vsqrsf naq jvyy arire or xvaq abe tragyr gb gurz!

In case anyone is new to programming: the above is in ROT13.