From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Robin Templeton Newsgroups: gmane.emacs.devel Subject: Re: Guile emacs thread (again) Date: Thu, 18 Sep 2014 08:23:45 -0400 Message-ID: <87bnqdnmlq.fsf@panthera.terpri.org> References: <87wq97i78i.fsf@earlgrey.lan> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: text/plain X-Trace: ger.gmane.org 1411045443 20861 80.91.229.3 (18 Sep 2014 13:04:03 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Thu, 18 Sep 2014 13:04:03 +0000 (UTC) To: emacs-devel@gnu.org Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Thu Sep 18 15:03:58 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 1XUbNO-0001En-83 for ged-emacs-devel@m.gmane.org; Thu, 18 Sep 2014 15:03:58 +0200 Original-Received: from localhost ([::1]:50678 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XUbNN-0004Zy-OU for ged-emacs-devel@m.gmane.org; Thu, 18 Sep 2014 09:03:57 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:37693) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XUbJz-0007O8-7I for emacs-devel@gnu.org; Thu, 18 Sep 2014 09:00:35 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1XUbJp-00017g-55 for emacs-devel@gnu.org; Thu, 18 Sep 2014 09:00:27 -0400 Original-Received: from plane.gmane.org ([80.91.229.3]:36247) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XUbJo-00010z-Rs for emacs-devel@gnu.org; Thu, 18 Sep 2014 09:00:17 -0400 Original-Received: from list by plane.gmane.org with local (Exim 4.69) (envelope-from ) id 1XUaqa-00043c-I5 for emacs-devel@gnu.org; Thu, 18 Sep 2014 14:30:04 +0200 Original-Received: from cpe-174-097-170-150.nc.res.rr.com ([174.97.170.150]) by main.gmane.org with esmtp (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Thu, 18 Sep 2014 14:30:04 +0200 Original-Received: from robin by cpe-174-097-170-150.nc.res.rr.com with local (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Thu, 18 Sep 2014 14:30:04 +0200 X-Injected-Via-Gmane: http://gmane.org/ Original-Lines: 93 Original-X-Complaints-To: usenet@ger.gmane.org X-Gmane-NNTP-Posting-Host: cpe-174-097-170-150.nc.res.rr.com User-Agent: Gnus/5.13 (Gnus v5.13) Guile-Emacs/24.4 (gnu/linux) Cancel-Lock: sha1:9kt4fWH/Q5XuAX9HhhsLWckFVAA= X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 80.91.229.3 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:174498 Archived-At: 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 -- Inteligenta persono lernas la lingvon Esperanton rapide kaj facile. Esperanto estas moderna, kultura lingvo por la mondo. Simpla, fleksebla, belsona, Esperanto estas la praktika solvo de la problemo de universala interkompreno. Lernu la interlingvon Esperanton!