1 = kgio - kinder, gentler I/O for Ruby
3 kgio provides non-blocking I/O methods for Ruby without raising
4 exceptions on EAGAIN and EINPROGRESS. It is intended for use with the
5 unicorn Rack server, but may be used by other applications (that run on
10 * Can avoid expensive exceptions on common EAGAIN/EINPROGRESS errors,
11 returning :wait_readable or :wait_writable instead.
12 These exceptions got more expensive to hit under Ruby 1.9.2
13 (but were fixed in Ruby 1.9.3 and later to 1.9.1 performance levels,
16 * Returns the unwritten portion of the string on partial writes,
17 making it ideal for buffering unwritten data.
19 * May call any method defined to be "kgio_wait_writable" or
20 "kgio_wait_readable" methods to allow socket/pipe objects to make custom
21 callbacks (such as adding the file descriptor to a poll set and yielding
25 {accept4}[http://kernel.org/doc/man-pages/online/pages/man2/accept4.2.html]
26 on new GNU/Linux systems to avoid unnecessary fcntl() calls
28 * Uses MSG_DONTWAIT on GNU/Linux to further avoid unnecessary fcntl() calls
30 * Compatible with existing Ruby IO objects and Ruby threading.
34 The library consists of a C extension so you'll need a Unix-like system
35 with a C compiler and Ruby development libraries/headers.
36 You may install it via RubyGems.org:
40 You can get the latest source via git from the following locations
41 (these versions may not be stable):
43 git://bogomips.org/kgio.git
44 git://repo.or.cz/kgio.git (mirror)
46 You may browse the code from the web and download the latest snapshot
49 * http://bogomips.org/kgio.git (cgit)
50 * http://repo.or.cz/w/kgio.git (gitweb)
52 See the HACKING guide on how to contribute and build prerelease gems
57 All feedback (bug reports, user/development dicussion, patches, pull
58 requests) go to the mailing list/newsgroup. See the ISSUES document for
59 information on the {kgio mailing list}[mailto:kgio-public@bogomips.org]
61 For the latest on kgio releases, you may check our NEWS page (and
62 subscribe to our Atom feed).