Release Name: 3.0.0
Notes:
io_splice 3.0.0 - kinder, gentler Linux zero-copy
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:
This release adds the IO.trysplice and IO.trytee interfaces
to avoid expensive EAGAIN exceptions for non-blocking I/O.
There is no IO.tryvmsplice method as we still haven't figured
out a good use for IO.vmsplice in Ruby, and non-blocking I/O
with iovecs is just painful! If you want more zero-copy fun
without needing mmap(2), check out the "sendfile" RubyGem and
IO.copy_stream (1.9). As of Linux 2.6.33+, sendfile(2) can copy
mmap-able files to +any+ descriptor, not just sockets.
Please email us at ruby.io.splice@librelist.com if you can think
of a good use for IO.vmsplice or IO.trysplice in Ruby.
Changes:
.document | 1 +
.gitignore | 2 +
.wrongdoc.yml | 5 +
GIT-VERSION-GEN | 2 +-
GNUmakefile | 200 ++---------------------------------------
README | 4 +-
Rakefile | 126 ++++----------------------
ext/io_splice/io_splice_ext.c | 174 ++++++++++++++++++++++++++++--------
io_splice.gemspec | 36 +++-----
lib/io/splice.rb | 195 +++++++++++++++++++---------------------
pkg.mk | 168 ++++++++++++++++++++++++++++++++++
test/test_io_splice.rb | 149 ++++++++++++++++++++----------
12 files changed, 547 insertions(+), 515 deletions(-)
commit 73b61c10c0085ee4a26a321375938bce16fb8a6d
Author: Eric Wong
Date: Tue Mar 1 09:29:57 2011 +0000
io_splice 3.0.0 - kinder, gentler Linux zero-copy
This release adds the IO.trysplice and IO.trytee interfaces
to avoid expensive EAGAIN exceptions for non-blocking I/O.
There is no IO.tryvmsplice method as we still haven't figured
out a good use for IO.vmsplice in Ruby, and non-blocking I/O
with iovecs is just painful! If you want more zero-copy fun
without needing mmap(2), check out the "sendfile" RubyGem and
IO.copy_stream (1.9). As of Linux 2.6.33+, sendfile(2) can copy
mmap-able files to +any+ descriptor, not just sockets.
Please email us at ruby.io.splice@librelist.com if you can think
of a good use for IO.vmsplice or IO.trysplice in Ruby.
commit 9230fba2a4231965687d2e590f8d6ad01a2fa3a8
Author: Eric Wong
Date: Mon Feb 28 01:24:01 2011 +0000
doc: more notes for IO.vmsplice
HALP!
commit 7652c110b2d635300a7e817b69ee4bef6a28d71d
Author: Eric Wong
Date: Mon Feb 28 01:08:44 2011 +0000
remove VERSION constant
Needless cruft and maintenance overhead.
commit 30250538e6c48b97a77114705e83fb619f362592
Author: Eric Wong
Date: Mon Feb 28 01:05:15 2011 +0000
doc: RDoc for new interfaces and changes
And yes, encourage them for non-blocking I/O users.
commit 38273a2a81db814eacd2257665eac2fe3ecd3b94
Author: Eric Wong
Date: Mon Feb 28 00:21:28 2011 +0000
IO.vmsplice flags argument defaults to zero
For consistency with all of our other methods.
commit 813c5300294046f9ae0f4bac8449a4734ddd7fd9
Author: Eric Wong
Date: Sun Feb 27 23:40:44 2011 +0000
add IO.trytee interface
This allows more-efficient use of non-blocking I/O with
tee(2) and will return :EAGAIN instead of generating an
expensive Errno::EAGAIN exception.
commit c32ddca888259c391e126154ff62fdcdb2e3759c
Author: Eric Wong
Date: Sat Feb 26 16:47:40 2011 -0800
trysplice implies SPLICE_F_NONBLOCK for flags
It makes more sense this way if non-blocking I/O is expected.
commit 4ba0bb32bb717d1f77c2f4f3cb41e646eb243a7f
Author: Eric Wong
Date: Sat Feb 26 16:44:17 2011 -0800
flags are optional for splice and trysplice
No point in requiring the flags argument if it's going to be
zero, so default them to zero if they're unset.
commit 24a2f6db438537ff81081a41b5ebf02cda2dec57
Author: Eric Wong
Date: Sat Feb 26 16:35:56 2011 -0800
shorten calls to rb_thread_blocking_region
Long lines bother me
commit 844ed3d36faf14813a2e6f2476920f63bcb3bc89
Author: Eric Wong
Date: Sat Feb 26 14:45:04 2011 -0800
avoid signed vs unsigned comparison
Caught when compiling with the CFLAGS of Ruby 1.9.3dev
commit b122f037c3af81b8e20deb36b9e0706fe8535668
Author: Eric Wong
Date: Sat Feb 26 14:43:08 2011 -0800
copy_stream: File.open encoding doesn't matter
No need to open in binary mode since no file data
goes through luserspace!
commit 5c9dc339b355546e68013be26aa54cc0e9978409
Author: Eric Wong
Date: Sat Feb 26 14:41:19 2011 -0800
test: fix broken assertions on Ruby 1.9.3dev
Oops :x
commit fd131dcbf7a9c098099c00790f504908bc2c94a4
Author: Eric Wong
Date: Sat Feb 26 14:40:48 2011 -0800
copy_stream uses IO.trysplice instead of IO.splice
Things should be slightly faster this way.
commit b9119424bdd41e417afae354329e9b6d298baff4
Author: Eric Wong
Date: Sat Feb 26 14:20:37 2011 -0800
test: remove unused_port function
It's wholly unnecessary when we don't do exec() for other
processes.
commit 62f706a496eba0bc581fb2c277fed2dc29f60eb0
Author: Eric Wong
Date: Sat Feb 26 14:17:25 2011 -0800
add IO.trysplice interface
This reduces the cost of EAGAIN and EOF since they
are not considered exceptional conditions.
commit 1dd7ade30687dfbe220315ab412c33e2edbfa14f
Author: Eric Wong
Date: Wed Dec 22 10:57:58 2010 -0800
io/splice: unindent
This seems to fix the issue we had with older RDoc, too
commit 31f77b2a01f69956b034d35a7f12038947b6bdbc
Author: Eric Wong
Date: Sat Feb 5 03:27:54 2011 -0800
test: cleanup unused_port function
Duh!
commit cba967458df157f3e4aa2dc885eb87013bece175
Author: Eric Wong
Date: Sat Feb 5 03:25:47 2011 -0800
clean up packaging and use pkg.mk
commit f62107bf4b5eb01dbc22b68e56b61db78c73336c
Author: Eric Wong
Date: Mon Dec 27 16:55:28 2010 +0000
doc: switch to wrongdoc
No more JavaScript!
commit 09cd762eeebc07dd7fd0eef6c3bea40a0f74b030
Author: Eric Wong
Date: Mon Dec 27 16:19:30 2010 +0000
GNUmakefile: sync examples for documentation publishing
The examples on our site were out-of-date.
commit 4df9ceb637abe416ac36608038e440e30bbb6a35
Author: Eric Wong
Date: Mon Aug 2 08:14:08 2010 +0000
GNUmakefile: update RAA on new releases
|