Posted By: Eric Wong
Date: 2011-05-13 02:42
Summary: io_splice 4.0.0 - zero-copy pipe I/O for Linux
Project: Quack Ruby Projects
It's easier to use!
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.com />* git://bogomips.org/ruby_io_splice.git
Changes:
Methods now automatically retry on EINTR after checking IO#closed? and executing interrupts.
There is a new IO::Splice::WAITALL flag (implemented in userspace) which may be used to cause IO.splice and IO.tee to retry (while the GVL is released) until the operation is complete.
IO::Splice.copy_stream now works correctly for large copies if source offset is specified.
MRI 1.8 is only weakly supported now, MRI 1.9 is the preferred platform though Rubinius appears to work, too. |
|