From mboxrd@z Thu Jan 1 00:00:00 1970 Path: main.gmane.org!not-for-mail From: Tom Lord Newsgroups: gmane.lisp.guile.devel Subject: Re: Threads and asyncs Date: Mon, 2 Sep 2002 14:24:50 -0700 (PDT) Sender: guile-devel-admin@gnu.org Message-ID: <200209022124.OAA07625@morrowfield.regexps.com> References: <87it1oglmq.fsf@zagadka.ping.de> NNTP-Posting-Host: localhost.gmane.org X-Trace: main.gmane.org 1031001096 22358 127.0.0.1 (2 Sep 2002 21:11:36 GMT) X-Complaints-To: usenet@main.gmane.org NNTP-Posting-Date: Mon, 2 Sep 2002 21:11:36 +0000 (UTC) Cc: guile-devel@gnu.org, guile-user@gnu.org Return-path: Original-Received: from monty-python.gnu.org ([199.232.76.173]) by main.gmane.org with esmtp (Exim 3.35 #1 (Debian)) id 17lyTt-0005oE-00 for ; Mon, 02 Sep 2002 23:11:33 +0200 Original-Received: from localhost ([127.0.0.1] helo=monty-python.gnu.org) by monty-python.gnu.org with esmtp (Exim 4.10) id 17lyVO-0001rk-00; Mon, 02 Sep 2002 17:13:06 -0400 Original-Received: from list by monty-python.gnu.org with tmda-scanned (Exim 4.10) id 17lyVE-0001q4-00 for guile-devel@gnu.org; Mon, 02 Sep 2002 17:12:56 -0400 Original-Received: from mail by monty-python.gnu.org with spam-scanned (Exim 4.10) id 17lyVC-0001pq-00 for guile-devel@gnu.org; Mon, 02 Sep 2002 17:12:55 -0400 Original-Received: from 1cust11.tnt13.sfo8.da.uu.net ([63.10.241.11] helo=morrowfield.regexps.com) by monty-python.gnu.org with esmtp (Exim 4.10) id 17lyVB-0001pT-00; Mon, 02 Sep 2002 17:12:54 -0400 Original-Received: (from lord@localhost) by morrowfield.regexps.com (8.9.1/8.9.1) id OAA07625; Mon, 2 Sep 2002 14:24:50 -0700 (PDT) (envelope-from lord@morrowfield.regexps.com) Original-To: mvo@zagadka.ping.de In-Reply-To: <87it1oglmq.fsf@zagadka.ping.de> (message from Marius Vollmer on 02 Sep 2002 22:52:13 +0200) Errors-To: guile-devel-admin@gnu.org X-BeenThere: guile-devel@gnu.org X-Mailman-Version: 2.0.11 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Developers list for Guile, the GNU extensibility library List-Unsubscribe: , List-Archive: Xref: main.gmane.org gmane.lisp.guile.devel:1224 X-Report-Spam: http://spam.gmane.org/gmane.lisp.guile.devel:1224 > I would like to specify explicitely that marking a system-async will > run its thunk in the thread that did the marking. Why can't that be layered? In other words, start with thread-independent asyncs (which have the virtue of simplicity and speed) and then build thread-specific on top of that (at additional cost). Is there no use for thread-independent system-asyncs? There is a definate design tension trying to model stack-based, kernel-driven execution in Scheme. I've often considered layering call/cc for that reason -- making it strictly optional, perhaps with a modest performance penalty, implementing it via a transformation to continuation passing style. One difficulty is primitives that call apply or eval: you can do away with them or give them their own threads or mirror them in tail-recursive scheme (somehow). There are other alternatives, such as radical changes to the execution model, so that C stacks aren't used by Scheme at all. In my personal Scheme design, this is the route I've (more or less) decided on. When worked out, and made to work cleanly with primitives written in "classic C style" (i.e., freely calling eval or apply), I think it winds up converging on more-or-less the same solution as making call/cc work by transformation to CPS. Anyway, where I to hack Guile, I'd look into building up the abstractions to a point where eval is potentially a stackless graph machine, instead of a hybrid stack/graph machine -- but preserving optimizations such as SCM's copying-gc for environment frames. -t _______________________________________________ Guile-devel mailing list Guile-devel@gnu.org http://mail.gnu.org/mailman/listinfo/guile-devel