From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on dcvr.yhbt.net X-Spam-Level: X-Spam-ASN: AS4713 221.184.0.0/13 X-Spam-Status: No, score=-2.9 required=3.0 tests=AWL,BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,RCVD_IN_DNSWL_MED,SPF_PASS,T_RP_MATCHES_RCVD shortcircuit=no autolearn=no autolearn_force=no version=3.4.0 Received: from neon.ruby-lang.org (neon.ruby-lang.org [221.186.184.75]) by dcvr.yhbt.net (Postfix) with ESMTP id 224821F404 for ; Mon, 5 Feb 2018 21:42:48 +0000 (UTC) Received: from neon.ruby-lang.org (localhost [IPv6:::1]) by neon.ruby-lang.org (Postfix) with ESMTP id 2C10D120A35; Tue, 6 Feb 2018 06:42:42 +0900 (JST) Received: from dcvr.yhbt.net (dcvr.yhbt.net [64.71.152.64]) by neon.ruby-lang.org (Postfix) with ESMTPS id 2561A120A31 for ; Tue, 6 Feb 2018 06:42:22 +0900 (JST) Received: from localhost (dcvr.yhbt.net [127.0.0.1]) by dcvr.yhbt.net (Postfix) with ESMTP id EB10F1F404; Mon, 5 Feb 2018 21:42:19 +0000 (UTC) Date: Mon, 5 Feb 2018 21:42:19 +0000 From: Eric Wong To: ruby-core@ruby-lang.org Message-ID: <20180205214219.GA13747@starla> References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-ML-Name: ruby-core X-Mail-Count: 85417 Subject: [ruby-core:85417] Re: [Ruby trunk Feature#13618] [PATCH] auto fiber schedule for rb_wait_for_single_fd and rb_waitpid X-BeenThere: ruby-core@ruby-lang.org X-Mailman-Version: 2.1.15 Precedence: list Reply-To: Ruby developers List-Id: Ruby developers List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: ruby-core-bounces@ruby-lang.org Sender: "ruby-core" jjyruby@gmail.com wrote: > Excited to see this awesome feature! I'm implemented > fiber-auto-schedule at ruby > userland([light](https://github.com/socketry/lightio)) few > month ago(using monkey patch). Due to ruby complexity IO API > (like: `getc`, `getbyte`, `put,c`, `putbyte`), it's hard to > implement these methods without C, the built-in `Threadlet` or > `Thread::Green` is all I want as a ruby user. (bad news for me > is my library have no meaning to exists). Thank you for your response. I agree a lot of the current IO stuff is difficult or costly to implement outside of C. I hope some dependencies on C can eventually be reduced; but stuff like supporting writev in IO#write_nonblock remind me some things are perhaps best done in C. Anyways lightio can be counted as another reason to implement this feature natively in core (along with previous efforts dating back to Neverblock), so perhaps lightio already served a great purpose :) > Two opinions: > The name `Threadlet` or `Thread::Green` both is easy to > understand and to guess it behaviour, so as a application > level user I think both is fine. I think the `Mutex`, > `ConditonVariable` needed to be `Thread::Green` aware, cause > if I write a thread-safe library using mutex, it's not make > sense if it can't work under `Thread::Green`. Yes, I am strongly leaning towards making mutex, cv and queues green-thread aware and I'm working on improving time representations in core to that end: https://bugs.ruby-lang.org/issues/14431 https://bugs.ruby-lang.org/issues/14452