test_autopush: attempting to fix a timing test...
[kgio.git] / README
blob63bae323b8c6424908cf414284e07d071cc8e951
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 and Rainbows! Rack servers, but may be used by other
6 applications.
8 == Features
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 should be fixed in Ruby 1.9.3 to 1.9.1 performance levels)
15 * Returns the unwritten portion of the string on partial writes,
16   making it ideal for buffering unwritten data.
18 * May call any method defined to be "kgio_wait_writable" or
19   "kgio_wait_readable" methods to allow socket/pipe objects to make custom
20   callbacks (such as adding the file descriptor to a poll set and yielding
21   the current Fiber).
23 * Uses
24   {accept4}[http://kernel.org/doc/man-pages/online/pages/man2/accept4.2.html]
25   on new GNU/Linux systems to avoid unnecessary fcntl() calls
27 * Uses MSG_DONTWAIT on GNU/Linux to further avoid unnecessary fcntl() calls
29 * Compatible with existing Ruby IO objects and Ruby threading.
31 == Install
33 The library consists of a C extension so you'll need a C compiler
34 and Ruby development libraries/headers.
36 You may download the tarball from the Rainbows! project page on Rubyforge
37 and run setup.rb after unpacking it:
39 http://rubyforge.org/frs/?group_id=8977
41 You may also install it via RubyGems.org:
43   gem install kgio
45 You can get the latest source via git from the following locations
46 (these versions may not be stable):
48   git://bogomips.org/kgio.git
49   git://repo.or.cz/kgio.git (mirror)
51 You may browse the code from the web and download the latest snapshot
52 tarballs here:
54 * http://bogomips.org/kgio.git (cgit)
55 * http://repo.or.cz/w/kgio.git (gitweb)
57 See the HACKING guide on how to contribute and build prerelease gems
58 from git.
60 == Contact
62 All feedback (bug reports, user/development dicussion, patches, pull
63 requests) go to the mailing list/newsgroup.  See the ISSUES document for
64 information on the {kgio mailing list}[mailto:kgio@librelist.com]
66 For the latest on kgio releases, you may check our NEWS page (and
67 subscribe to our Atom feed).