From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Andy Wingo Newsgroups: gmane.lisp.guile.devel Subject: vm status update Date: Fri, 06 Mar 2009 20:52:42 +0100 Message-ID: NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Trace: ger.gmane.org 1236369238 21464 80.91.229.12 (6 Mar 2009 19:53:58 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Fri, 6 Mar 2009 19:53:58 +0000 (UTC) To: guile-devel Original-X-From: guile-devel-bounces+guile-devel=m.gmane.org@gnu.org Fri Mar 06 20:55:09 2009 Return-path: Envelope-to: guile-devel@m.gmane.org Original-Received: from lists.gnu.org ([199.232.76.165]) by lo.gmane.org with esmtp (Exim 4.50) id 1Lfg8S-0004xY-Fj for guile-devel@m.gmane.org; Fri, 06 Mar 2009 20:55:08 +0100 Original-Received: from localhost ([127.0.0.1]:54279 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Lfg76-0000ww-U9 for guile-devel@m.gmane.org; Fri, 06 Mar 2009 14:53:44 -0500 Original-Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1Lfg73-0000wL-Ot for guile-devel@gnu.org; Fri, 06 Mar 2009 14:53:41 -0500 Original-Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1Lfg72-0000vx-Uj for guile-devel@gnu.org; Fri, 06 Mar 2009 14:53:41 -0500 Original-Received: from [199.232.76.173] (port=35245 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Lfg72-0000vu-Sf for guile-devel@gnu.org; Fri, 06 Mar 2009 14:53:40 -0500 Original-Received: from a-sasl-fastnet.sasl.smtp.pobox.com ([207.106.133.19]:45802 helo=sasl.smtp.pobox.com) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1Lfg72-0003PD-GE for guile-devel@gnu.org; Fri, 06 Mar 2009 14:53:40 -0500 Original-Received: from localhost.localdomain (unknown [127.0.0.1]) by a-sasl-fastnet.sasl.smtp.pobox.com (Postfix) with ESMTP id A25F09F436 for ; Fri, 6 Mar 2009 14:53:37 -0500 (EST) Original-Received: from unquote (unknown [81.39.168.24]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by a-sasl-fastnet.sasl.smtp.pobox.com (Postfix) with ESMTPSA id EA3719F431 for ; Fri, 6 Mar 2009 14:53:36 -0500 (EST) User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/23.0.91 (gnu/linux) X-Pobox-Relay-ID: 7BCAB7D0-0A88-11DE-B0C4-CFA5EBB1AA3C-02397024!a-sasl-fastnet.pobox.com X-detected-operating-system: by monty-python.gnu.org: Solaris 10 (beta) X-BeenThere: guile-devel@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "Developers list for Guile, the GNU extensibility library" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Original-Sender: guile-devel-bounces+guile-devel=m.gmane.org@gnu.org Errors-To: guile-devel-bounces+guile-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.lisp.guile.devel:8237 Archived-At: Gentlemen, ladies: so long the hack, and so short the time. But the Creator in her wisdom or absence has given us this moment in which to ponder the novelties of the VM branch. Since we last rapped together, let's see: * One Sunday, I decided that we couldn't honestly claim to have a multilingual environment without actually implementing other languages. So I wrote a JavaScript tokenizer, a parser, a compiler to GHIL, and a runtime -- a week later, it was working! I wrote more about it here: http://wingolog.org/archives/2009/02/22/ecmascript-for-guile * Ludovic fixed loading of large unsigned integers, and added a -o option to the compiler, and coalesced the Makefiles in to just one in module/. My -j8 machine at work compiles much faster now ;) * I've started to think about optimization, and what's clear is that GHIL as it stands is too much of a pain in the ass -- you can't turn a ((lambda ...) ...) into a (let ... ...) without like 30 lines of code. I decided that having alpha-renamed variables would eliminate the need for , and make GHIL actually readable and writable without loss of information. So I started looking at separating expansion + renaming from compilation, as the Scheme lords decree, but I'm not quite there yet. I have an expander, but we really want source information -- so I just fixed syncase expansion to give us source information corresponding to its output variables, but haven't yet figured how to recover the source lexical names. But I'll get it. Having now looked much more at syncase, I think it's pretty great. Also given that it finally loads quickly, and gives us source information, I want to include it at the heart of Guile -- early on in boot-9.scm. It goes against lazy memoization, but given that expansion is fast (and linear), that shouldn't be a big problem. We'll see how that goes. Syncase + GHIL without also gives us the opportunity to simplify GHIL itself, removing e.g. quasiquote in favor of syncase's expansion. That can let us simplify the evaluator too. The interpreter could even become threadsafe, eventually. Anyway, that's where I am. Bug-wise we still have a bug in backtraces, which I need to pin down at some point, and update docs -- but generally speaking we're mergeable. What do people think, should I be working on master at some point? Cheers, Andy -- http://wingolog.org/