# \[ANN\] kgio 2.11.0 - legacy I/O for legacy Ruby + Unix

**URL:** https://rubytalk.org/t/ann-kgio-2-11-0-legacy-i-o-for-legacy-ruby-unix/73960
**Category:** ruby-talk
**Created:** [16 December 2016 23:18 UTC](https://rubytalk.org/t/ann-kgio-2-11-0-legacy-i-o-for-legacy-ruby-unix/73960 "2016-12-16T23:18:37Z")
**Posts on this page:** 1
**Page:** 1

<div class="post-metadata">

### Author: ![Eric\_Wong](https://avatars.discourse-cdn.com/v4/letter/e/a3d4f5/32.png) [@Eric\_Wong](https://rubytalk.org/u/Eric_Wong)
#### Post date: [16 December 2016 23:18 UTC](https://rubytalk.org/t/ann-kgio-2-11-0-legacy-i-o-for-legacy-ruby-unix/73960/1 "2016-12-16T23:18:37Z")

</div>

kgio provides non-blocking I/O methods for Ruby without raising  
exceptions on EAGAIN and EINPROGRESS. It is intended for use with the  
unicorn Rack server, but may be used by other applications (that run on  
Unix-like platforms).

Note: I do not recommend using kgio for future applications, Ruby 2.x  
has a lot of the functionality of kgio and Ruby 2.3 has even more.  
Keep an eye on the NEWS file for Ruby 2.3+ releases.  
However, I'll continue maintaining kgio for legacy purposes  
indefinitely.

\* homepage: [https://bogomips.org/kgio/](https://bogomips.org/kgio/)  
\* public mailing list: [kgio-public@bogomips.org](mailto:kgio-public@bogomips.org)  
\* git clone git://bogomips.org/kgio.git  
\* Atom feed [https://bogomips.org/kgio/NEWS.atom.xml](https://bogomips.org/kgio/NEWS.atom.xml)  
\* mailing list archives: [https://bogomips.org/kgio-public/](https://bogomips.org/kgio-public/)

Changes: kgio 2.11.0 - reverting 2.10.0 breakage

&nbsp;&nbsp;&nbsp;&nbsp;Mainly this release reverts back to kgio 2.9.3 behavior by  
&nbsp;&nbsp;&nbsp;&nbsp;supporting "autopush" functionality in the C extension.  
&nbsp;&nbsp;&nbsp;&nbsp;Removing this feature in 2.10.0 was a monumental mistake(\*) on  
&nbsp;&nbsp;&nbsp;&nbsp;my part which caused a performance regression for ONE known user  
&nbsp;&nbsp;&nbsp;&nbsp;of kgio on the deprecated (but supported) Rainbows! server.

&nbsp;&nbsp;&nbsp;&nbsp;This release does not affect known users outside of Rainbows!,  
&nbsp;&nbsp;&nbsp;&nbsp;but we may have unknown users, too.

&nbsp;&nbsp;&nbsp;&nbsp;The attempt at a pure Ruby version of autopush had flaws and  
&nbsp;&nbsp;&nbsp;&nbsp;regressions in real-world testing, so that was abandoned.

&nbsp;&nbsp;&nbsp;&nbsp;So yeah, kgio will be supported indefinitely even in the face  
&nbsp;&nbsp;&nbsp;&nbsp;of internal changes to MRI, but I strongly discourage its use  
&nbsp;&nbsp;&nbsp;&nbsp;for new projects.  
&nbsp;&nbsp;&nbsp;&nbsp;Users who only support Ruby 2.3 (and later) are encouraged to  
&nbsp;&nbsp;&nbsp;&nbsp;use `exception: false` with all \*\_nonblock methods.

&nbsp;&nbsp;&nbsp;&nbsp;4 changes since 2.10.0:

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;resurrect Kgio.autopush support in pure Ruby [REVERTED]  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;reinstate the original (and dangerous) autopush in C  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TODO: update with Ruby 2.3 status  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;test: increase test data sizes to fill socket buffers

&nbsp;&nbsp;&nbsp;&nbsp;(\*) - as was making this a separate project, at all
