From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andy Wingo Subject: Re: Hack the (init) system! Date: Mon, 28 Sep 2015 09:13:03 +0000 Message-ID: <877fnaq540.fsf@igalia.com> References: <87oahjz05m.fsf@gnu.org> <874mjb0wvm.fsf@netris.org> <87a8t2wfod.fsf@gnu.org> <87k2rertcf.fsf@dustycloud.org> Mime-Version: 1.0 Content-Type: text/plain Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:46599) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZgUVH-0006Jk-TO for guix-devel@gnu.org; Mon, 28 Sep 2015 05:13:52 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ZgUVD-0003wv-0W for guix-devel@gnu.org; Mon, 28 Sep 2015 05:13:47 -0400 In-Reply-To: <87k2rertcf.fsf@dustycloud.org> (Christopher Allan Webber's message of "Fri, 25 Sep 2015 18:04:33 -0500") List-Id: "Development of GNU Guix and the GNU System distribution." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-devel-bounces+gcggd-guix-devel=m.gmane.org@gnu.org Sender: guix-devel-bounces+gcggd-guix-devel=m.gmane.org@gnu.org To: Christopher Allan Webber Cc: guix-devel@gnu.org On Fri 25 Sep 2015 23:04, Christopher Allan Webber writes: > I wonder if it's about time that Guile get something along the lines of > a well-supported, general event loop system? I think Guile needs user-space threads, implemented on top of delimited continuations. With threads, you don't need to invert control in your program. Racket takes this approach as well. To get there we need to expose port buffers to Scheme, mark all file descriptors as nonblocking, and cause EWOULDBLOCK to suspend the current green thread. I had a prototype working a while back on the wip-ethreads branch, but you don't want to introduce a separate port type -- really you want to have this work on all ports, so that's the hacking that's needed. I'll try to get out a 2.2 prerelease in the next week or so -- everything is up to date now, finally, I just have a pending patch to make the stack grow down instead of up so we can use native CALL instructions in some future. Works in progress... A