Date | Commit message (Collapse) |
|
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.
|
|
Apparently the old Ruby 1.8.6 installation lying around isn't
old enough.
|
|
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
|
|
"Enterprise" users are sometimes stuck on older Rubies/RubyGems
and this is still required for them.
|
|
No need to completely fail on a test.
|
|
Apparently Ruby 1.8.6 is still in use...
|
|
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.
|
|
There's no reason for SOCK_NONBLOCK with Ruby, and SOCK_CLOEXEC
has always been on-by-default with accept() wrappers.
|
|
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.
|
|
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.
|
|
The kgio_accept and kgio_tryaccept methods now take an
additional flags argument, so there's no reason to set
global flags anywhere.
|
|
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.
|
|
This needs to work similarly to IO.select.
|
|
We want feedback!
|
|
eye kan spel!
|
|
This is not glibc and I'm not Ulrich Drepper.
|
|
Monkeys!
|
|
This helps exec() and similar methods close descriptors on
shutdown.
|
|
We want more descriptive error messages and don't want
crazy stuff like floats.
|
|
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.
|
|
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.
|
|
It's too confusing and may break binary compatibility if the
system is later upgraded.
|
|
We don't want people using the compatibility constants
since they're actually broken on systems with real accept4().
|
|
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.
|
|
my_fileno() may change errno on some Rubies
|
|
We support IPv6, not just IPv4
|
|
It's there for kgio_wait_readable
|
|
In case the toolchain can't test the feature properly
or Ruby is upgraded and the symbol is added.
|
|
Some installations of Ruby clobbered my usual CFLAGS=-Wall
|
|
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.
|
|
Kgio::File may be used to open FIFOs, so non-blocking
I/O is still useful in that context.
|
|
It is possible but unlikely to get ENOMEM on open(2),
so try to GC away some files.
|
|
New feature in 2.5, we now have 100% documentation again.
|
|
New features are better if they're documentated.
|
|
Non-profit TLD is better sounding for a Free Software
project.
|
|
|
|
* 2.4-stable:
kgio 2.4.2 - OpenSolaris build fix
extconf: -lnsl and -lsocket checks for OpenSolaris
|
|
* adds -lnsl and -lsocket checks for OpenSolaris
|
|
Reported via private email.
(cherry picked from commit d224563823accca63fd871260e3f0dad6758c8d4)
|
|
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
|
|
Reported via private email.
|
|
We won't waste time with inferior, non-Free platforms.
|
|
Fixes locale issues with grep and adds check-warnings
|
|
* 2.4-stable:
kgio 2.4.1 - Kgio.poll avoids EINTR, really
Kgio.poll: ensure EINTR never gets raised
|
|
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.
|
|
Retry on a zero timeout if we get interrupted
even if the timeout expired. This is also what
IO.select does in Ruby itself.
|
|
Retry on a zero timeout if we get interrupted
even if the timeout expired. This is also what
IO.select does in Ruby itself.
|
|
This will allow users to subclass Kgio::File and
override certain behavior (e.g. overriding "#each").
|
|
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.
|
|
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.
|