From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Andy Wingo Newsgroups: gmane.emacs.devel Subject: Re: guile and emacs and elisp, oh my! Date: Thu, 22 Apr 2010 11:35:13 +0200 Message-ID: References: NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Trace: dough.gmane.org 1271929533 13327 80.91.229.12 (22 Apr 2010 09:45:33 GMT) X-Complaints-To: usenet@dough.gmane.org NNTP-Posting-Date: Thu, 22 Apr 2010 09:45:33 +0000 (UTC) Cc: emacs-devel@gnu.org To: Tom Tromey Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Thu Apr 22 11:45:21 2010 connect(): No such file or directory Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([199.232.76.165]) by lo.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1O4syF-0004jZ-PI for ged-emacs-devel@m.gmane.org; Thu, 22 Apr 2010 11:45:20 +0200 Original-Received: from localhost ([127.0.0.1]:45504 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1O4syE-0005Yb-Bq for ged-emacs-devel@m.gmane.org; Thu, 22 Apr 2010 05:45:18 -0400 Original-Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1O4sv7-0004fV-J4 for emacs-devel@gnu.org; Thu, 22 Apr 2010 05:42:05 -0400 Original-Received: from [140.186.70.92] (port=58818 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1O4sv4-0004fG-Kb for emacs-devel@gnu.org; Thu, 22 Apr 2010 05:42:04 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.69) (envelope-from ) id 1O4sv2-0006Vl-9k for emacs-devel@gnu.org; Thu, 22 Apr 2010 05:42:02 -0400 Original-Received: from a-pb-sasl-quonix.pobox.com ([208.72.237.25]:56281 helo=sasl.smtp.pobox.com) by eggs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1O4sv2-0006R7-7L for emacs-devel@gnu.org; Thu, 22 Apr 2010 05:42:00 -0400 Original-Received: from sasl.smtp.pobox.com (unknown [127.0.0.1]) by a-pb-sasl-quonix.pobox.com (Postfix) with ESMTP id AEAD6AC8B5; Thu, 22 Apr 2010 05:41:40 -0400 (EDT) DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=pobox.com; h=from:to:cc :subject:references:date:in-reply-to:message-id:mime-version :content-type:content-transfer-encoding; s=sasl; bh=PJySD+4R3ElX KCDeza3t/pnNL/0=; b=daOGCiIiCMWs0C1zBPBH+COlRjkRJayb/GGUgQ7H9QHw tyE2BFonaMS5ihZC+IqZAB8YdeIl7sPXILz6W4z7tzQAUip/6PhOx6XKe8ngJBLA Aq+04Yq98gb8c2DglR0RX4EPyX1GSNeysZMP3QO4ZUsXCcNXlcIA1nfymMHCxN0= DomainKey-Signature: a=rsa-sha1; c=nofws; d=pobox.com; h=from:to:cc :subject:references:date:in-reply-to:message-id:mime-version :content-type:content-transfer-encoding; q=dns; s=sasl; b=mZwAGG vslZEREVfw4/1PDNVKm4IwdcRrkXn2X0C3KeUPXo6AIHM0Th/M77LC/nZPLJWZg4 HZM3aCfoPhjJhmwOUXotpEZKnHi3PrqYU+1a+yMIgNc2vcHmhHqSNsDmQ9Qy9d57 rILVC8acEF5NQR8sKaR2Z/a8rkOVVzQO8KD0Y= Original-Received: from a-pb-sasl-quonix. (unknown [127.0.0.1]) by a-pb-sasl-quonix.pobox.com (Postfix) with ESMTP id 94F4CAC8B4; Thu, 22 Apr 2010 05:41:39 -0400 (EDT) Original-Received: from unquote (unknown [83.202.100.241]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by a-pb-sasl-quonix.pobox.com (Postfix) with ESMTPSA id DB985AC8B1; Thu, 22 Apr 2010 05:41:37 -0400 (EDT) In-Reply-To: (Tom Tromey's message of "Tue, 20 Apr 2010 16:36:34 -0600") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/23.0.92 (gnu/linux) X-Pobox-Relay-ID: 404EB166-4DF3-11DF-BE1C-D033EE7EF46B-02397024!a-pb-sasl-quonix.pobox.com X-detected-operating-system: by eggs.gnu.org: Solaris 10 (beta) X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.devel:124025 Archived-At: Hi Tom, On Wed 21 Apr 2010 00:36, Tom Tromey writes: > Andy> My name is Andy, and together with Ludovic Court=C3=A8s I co-mainta= in Guile. > > Hi. Thanks for writing this. Thank you for writing this thoughtful reply! > People have often discussed the desirability of one runtime to rule > them all. This has even been attempted -- Gnome floated a proposal, > there is Parrot, even the JVM and .NET are getting in on it. Heh, perhaps we have oversold Guile a bit. It's true that Guile isn't particularly well suited for implementing Haskell right now; nor perhaps will it ever be. But Elisp has a special place in Guile. We have thought a lot about how to implement it well, and how to integrate it well with Scheme. We have great support for threadsafe dynamic binding, good nil/null interoperability, and if something needs changing in Guile to support Elisp better, we'll do it. So while it's true that we're currently getting a number of proposals to implement other languages, and some code, Guile's first language will still be Scheme, and the "other language" which it will best support will be Elisp. > A single language makes both reuse and debugging simpler. Multiple > languages equals chaos. You're certainly right that support for multiple languages complicates reuse and debugging. I'm not sure I'd go so far as "chaos", though; we'll see once we have a more real proposal. Some other points: > * The numeric tower. Ok, this one is interesting! But switching to > Guile doesn't actually push this into the one place where it is > needed: buffer sizes. In fact, this is a sort of general problem with > the rebase -- from what I understand, it doesn't deeply touch the bits > that matter. Heh, I think that's the essence of a refactor -- small, correctness-preserving patches that eventually make shallow the deeper changes. With an Emacs-on-Guile, one could make the buffer size a SCM value, which would normally be a fixnum but could be a bignum. This approach has advantages and disadvantages, and they would be considered as part of that change, not as part of an Emacs-on-Guile change. > * Continuations. If you thought threads were going to wreak havoc, wait > until people call/cc from inside redisplay. We have continuation barriers. Most likely we would, by default, prohibit nonlocal reentry to Elisp functions. > My experience with Emacs as a user and occasional developer is that > elisp is fast enough for most tasks you'd actually want to write in > elisp. Sure, maybe parsing could use some low-level love (something > better than parse-partial-sexp), or maybe regexps could use a speedup, > but even those are marginal. Even the GC doesn't seem so bad > nowadays. I would humbly submit that you have, over time, restricted the range of programs that you would write in Elisp, to that set of programs that Emacs' implementation of Elisp can deal with. There are many programs that you just can't write in Elisp, linguistic expressiveness aside: the implementation just isn't fast enough. It shouldn't be that hard to thread my inbox ;-) That said, I think that your concerns about what a Guile-implemented Elisp would do to Emacs are important ones, and that our implementation should take them into account. I still think that Guile and Emacs would be a beautiful future, so we'll keep working on it; but our work should not stall your own. Lexbind, native-threads, and emacs-on-guile do not conflict in any important way, IMO. Happy hacking, Andy --=20 http://wingolog.org/