From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on dcvr.yhbt.net X-Spam-Level: X-Spam-ASN: AS6939 64.71.128.0/18 X-Spam-Status: No, score=-1.9 required=3.0 tests=AWL,BAYES_00, MSGID_FROM_MTA_HEADER shortcircuit=no autolearn=unavailable version=3.3.2 Path: news.gmane.org!not-for-mail From: Eric Wong Newsgroups: gmane.comp.lang.ruby.io-splice.general Subject: [ANN] io_splice 1.0.0 - zero-copy pipe I/O for Linux Date: Thu, 27 May 2010 20:55:35 +0000 Message-ID: <20100527205535.GB13883@dcvr.yhbt.net> References: <20100527205535.GB13883@dcvr.yhbt.net> NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit X-Trace: dough.gmane.org 1274993763 12481 80.91.229.12 (27 May 2010 20:56:03 GMT) X-Complaints-To: usenet@dough.gmane.org NNTP-Posting-Date: Thu, 27 May 2010 20:56:03 +0000 (UTC) To: ruby.io.splice@librelist.com Original-X-From: ruby.io.splice@librelist.com Thu May 27 22:56:02 2010 Return-path: Envelope-to: gclrig-ruby.io.splice@m.gmane.org In-Reply-To: <20100527205535.GB13883@dcvr.yhbt.net> List-Archive: List-Help: List-Id: List-Post: List-Subscribe: List-Unsubscribe: Precedence: list Original-Sender: ruby.io.splice@librelist.com Xref: news.gmane.org gmane.comp.lang.ruby.io-splice.general:4 Archived-At: Received: from zedshaw.xen.prgmr.com ([64.71.167.205]) by lo.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1OHk7U-0002GL-If for gclrig-ruby.io.splice@m.gmane.org; Thu, 27 May 2010 22:56:00 +0200 Received: from zedshaw.xen.prgmr.com (localhost [IPv6:::1]) by zedshaw.xen.prgmr.com (Postfix) with ESMTP id DF98A21CBFF for ; Thu, 27 May 2010 21:03:36 +0000 (UTC) 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: 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. -- Eric Wong