Files | Admin

Notes:

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.