Release Name: 4.2.0
Notes:
io_splice 4.2.0 - several bugfixes and workarounds
The splice family of Linux system calls can transfer data between file
descriptors without the need to copy data into userspace. Instead of a
userspace buffer, they rely on an ordinary Unix pipe as a kernel-level
buffer.
* http://bogomips.org/ruby_io_splice/
* ruby.io.splice@librelist.org
* git://bogomips.org/ruby_io_splice.git
* http://bogomips.org/ruby_io_splice/NEWS.atom.xml
Changes:
We now limit maximum splice length to (1<<30) to avoid EINVAL
errors on 64-bit hosts.
vmsplice no longer raises Errno::EFAULT optimizations in newer
GCC (not that I've found a good use for vmsplice at all with
Ruby...)
There are several other small cleanups.
Eric Wong (6):
copy_stream: small cleanup for pipe splicing
limit maximum splice length to 1 << 30
avoid uname() for pipe size modification checks
doc: s/librelist.com/librelist.org/
vmsplice: avoid referencing invalid stack address for strings
vmsplice: more consistent fileno retry handling
Changes:
GIT-VERSION-GEN | 2 +-
README | 4 +--
ext/io_splice/io_splice_ext.c | 70 +++++++++++++++++++++++++++++--------------
io_splice.gemspec | 2 +-
lib/io/splice.rb | 18 +++++------
test/test_tcp_splice.rb | 17 +++++++++++
6 files changed, 77 insertions(+), 36 deletions(-)
commit b24af7d357644bfe5c65785d58492845b00e888d
Author: Eric Wong
Date: Sat Jan 19 08:12:06 2013 +0000
io_splice 4.2.0 - several bugfixes and workarounds
We now limit maximum splice length to (1<<30) to avoid EINVAL
errors on 64-bit hosts.
vmsplice no longer raises Errno::EFAULT optimizations in newer
GCC (not that I've found a good use for vmsplice at all with
Ruby...)
There are several other small cleanups.
Eric Wong (6):
copy_stream: small cleanup for pipe splicing
limit maximum splice length to 1 << 30
avoid uname() for pipe size modification checks
doc: s/librelist.com/librelist.org/
vmsplice: avoid referencing invalid stack address for strings
vmsplice: more consistent fileno retry handling
commit aa94260ff6e8fe1d7d954bbcbadf5b06c6006777
Author: Eric Wong
Date: Sat Jan 19 08:10:23 2013 +0000
vmsplice: more consistent fileno retry handling
While vmsplice is hardly useful, its FD-closed-while-GVL-less
handling should be as good as our splice and tee wrappers.
commit 1707419f13b206fdd9d4654b03cc34d977fdedc6
Author: Eric Wong
Date: Sat Jan 19 03:08:06 2013 +0000
vmsplice: avoid referencing invalid stack address for strings
Newer GCC more aggressively optimizes stack allocations away,
so we need to avoid passing out-of-scope addresses to vmsplice.
Not that vmsplice is useful in Ruby...
commit d5dc32f3b3dd2577eb473bb8ec6c1b7533b5081e
Author: Eric Wong
Date: Thu Mar 8 05:20:15 2012 +0000
doc: s/librelist.com/librelist.org/
.org makes us look less commercial, which may be
important to some folks. Yes, this project is
run by a dirty hippie.
commit f2a1b8e5f3b9b9ba0c8593bab6d58def3b75e6a4
Author: Eric Wong
Date: Wed Mar 7 10:27:46 2012 +0000
avoid uname() for pipe size modification checks
The uname comparison is fragile and we can better
detect this during the Init_* function by just using
a pipe.
commit a2ae924fb1c372cc559a59feca40780a9a37ba33
Author: Eric Wong
Date: Wed May 18 15:36:52 2011 -0700
limit maximum splice length to 1 << 30
This is the same value haproxy has to work around the same
issue on 64-bit platforms.
ref: a9de333aa58e6cb76f08a50e8ba2c5931184068f in
http://git.1wt.eu/git/haproxy.git
commit aad5139884ad055d8aafb4316360e9f486b2d452
Author: Eric Wong
Date: Wed May 18 13:47:54 2011 -0700
copy_stream: small cleanup for pipe splicing
No need to loop on IO::Splice.full, it already loops
internally whenever it makes sense.
|