Release Name: 2.4.0
Notes:
kgio 2.4.0 - portability fixes and more
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.
* http://bogomips.org/kgio/
* kgio@librelist.org
* git://bogomips.org/kgio.git
Changes:
== All supported platforms (*nix + MRI 1.8+, Rubinius)
* OpenBSD (and possibly other *BSD) fixes, thanks to Jeremy Evans.
* kgio_accept and kgio_tryaccept now take an optional second argument
for flags (like the accept4() flags argument).
== Ruby 1.9-only things
* Kgio.poll no longer raises Errno::EINTR to match IO.select.
== Ruby 1.9 trunk things
* close() on an active FD in a different thread is better
handled/detected.
* copy-on-write for strings is properly triggered
Changes:
GIT-VERSION-GEN | 2 +-
HACKING | 9 +-
ext/kgio/accept.c | 229 ++++++++++++++++++++++++---------------
ext/kgio/autopush.c | 1 +
ext/kgio/broken_system_compat.h | 62 +++++++++++
ext/kgio/connect.c | 1 +
ext/kgio/extconf.rb | 8 +-
ext/kgio/poll.c | 61 ++++++++++-
ext/kgio/read_write.c | 14 ++-
kgio.gemspec | 3 +-
test/lib_read_write.rb | 36 ++++++
test/lib_server_accept.rb | 19 ++++
test/test_autopush.rb | 2 +-
test/test_cross_thread_close.rb | 26 +++++
test/test_poll.rb | 47 ++++++--
test/test_tcp_connect.rb | 2 +-
16 files changed, 403 insertions(+), 119 deletions(-)
commit ab732113e13f1690fd2c1a18d1c66beb7864d847
Author: Eric Wong
Date: Thu May 5 15:58:17 2011 -0700
kgio 2.4.0 - portability fixes and more
== All supported platforms (*nix + MRI 1.8+, Rubinius)
* OpenBSD (and possibly other *BSD) fixes, thanks to Jeremy Evans.
* kgio_accept and kgio_tryaccept now take an optional second argument
for flags (like the accept4() flags argument).
== Ruby 1.9-only things
* Kgio.poll no longer raises Errno::EINTR to match IO.select.
== Ruby 1.9 trunk things
* close() on an active FD in a different thread is better
handled/detected.
* copy-on-write for strings is properly triggered
commit 43190caf48309fa6aa5423d2d1ae5c320ad07fb5
Author: Eric Wong
Date: Thu May 5 15:38:00 2011 -0700
test_cross_thread_close: disable on RUBY_ENGINE != "ruby"
These aren't well-defined semantics...
commit 9c98bbd79f152fd72b257f9c37ca185587e56225
Author: Eric Wong
Date: Thu May 5 13:24:36 2011 -0700
read_write: call rb_str_modify() before rb_str_resize()
This is needed under Ruby trunk if the string is not actually
resized.
commit c821ebeb851807840f74c4cb4f1a10e691bf222a
Author: Eric Wong
Date: Thu May 5 13:11:53 2011 -0700
poll: deal with pollset changes on EINTR
This allows callers to modify the pollset, interrupt
the polling thread, and then poll with the modified
pollset. This is also important for dealing with
closed IO objects that may have been invalidated
due to GC, too.
commit f589a9ae18216e1220bea8f905f33051e88f1ae7
Author: Eric Wong
Date: Thu May 5 12:30:45 2011 -0700
test_tcp_connect: disable wait_writable_set test on non-Linux
OpenBSD seems to make connect() return success immediately even
on a non-blocking socket, so it's hard to test for.
Thanks to Jeremy Evans to reporting the issue under OpenBSD.
ref: http://mid.gmane.org/20110505181846.GB9693@jeremyevans.local
commit 9900efecb60635ad97b5c00c76eb60252839b1c1
Author: Jeremy Evans
Date: Thu May 5 11:18:46 2011 -0700
fix kgio_peek for !KGIO_NOPUSH systems
Fix kgio_peek by adding an empty kgio_autopush_recv
if !KGIO_NOPUSH.
ref: http://mid.gmane.org/20110505181846.GB9693@jeremyevans.local
Acked-by: Eric Wong
commit 577cf3056d9f3088145aea51bbc09a0c90a7695e
Author: Jeremy Evans
Date: Thu May 5 11:49:01 2011 -0700
connect: zero out hints argument for getaddrinfo
Some systems like OpenBSD are stricter about irrelevant
fields than GNU/Linux.
[ew: commit message]
ref: http://mid.gmane.org/20110505181846.GB9693@jeremyevans.local
Acked-by: Eric Wong
commit 537e4c341137a45330e28376e8f29da7df44808f
Author: Eric Wong
Date: Wed May 4 19:26:38 2011 -0700
Kgio.poll restarts on interrupt
This changes our semantics, but it's unlikely anybody
relies on EINTR right now...
commit f2a3998e0c0f63ad14acf5ccc0141fc6cdce24e3
Author: Eric Wong
Date: Wed Apr 27 11:44:51 2011 -0700
extconf: remove unnecessary dir_config statement
I didn't know this about mkmf at the time...
commit 3033f2e8f178c0f150cfd3e2a070570154a27430
Author: Eric Wong
Date: Thu Apr 21 20:08:01 2011 +0000
doc: improve kgio_accept/kgio_tryaccept docs
Documenting the new flags options and also improving
style of the existing class overrides.
commit b885cf9a2ef0864dcebb9bba7b1fcf3eb08f9ae8
Author: Eric Wong
Date: Thu Apr 21 20:06:08 2011 +0000
test_autopush: attempting to fix a timing test...
Not fun on slow systems, unfortunately...
commit be46333541acd72bde3544a3e86f6ead0bb364d0
Author: Eric Wong
Date: Wed Apr 20 18:36:09 2011 -0700
doc: fix trywrite call-seq
commit 3b48d6c823a7da34c0b37d8eb3c11964c4a3ba89
Author: Eric Wong
Date: Thu Apr 14 02:31:50 2011 +0000
test_autopush: use assert_in_delta for test
Some systems are slower than others...
commit f36f7584b766cb5d558fcfa94ea639e6090bcb54
Author: Eric Wong
Date: Mon Apr 11 18:21:09 2011 +0000
gemspec: bump wrongdoc version
commit 212f6fdfe51e2167d362686bb2622ce04e6e5de5
Author: Eric Wong
Date: Mon Apr 11 18:20:27 2011 +0000
gemspec: remove unnecessary require_paths
RubyGems handles it already
commit fefd652d6cc5825bebbe164a360c4a06b1399dcb
Author: Eric Wong
Date: Sun Apr 10 07:27:40 2011 +0000
add test for cross thread close
Ruby 1.9.3dev has better support for it
commit 983e8ff915118d00b683109df0834733b485086d
Author: Eric Wong
Date: Sun Apr 10 07:04:41 2011 +0000
read_write: detect closed fd on EINTR
Another thread may have killed the descriptor.
commit 01949865e2715b487e098dbc60ba3ae7a01a3b54
Author: Eric Wong
Date: Sun Apr 10 06:07:55 2011 +0000
accept: better detect closed files on EINTR/EAGAIN
Another thread may have killed the acceptor object.
commit 59782a15d0be87130934cbecb34ed639be68b44a
Author: Eric Wong
Date: Sun Mar 20 16:27:55 2011 -0700
*accept methods can take flags argument, like accept4()
This allows applications to not rely on global accept4_flags
commit 0ef079617b7d71cc26574247918c4a3e18454b21
Author: Eric Wong
Date: Sat Mar 19 18:29:15 2011 -0700
accept: prepare optional flags argument to accept() wrappers
Don't force people to rely on global flags, there may be
blocking parts of an otherwise non-blocking program...
commit f8b8b3f73d238d4c29368b4a0f768c5afb03d43d
Author: Eric Wong
Date: Thu Mar 17 14:06:45 2011 -0700
HACKING: updates for wrongdoc vs rdoc
|