about summary refs log tree commit homepage
DateCommit message (Collapse)
2011-06-17doc: update documentation for kgio_addr attribute v2.5.0
We support IPv6, not just IPv4
2011-06-17doc: call-seq for kgio_wait_writable
It's there for kgio_wait_readable
2011-06-17ancient_ruby.h: avoid symbol clobbering
In case the toolchain can't test the feature properly or Ruby is upgraded and the symbol is added.
2011-06-15fix misc compiler warnings
Some installations of Ruby clobbered my usual CFLAGS=-Wall
2011-06-15make timed kgio_wait_* implementation safer
IO.select can handle fd >= 1024 safely in some Rubies while fd_set may not. We could use rb_thread_fd_select(), but rb_wait_for_single_fd() is available now so the former is not worth the maintenance hassle.
2011-06-15Kgio::File includes Kgio::PipeMethods module
Kgio::File may be used to open FIFOs, so non-blocking I/O is still useful in that context.
2011-06-15Kgio::File.tryopen runs GC on ENOMEM
It is possible but unlikely to get ENOMEM on open(2), so try to GC away some files.
2011-06-15doc: add rdoc for Kgio::File.tryopen
New feature in 2.5, we now have 100% documentation again.
2011-06-15kgio_wait_*able: documentation for optional timeout
New features are better if they're documentated.
2011-06-15doc: use librelist.org instead of librelist.com
Non-profit TLD is better sounding for a Free Software project.
2011-06-15GIT-VERSION-GEN: bump version for new API
2011-06-15Merge branch '2.4-stable'
* 2.4-stable: kgio 2.4.2 - OpenSolaris build fix extconf: -lnsl and -lsocket checks for OpenSolaris
2011-06-14kgio 2.4.2 - OpenSolaris build fix v2.4.2 2.4-stable
* adds -lnsl and -lsocket checks for OpenSolaris
2011-06-14extconf: -lnsl and -lsocket checks for OpenSolaris
Reported via private email. (cherry picked from commit d224563823accca63fd871260e3f0dad6758c8d4)
2011-06-14add timeout to kgio_wait_{read,writ}able
io/wait doesn't have an IO#wait_writable method, yet[1] and IO#wait checks FIONREAD which makes it unsuitable for certain descriptors. This method uses the new rb_wait_for_single_fd() function in Ruby 1.9.r. This internally uses ppoll() under Linux, meaning it performs the same regardless of the FD used. [1] http://redmine.ruby-lang.org/issues/4647 [2] http://redmine.ruby-lang.org/issues/4849
2011-06-13extconf: -lnsl and -lsocket checks for OpenSolaris
Reported via private email.
2011-05-23README: clarify that we only work on Unix-like systems
We won't waste time with inferior, non-Free platforms.
2011-05-20pkg.mk: update to the latest version
Fixes locale issues with grep and adds check-warnings
2011-05-20Merge branch '2.4-stable'
* 2.4-stable: kgio 2.4.1 - Kgio.poll avoids EINTR, really Kgio.poll: ensure EINTR never gets raised
2011-05-20kgio 2.4.1 - Kgio.poll avoids EINTR, really v2.4.1
This release fixes a race condition that could allow Errno::EINTR to be raised even though the 2.4.0 release was supposed to stop that. Nobody uses Kgio.poll, really, so this shouldn't be an issue for real code, yet.
2011-05-20Kgio.poll: ensure EINTR never gets raised
Retry on a zero timeout if we get interrupted even if the timeout expired. This is also what IO.select does in Ruby itself.
2011-05-20Kgio.poll: ensure EINTR never gets raised
Retry on a zero timeout if we get interrupted even if the timeout expired. This is also what IO.select does in Ruby itself.
2011-05-13Kgio.tryopen => Kgio::File.tryopen
This will allow users to subclass Kgio::File and override certain behavior (e.g. overriding "#each").
2011-05-13return Kgio::File for Kgio.tryopen
This also allows us to return/override #to_path and #path if necessary, but so far everything works with MRI 1.8, MRI 1.9, and Rubinius.
2011-05-13add Kgio.tryopen method
For the case where a file is readable, it's faster to just call open() instead of stat()-ing and then calling open(). open() failures are still relatively cheap, too, they're still more expensive than a failed stat() but cheaper than raising an exception.
2011-05-05kgio 2.4.0 - portability fixes and more v2.4.0
== 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
2011-05-05test_cross_thread_close: disable on RUBY_ENGINE != "ruby"
These aren't well-defined semantics...
2011-05-05read_write: call rb_str_modify() before rb_str_resize()
This is needed under Ruby trunk if the string is not actually resized.
2011-05-05poll: 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.
2011-05-05test_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
2011-05-05fix 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 <normalperson@yhbt.net>
2011-05-05connect: 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 <normalperson@yhbt.net>
2011-05-04Kgio.poll restarts on interrupt
This changes our semantics, but it's unlikely anybody relies on EINTR right now...
2011-04-27extconf: remove unnecessary dir_config statement
I didn't know this about mkmf at the time...
2011-04-21doc: improve kgio_accept/kgio_tryaccept docs
Documenting the new flags options and also improving style of the existing class overrides.
2011-04-21test_autopush: attempting to fix a timing test...
Not fun on slow systems, unfortunately...
2011-04-20doc: fix trywrite call-seq
2011-04-14test_autopush: use assert_in_delta for test
Some systems are slower than others...
2011-04-11gemspec: bump wrongdoc version
2011-04-11gemspec: remove unnecessary require_paths
RubyGems handles it already
2011-04-10add test for cross thread close
Ruby 1.9.3dev has better support for it
2011-04-10read_write: detect closed fd on EINTR
Another thread may have killed the descriptor.
2011-04-10accept: better detect closed files on EINTR/EAGAIN
Another thread may have killed the acceptor object.
2011-03-20*accept methods can take flags argument, like accept4()
This allows applications to not rely on global accept4_flags
2011-03-19accept: 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...
2011-03-17HACKING: updates for wrongdoc vs rdoc
2011-03-15kgio 2.3.3 - minor fixes v2.3.3
We no longer over-allocate memory for Kgio.poll (1.9.x-only). Under Ruby 1.9.3dev, we also use rb_thread_io_blocking_region to properly deal with cross-thread IO#close.
2011-03-14poll: fix over-allocation for poll(2)
Oops, fortunately we allocated too much and not too little.
2011-03-14use rb_thread_blocking_io_region if possible
It's in Ruby 1.9.3dev and tracks waiting FDs on blocked threads.
2011-02-25doc: more consistent references for kgio_wait_*able methods
Much nicer this way...