[ANN] io_splice 4.0.0 - zero-copy pipe I/O for Linux and Ruby

E

Eric Wong

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/
* (e-mail address removed)
* git://bogomips.org/ruby_io_splice.git

Changes:

Now easier to use!

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.
 
E

Eric Wong

I just pushed out 4.1.0 with one enhancement on top of 4.0.0:

IO::Splice.copy_stream coerces based on the availability of
the #to_path method in source and destination arguments.

This is to be compatible with IO.copy_stream and also
Rack::File since this may be used in web servers.

This is NOT visible with Ruby 1.8 since File.open
doesn't coerce with #to_path on the given object.

* http://bogomips.org/ruby_io_splice/
* (e-mail address removed)
* git://bogomips.org/ruby_io_splice.git
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,769
Messages
2,569,579
Members
45,053
Latest member
BrodieSola

Latest Threads

Top