From mboxrd@z Thu Jan 1 00:00:00 1970 From: Christopher Allan Webber Subject: Re: Hack the (init) system! Date: Fri, 25 Sep 2015 18:04:33 -0500 Message-ID: <87k2rertcf.fsf@dustycloud.org> References: <87oahjz05m.fsf@gnu.org> <874mjb0wvm.fsf@netris.org> <87a8t2wfod.fsf@gnu.org> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:40900) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Zfc5S-0003CY-0E for guix-devel@gnu.org; Fri, 25 Sep 2015 19:07:30 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Zfc5O-0000GO-02 for guix-devel@gnu.org; Fri, 25 Sep 2015 19:07:29 -0400 In-reply-to: <87a8t2wfod.fsf@gnu.org> 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: Ludovic =?utf-8?Q?Court=C3=A8s?= Cc: guix-devel@gnu.org Ludovic Court=C3=A8s writes: >> So, I think we have two choices: >> >> 1. Avoid threads in dmd, i.e. either refrain from adding this REPL >> server feature, or re-implement it in a way that avoids threads. >> >> 2. Avoid 'primitive-fork' in dmd, which means reimplementing >> 'fork+exec-command' in C; reimplementing the code where we currentl= y >> use 'primitive-fork' within various guix service definitions; and >> documenting that users should never use 'primitive-fork' in their >> services. If we choose this route, we should probably disable >> 'primitive-fork' somehow, or at least have it issue a stern warning= . >> >> I don't think that we should add a set of features to dmd that will ma= ke >> it fundamentally unreliable in a way that cannot be fixed. >> >> What do you think? > > Agreed, of course. I think #1 is the way to go. > > Thanks, > Ludo=E2=80=99. I wonder if it's about time that Guile get something along the lines of a well-supported, general event loop system? There's value in having a mainline way to do it; Python has AsyncIO which is gaining a lot of traction... the main advantage being that having an officially supported cooperative event loop (and as a bonus, an official way of working with it nicely with coroutines) permits writing a lot of code in a non-blocking way that's compatible... you can use this non-blocking database wrapper with that non-blocking websocket implementation, for example. This is pretty off-topic from Guix though I guess... maybe it's a conversation for guile-user, or guile-devel. But I'm curious if others have been thinking along these lines. - Chris