=== 2.1.0 / 2010-06-06 20:37 UTC This fixes the issue with our copy_stream where non-pipe descriptors with the O_NONBLOCK flag set were not handled correctly. Like IO.copy_stream in Ruby 1.9, our IO::Splice.copy_stream will _always_ block until IO is available (or raise if there are errors). IO::Splice.copy_stream now closes all file descriptors that were opened within the method, reducing pressure on the garbage collector. There are also new singleton convenience methods: * IO::Splice.full - blocks and splices the full amount * IO::Splice.partial - blocks until something is spliceable They are used internally to implement IO::Splice.copy_stream, but may also be useful to end users. Rcov shows 100% test coverage \o/ === 2.0.0 / 2010-06-05 08:48 UTC There is a new IO::Splice.copy_stream method which is similar to the IO.copy_stream method in 1.9 core, but uses splice() internally to avoid copies to userspace in situations where sendfile() is not possible. With Linux 2.6.35 (and header files to match), we will also export the F_GETPIPE_SZ and and F_SETPIPE_SZ constants so they can be used with fcntl() to resize pipe buffers. The documentation is also updated to reflect the returned usefulness of the IO::Splice::F_MOVE constant for FUSE filesystems under Linux 2.6.35. I've also relicensed to LGPLv2.1+ (from LGPLv3-only) to allow bundling with GPLv2-only applications (I'm currently the sole copyright holder). Signed-off-by: Eric Wong === 1.0.0 / 2010-05-27 20:43 UTC 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. There are also some code cleanups and improved documentation. === 0.1.0 / 2010-02-15 08:36 UTC initial release