From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Christopher Allan Webber Newsgroups: gmane.emacs.devel Subject: Re: Guile emacs thread (again) Date: Thu, 18 Sep 2014 20:15:44 -0500 Message-ID: <87bnqc769l.fsf@earlgrey.lan> References: <87wq97i78i.fsf@earlgrey.lan> <87bnqdnmlq.fsf@panthera.terpri.org> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: text/plain X-Trace: ger.gmane.org 1411089839 10091 80.91.229.3 (19 Sep 2014 01:23:59 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Fri, 19 Sep 2014 01:23:59 +0000 (UTC) Cc: emacs-devel@gnu.org To: Robin Templeton Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Fri Sep 19 03:23:54 2014 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1XUmvQ-0005rV-Gt for ged-emacs-devel@m.gmane.org; Fri, 19 Sep 2014 03:23:53 +0200 Original-Received: from localhost ([::1]:55275 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XUmvP-0000Wg-DD for ged-emacs-devel@m.gmane.org; Thu, 18 Sep 2014 21:23:51 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:58765) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XUmv4-0000Qz-Tx for emacs-devel@gnu.org; Thu, 18 Sep 2014 21:23:35 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1XUmv0-0000Lx-Vl for emacs-devel@gnu.org; Thu, 18 Sep 2014 21:23:30 -0400 Original-Received: from dustycloud.org ([50.116.34.160]:50390) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XUmv0-0000Ii-R1 for emacs-devel@gnu.org; Thu, 18 Sep 2014 21:23:26 -0400 Original-Received: from earlgrey.lan (localhost [127.0.0.1]) by dustycloud.org (Postfix) with ESMTPS id A1F56265D7; Thu, 18 Sep 2014 21:23:19 -0400 (EDT) In-reply-to: <87bnqdnmlq.fsf@panthera.terpri.org> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 50.116.34.160 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.devel:174529 Archived-At: Robin Templeton writes: > Christopher Allan Webber writes: > >> Hello! It's been a while since the topic has come up on this list, but >> many of us are interested in it, and maybe some developers don't know, >> and I hadn't seen any conversations on the list despite recent progress. >> >> Anyway, it seems that BT Templeton's emacs on guile project this summer >> has gone fairly well, and it looks like almost everything runs. See: >> http://www.emacswiki.org/emacs/GuileEmacs >> >> I remember reading Andy Wingo's email about this a few years ago, >> "guile and emacs and elisp, oh my!": >> https://lists.gnu.org/archive/html/emacs-devel/2010-04/msg00665.html >> >> I found it very inspiring. It seems those things are fairly close. >> >> So this email is partly a: >> - What now? What's the chance of work towards guilemacs moving over to >> an official emacs git branch, and that port happening, anytime soon? >> - Is anyone running it? How's it going for you? >> >> (I'm mid-compile of the guile wip branch right now...!) >> - Chris > > First, I'd like to clarify some things about Guile-Emacs for those just > tuning in. The goal of the project is to create a better implementation > of Elisp than Emacs provides -- providing full compatibility with > existing Elisp packages -- and to use that as Emacs's Lisp > implementation. That implementation is Guile-Elisp, a compiler targeting > the Guile VM, and Guile-Emacs is the variant of Emacs based on this > compiler. > > What will this mean for Emacs? Better performance and new language > features. Guile provides a fast virtual machine and a sophisticated > compiler infrastructure, and the Guile VM outperforms the Elisp bytecode > interpreter on a variety of benchmarks. Guile natively provides many > features from Scheme and Common Lisp not present in Elisp, including a > full numeric tower, structure types, CLOS-based object orientation, a > foreign function interface, delimited continuations, a module system, > hygienic macros, multiple values, and threads. > > It will not mean that Elisp programs will need to be rewritten in > Scheme, or even that Emacs will necessarily support extensions written > in Scheme (much less JavaScript!). Interaction with other languages is a > possibility, but the exact relationship between Elisp and other > languages will be up to the Emacs maintainers and community. Elisp is > here to stay; Guile-Emacs will not remove Elisp but will instead enable > and accelerate its evolution. > > The fifth Guile-Emacs Summer of Code project has concluded successfully. > Thanks to Andy Wingo for supervising my work, and to Google for funding > the project. This summer is when everything really came together. The > project previously had two independent components developed in parallel: > Guile-Elisp and Guile-Emacs. Guile-Emacs used libguile for garbage > collection and object representation, but retained the original > interpreter and bytecode interpreter and did not, initially, use the > compiler at all. The two components have been successfully united. Emacs > now compiles all Elisp code using Guile-Elisp, and all programs are > executed on the Guile VM. The old interpreter and bytecode interpreter > have been excised entirely. Guile-Emacs loads, compiles and executes the > programs included in Emacs by default, plus Gnus, Org-Mode, and more. > > Additionally, Guile-Emacs was rebased onto a recent development version > of Emacs. Guile-Elisp was ported to guile master, which will become > Guile 2.2 and includes a new and faster virtual machine and upgraded > compiler tower. Other additions include compiler macros a la Common Lisp > used for inlining calls to Guile primitives, a reasonably complete FFI, > and Scheme Interaction Mode. The build system has been updated so that > Guile-Emacs can build itself cleanly from a fresh git checkout, with no > assistance from an existing Emacs installation and no undocumented > command line jiggery-pokery. Now the build procedure is "./configure && > make". > > Furthermore, I made a number of modifications to low-level support code > for Guile compatibility. The TL;DR on this is that the language changes > introduced in Guile-Elisp shouldn't matter much for normal programs, but > do require adjustment to low-level code, including debuggers, > macroexpanders and code-walkers. I'll write up a summary of the > differences separately, but the intent is that Guile-Emacs should be no > more disruptive than the addition of lexical binding from an Elisp > programmer's perspective. > > For more information on Guile-Emacs, please see the Wiki page at > , and keep an eye on > for future updates. > > Happy hacking, > Robin Hey Robin, thanks for this really great email. I was excited for guilemacs before, but I'm even more excited now. :)