Io_splice 4.2.0 - zero-copy pipe I/O for Linux and Ruby

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


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

There are several other small cleanups.

Eric W. (6):
copy_stream: small cleanup for pipe splicing
limit maximum splice length to 1 << 30
avoid uname() for pipe size modification checks
doc: s/
vmsplice: avoid referencing invalid stack address for strings
vmsplice: more consistent fileno retry handling