# Io\_splice 1.0.0 - zero-copy pipe I/O for Linux

**URL:** <https://www.ruby-forum.com/t/io-splice-1-0-0-zero-copy-pipe-i-o-for-linux/189280>\
**Category:** Ruby\
**Created:** [May 27, 2010, 10:55pm UTC](https://www.ruby-forum.com/t/io-splice-1-0-0-zero-copy-pipe-i-o-for-linux/189280 "2010-05-27T22:55:25Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![ericw](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/e/97f17d/32.png) [@ericw](https://www.ruby-forum.com/u/ericw)\
**Post date:** [May 27, 2010, 10:55pm UTC](https://www.ruby-forum.com/t/io-splice-1-0-0-zero-copy-pipe-i-o-for-linux/189280/1 "2010-05-27T22:55:25Z")

</div>

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.

- [io\_splice - zero-copy pipe I/O for Linux and Ruby](http://bogomips.org/ruby_io_splice/)
- removed\_email\_address@domain.invalid
- git://git.bogomips.org/ruby\_io\_splice.git

Changes:

io\_splice is now easier to use, as it can take IO/File objects in  
addition to raw file descriptors as arguments.

IO.vmsplice now always splices buffers in full, since it’s too difficult  
to use otherwise. Keep in mind that the usefulness of vmsplice is still  
questionable from Ruby and IO.writev (from the “io-extra” gem) is more  
flexible as it allows writing to non-pipe descriptors.

IO.splice and IO.tee are unchanged and may still splice partial buffers.

There are also some code cleanups and improved documentation.
