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: removing MRI 1.8 support Date: Thu, 12 May 2011 17:33:50 -0700 Message-ID: <20110513003350.GA29438@dcvr.yhbt.net> References: <20110513003350.GA29438@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 1305246865 1984 80.91.229.12 (13 May 2011 00:34:25 GMT) X-Complaints-To: usenet@dough.gmane.org NNTP-Posting-Date: Fri, 13 May 2011 00:34:25 +0000 (UTC) To: ruby.io.splice@librelist.org Original-X-From: ruby.io.splice@librelist.org Fri May 13 02:34:21 2011 Return-path: Envelope-to: gclrig-ruby.io.splice@m.gmane.org In-Reply-To: <20110513003350.GA29438@dcvr.yhbt.net> List-Archive: List-Help: List-Id: List-Post: List-Subscribe: List-Unsubscribe: Precedence: list Original-Sender: ruby.io.splice@librelist.org Xref: news.gmane.org gmane.comp.lang.ruby.io-splice.general:29 Archived-At: Received: from zedshaw.xen.prgmr.com ([64.71.167.205]) by lo.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1QKgKe-0003Jr-QN for gclrig-ruby.io.splice@m.gmane.org; Fri, 13 May 2011 02:34:17 +0200 Received: from zedshaw.xen.prgmr.com (localhost [IPv6:::1]) by zedshaw.xen.prgmr.com (Postfix) with ESMTP id B4CED21C92A for ; Fri, 13 May 2011 00:35:31 +0000 (UTC) Anybody really care for it? I think it's too painful to support completely due to the way SPLICE_F_NONBLOCK is handled for pipes and how the file O_NONBLOCK flag of the non-pipe is relied on. splice() ignores O_NONBLOCK on the pipe, instead relying on SPLICE_F_NONBLOCK being passed to it. However, SPLICE_F_NONBLOCK only affects pipes, so if you splice a pipe to a socket, you need O_NONBLOCK on the socket. Since MRI 1.8 uses non-blocking I/O and select() to schedule threads, this is painful to deal with for users that may want to see :EAGAIN or Errno::EAGAIN in some cases and not others. Hopefully the above explaination is halfway coherent, I really don't care enough about MRI 1.8 to do a better explanation :< It may incidentally work in some/most cases, but 1.8 really isn't worth my effort to maintain... -- Eric Wong