Re: guile and emacs and elisp, oh my!

From:

Ludovic Courtès

Subject:

Re: guile and emacs and elisp, oh my!

Date:

Wed, 21 Apr 2010 18:43:34 +0200

User-agent:

Gnus/5.13 (Gnus v5.13) Emacs/23.1 (gnu/linux)

Hello Tom,
(My first post on this list, so I’m a bit impressed. ;-))
I think this discussion should be framed in the larger context of the
GNU System. Guile came into existence to “spread the Emacs nature” to
the rest of GNU, to paraphrase Andy[*].
The GNU System as I view it aims to liberate users in two ways:
1. Legally, by using software licenses that guarantee the 4 freedoms.
2. Technically, by providing extension points allowing users to easily
adapt the system to their own needs.
The latter is paramount to the design of 3 key components of GNU:
the Hurd, Guile, and Emacs.
Guile is meant to be a powerful interface between users and the GNU
System, more powerful than a Bourne shell, and more moldable than a C
API. It aims to be a substrate allowing system components to be glued
together to let new applications emerge.
Users should be able to take Emacs, GnuTLS, and Mailutils and have Gnus
benefit from what each component has to offer. They should be able to
write GTK+/GNUstep GUIs that present Org-Mode files in a nice way, or
render them as PDF via GNU PDF.
All these GNU libraries, programs, and Emacs modes should be able to be
tightly integrated together, and this is where Guile comes in.
Part of this is already possible, but the interface between Emacs and
the rest of GNU remains disappointingly poor.
A few remarks:
Tom Tromey <address@hidden> writes:
> First, 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.
Guile isn’t aiming at support for tens of languages like Parrot. Guile
is a Scheme implementation, first and foremost.
It has an elisp compiler and integrates well with elisp because elisp is
primordial as an extension language for GNU. It also comes with a
compiler for ECMAScript, which turns out to have many features
comparable to Scheme and a surface syntax that some people prefer.
(It also has a Brainfuck front-end. Imagine yourself extending Emacs in
Brainfuck, thank Guile!)
> Multiple languages equals chaos.
I don’t think it’s that clear cut. Vim (heh...) supports several
extension languages, PLT Scheme implements multiple languages.
Emacs-on-Guile as I imagine it would be mainly about elisp and (to a
lesser extent) Scheme, though.
> * FFI, and dynamically loadable libraries. This feature has come up and
> been rejected several times for Emacs.
In practice D-BUS can be thought of as an FFI, not to mention the use of
special-purpose external programs such as ‘gnutls-cli’.
Thanks,
Ludo’.
[*] I recommend looking at or rather listening to Andy’s talk at
Göteborg’s GHM, entitled “Guile, GNU, and You”:
http://www.gnu.org/ghm/2009/ .