Release Name: 2.0.0
Notes:
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://git.bogomips.org/ruby_io_splice.git
Changes:
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
Changes:
GIT-VERSION-GEN | 2 +-
GNUmakefile | 9 +++--
LICENSE | 4 +-
Rakefile | 4 +-
examples/splice-cp.rb | 26 +--------------
examples/splice-tee.rb | 8 +---
ext/io_splice/extconf.rb | 2 +
ext/io_splice/io_splice_ext.c | 37 ++++++++++++++++++---
io_splice.gemspec | 2 +-
lib/io/splice.rb | 73 +++++++++++++++++++++++++++++++++++++++--
test/test_io_splice.rb | 59 +++++++++++++++++++++++++++++++++
11 files changed, 178 insertions(+), 48 deletions(-)
commit 2b95ba46ee144eb3a22054ae98a6416996136469
Author: Eric Wong
Date: Sat Jun 5 08:36:16 2010 +0000
Ruby io_splice 2.0.0
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
commit 901e6061348490b3ea5d1e08be5b08c9601ad310
Author: Eric Wong
Date: Sat Jun 5 08:34:17 2010 +0000
update PIPE_CAPA documentation for Linux 2.6.35
commit 70efa04bf48a3187e60d0f459b6a4202fb0885b2
Author: Eric Wong
Date: Sat Jun 5 08:22:19 2010 +0000
relicense to LGPLv2.1+ (from LGPLv3 only)
This allows GPLv2-only programs to bundle us.
Signed-off-by: Eric Wong
commit b755f909f88c3954d421437e54eb465be74df652
Author: Eric Wong
Date: Sat Jun 5 06:27:24 2010 +0000
GNUmakefile: make our unit tests PHONY
commit 70c9bdf4ef12212a99a50ffb1284287920953a06
Author: Eric Wong
Date: Sat Jun 5 06:19:17 2010 +0000
examples/splice-cp: simplify with IO::Splice.copy_stream
commit fc64ffe36d831c1a29a603a1a1ad50b7b68d55e8
Author: Eric Wong
Date: Sat Jun 5 06:02:30 2010 +0000
io_splice_ext: require errno.h
It seems needed for Rubinius
commit e8b06376c21a74e3fc2e6e9ace4eda8b2359ab62
Author: Eric Wong
Date: Sat Jun 5 05:42:54 2010 +0000
copy_stream takes source offset like the non-splice version
This should make it a drop-in replacement for IO.copy_stream,
except it won't deal with things like StringIO.
commit 5e222a0cedd7146bdc2b0f07d5c36ce7f38b740e
Author: Eric Wong
Date: Thu Jun 3 07:00:43 2010 +0000
allow IO.vmsplice to take a single string
This could be useful if a Ruby implementation eventually gives
us page-aligned strings that we can IO::Splice::F_GIFT
commit 01ced6c651db7694ecb73fbaa145d319f0b1e15d
Author: Eric Wong
Date: Tue Jun 1 16:59:57 2010 -0700
copy_stream: always try to move pages instead of copying
For most case in the forseeable future it's a no-op, but
since FUSE will support it in 2.6.35, some folks will be
able to use it again.
commit bb6791da7cf37e326846edc44a7c32b79021f9da
Author: Eric Wong
Date: Tue Jun 1 16:54:24 2010 -0700
preliminary support for F_GETPIPE_SZ and F_SETPIPE_SZ
One day soon (2.6.35), we'll be able to resize pipes. We may
support this independently of the C library since that can take
a few months/years to catch up, taking distro release cycles
into account, too.
commit e4bdec2a41932a6ebd444d003f21cc025223cfdd
Author: Eric Wong
Date: Tue Jun 1 16:46:18 2010 -0700
update IO::Splice::F_MOVE documentation for 2.6.35
FUSE devices will finally gain splice() support and also
support SPLICE_F_MOVE in 2.6.35. SPLICE_F_MOVE is still
ignored for non-FUSE devices.
commit 5b34f7048cae6161c5180f57074272d558373133
Author: Eric Wong
Date: Tue Jun 1 16:08:46 2010 -0700
simplify examples for 1.0.0 API
commit ecb5f27598a6f53b6e02817bb0c1644fc4c75f09
Author: Eric Wong
Date: Tue Jun 1 16:01:58 2010 -0700
implement IO::Splice.copy_stream
This is like IO.copy_stream in Ruby 1.9, but uses
the splice() system call internally.
commit 09ae46671a8829dbc2fba3ec8f2de9127e3c3315
Author: Eric Wong
Date: Fri Mar 12 16:21:01 2010 -0800
fix indentation bug
|