kgio.git  about / heads / tags
kinder, gentler I/O for Ruby
$ git log --pretty=format:'%h %s (%cs)%d' 2.4-stable --
fdde0a2 kgio 2.4.2 - OpenSolaris build fix (2011-06-14)
	(tag: v2.4.2, 2.4-stable)
1a7eed4 extconf: -lnsl and -lsocket checks for OpenSolaris (2011-06-14)
f656c49 kgio 2.4.1 - Kgio.poll avoids EINTR, really (2011-05-20)
	(tag: v2.4.1)
f809a87 Kgio.poll: ensure EINTR never gets raised (2011-05-20)
ab73211 kgio 2.4.0 - portability fixes and more (2011-05-05)
	(tag: v2.4.0)
43190ca test_cross_thread_close: disable on RUBY_ENGINE != "ruby" (2011-05-05)
9c98bbd read_write: call rb_str_modify() before rb_str_resize() (2011-05-05)
c821ebe poll: deal with pollset changes on EINTR (2011-05-05)
f589a9a test_tcp_connect: disable wait_writable_set test on non-Linux (2011-05-05)
9900efe fix kgio_peek for !KGIO_NOPUSH systems (2011-05-05)
...

$ git cat-file blob 2.4-stable:README
= 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).

# heads (aka `branches'):
$ git for-each-ref --sort=-creatordate refs/heads \
	--format='%(HEAD) %(refname:short) %(subject) (%(creatordate:short))'
* master       drop remaining 1.8 and fragile autopush code paths (2023-09-10)
  rbx-wip      split read_write.c into {read,write,writev}.c (2013-11-21)
  2.4-stable   kgio 2.4.2 - OpenSolaris build fix (2011-06-14)

# tags:
$ git for-each-ref --sort=-creatordate refs/tags \
	--format='%(refname:short) %(subject) (%(creatordate:short))'
v2.11.4      kgio 2.11.4 (2021-05-25) tar.gz
v2.11.3      kgio 2.11.3 (2020-01-08) tar.gz
v2.11.2      kgio 2.11.2 - fix Ruby 2.5 compatibility for accept_class (2018-01-30) tar.gz
v2.11.1      kgio 2.11.1 - fix Ruby 2.5.0dev compatibility (2017-12-15) tar.gz
v2.11.0      kgio 2.11.0 - reverting 2.10.0 breakage (2016-12-16) tar.gz
v2.10.0      kgio 2.10.0 - slimming down... (2015-09-06) tar.gz
v2.9.3       kgio 2.9.3 - minor cleanups and fixes (2015-01-12) tar.gz
v2.9.2       kgio 2.9.2 - avoid deprecated/removed function (2014-02-15) tar.gz
v2.9.1       kgio 2.9.1 - various Ruby 1.8.7 fixes (2014-02-05) tar.gz
v2.9.0       kgio 2.9.0 - cleanups, bug fixes, minor improvements (2014-02-04) tar.gz
...

# associated public inboxes:
# (number on the left is used for dev purposes)
            https://yhbt.net/kgio-public

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