about summary refs log tree commit homepage
DateCommit message (Collapse)
2012-01-08kgio 2.7.2 - for older, and older Rubies v2.7.2
Fix a missing #include for Ruby 1.8.5 users. No need to upgrade to this (nor 2.7.1) if you're on a modern version of Ruby.
2012-01-08tryopen: remember to include ancient_ruby.h for 1.8.5
Apparently the old Ruby 1.8.6 installation lying around isn't old enough.
2012-01-08kgio 2.7.1 - compatibility with older Rubies v2.7.1
This release fixes some compatibility issues with people stuck on older versions of Ruby/RubyGems. * define RARRAY_PTR/RARRAY_LEN macros for Ruby 1.8.6 * test/test_autopush: skip strace tests if not available * gemspec: disable development dependencies for old systems
2012-01-08gemspec: disable development dependencies for old systems
"Enterprise" users are sometimes stuck on older Rubies/RubyGems and this is still required for them.
2012-01-08test/test_autopush: skip strace tests if not available
No need to completely fail on a test.
2012-01-07define RARRAY_PTR/RARRAY_LEN macros for Ruby 1.8.6
Apparently Ruby 1.8.6 is still in use...
2011-12-13kgio 2.7.0 - minor updates v2.7.0
When running under Ruby trunk/2.0.0dev, all IO objects created by kgio will be close-on-exec by default to match the (future) 2.0.0 behavior. accept()ed sockets in kgio have always been close-on-exec by default.. Singleton Kgio.accept_* methods are deprecated as the kgio_accept/kgio_tryaccept methods all take an additional flags argument. There are various, test, documentation, and error message improvements.
2011-11-17doc: update documentation regarding accept method flags
There's no reason for SOCK_NONBLOCK with Ruby, and SOCK_CLOEXEC has always been on-by-default with accept() wrappers.
2011-11-17connect,tryopen: set close-on-exec flag for new fds on Ruby 2.0+
All IO objects created by Kgio will have FD_CLOEXEC descriptor flag set on it when run under Ruby 2.0.0dev. This matches the upcoming behavior of Ruby 2.0.0dev for IO objects in the core and standard library. This change does not affect users on Ruby 1.9.3 and earlier. accept()-ed sockets in kgio have _always_ had FD_CLOEXEC set by default.
2011-11-15tests: remove tests for IO#nonblock? after accept
There's no point in testing a Ruby implementation detail and these tests fail under OpenBSD where the accept()-ed socket inherits the O_NONBLOCK flag from the parent.
2011-11-15accept: deprecate singleton Kgio.accept_* methods
The kgio_accept and kgio_tryaccept methods now take an additional flags argument, so there's no reason to set global flags anywhere.
2011-11-15accept: always set O_NONBLOCK for accept()-ed sockets in 1.8
This is mostly an implementation detail, but it's already true on OpenBSD (and maybe other BSDs), and also requires no additional syscalls on newer Linux systems.
2011-08-29test_poll: test for closing a polled IO in sighandler
This needs to work similarly to IO.select.
2011-08-24.wrongdoc.yml: add public/private email addresses
We want feedback!
2011-08-24wait.c: fix misspelling in rdoc
eye kan spel!
2011-08-09LICENSE: s/GNU C Library/kgio/
This is not glibc and I'm not Ulrich Drepper.
2011-08-09TODO: update SSL/TLS support status :)
Monkeys!
2011-07-21use rb_update_max_fd() under MRI 1.9.3+
This helps exec() and similar methods close descriptors on shutdown.
2011-07-15connect: more descriptive error for TCP port
We want more descriptive error messages and don't want crazy stuff like floats.
2011-07-14kgio 2.6.0 - minor feature update and cleanups v2.6.0
We now export SOCK_NONBLOCK, SOCK_CLOEXEC constants in the Kgio namespace to make kgio_tryaccept/kgio_accept easier-to-use. There are also some minor internal cleanups.
2011-07-14add prototype for rb_thread_blocking_io_region()
It's no in the public headers, but Ruby 1.9.3 will have it and it's still superior to rb_thread_blocking_region() even though it's not ideal.
2011-07-14missing_accept4: don't use FD_CLOEXEC for SOCK_CLOEXEC emulation
It's too confusing and may break binary compatibility if the system is later upgraded.
2011-07-14accept.c: fix RDoc for new Kgio::SOCK_* constants
We don't want people using the compatibility constants since they're actually broken on systems with real accept4().
2011-07-06export SOCK_NONBLOCK, SOCK_CLOEXEC constants in Kgio
It's more reliable than relying on IO::NONBLOCK and Fcntl::FD_CLOEXEC constants. The existing constants are not guaranteed to be equivalent to what accept4() takes even though the current Linux implementation does it this way.
2011-07-06accept.c: reinstate errno after calling my_fileno()
my_fileno() may change errno on some Rubies
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.