kgio.git  about / heads / tags
kinder, gentler I/O for Ruby
blob 63bae323b8c6424908cf414284e07d071cc8e951 2220 bytes (raw)
$ git show 2.4-stable:README	# shows this blob on the CLI

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
 
= kgio - kinder, gentler I/O for Ruby

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.

== Features

* Can avoid expensive exceptions on common EAGAIN/EINPROGRESS errors,
  returning :wait_readable or :wait_writable instead.
  These exceptions got more expensive to hit under Ruby 1.9.2
  (but should be fixed in Ruby 1.9.3 to 1.9.1 performance levels)

* Returns the unwritten portion of the string on partial writes,
  making it ideal for buffering unwritten data.

* May call any method defined to be "kgio_wait_writable" or
  "kgio_wait_readable" methods to allow socket/pipe objects to make custom
  callbacks (such as adding the file descriptor to a poll set and yielding
  the current Fiber).

* Uses
  {accept4}[http://kernel.org/doc/man-pages/online/pages/man2/accept4.2.html]
  on new GNU/Linux systems to avoid unnecessary fcntl() calls

* Uses MSG_DONTWAIT on GNU/Linux to further avoid unnecessary fcntl() calls

* Compatible with existing Ruby IO objects and Ruby threading.

== Install

The library consists of a C extension so you'll need a C compiler
and Ruby development libraries/headers.

You may download the tarball from the Rainbows! project page on Rubyforge
and run setup.rb after unpacking it:

http://rubyforge.org/frs/?group_id=8977

You may also install it via RubyGems.org:

  gem install kgio

You can get the latest source via git from the following locations
(these versions may not be stable):

  git://bogomips.org/kgio.git
  git://repo.or.cz/kgio.git (mirror)

You may browse the code from the web and download the latest snapshot
tarballs here:

* http://bogomips.org/kgio.git (cgit)
* http://repo.or.cz/w/kgio.git (gitweb)

See the HACKING guide on how to contribute and build prerelease gems
from git.

== Contact

All feedback (bug reports, user/development dicussion, patches, pull
requests) go to the mailing list/newsgroup.  See the ISSUES document for
information on the {kgio mailing list}[mailto:kgio@librelist.com]

For the latest on kgio releases, you may check our NEWS page (and
subscribe to our Atom feed).

git clone git://yhbt.net/kgio.git
git clone https://yhbt.net/kgio.git