-Hello everyone, I'm Robin Templeton, +Hello everyone. I'm Robin Templeton,
and I'm going to talk about Emacs Beguiled
-and recent progress on the Guile Emacs project. +and recent progress on the Guile-Emacs project.
First of all, if you're not familiar with Guile, @@ -25,7 +25,7 @@ and in the same family as Emacs Lisp, and Guile is GNU's official extension language.
-The goal of the Guile Emacs project +The goal of the Guile-Emacs project
is to use Guile as the basis for Emacs's Lisp support. @@ -85,7 +85,7 @@ than is currently feasible. Of course, this raises the question of
-why Guile is suitable for this product. +why Guile is suitable for this project.
And we chose Guile for a few reasons. @@ -103,10 +103,10 @@ using its compiler tower. To add support for a new language to Guile,
-You only have to write a compiler +you only have to write a compiler
-from the source language to TRIAL[??], +from the source language to Tree-IL,
which is essentially a low-level, @@ -118,7 +118,7 @@ minimal representation of Scheme. All of Guile's compiler optimizations
-occur at the TRIAL[??] layer or lower, +occur at the Tree-IL layer or lower,
so you don't need to worry @@ -133,7 +133,7 @@ when initially implementing your language. Guile also has some Lisp features
-that are very rare in schema implementations. +that are very rare in Scheme implementations.
For example, it has a nil value @@ -142,16 +142,16 @@ For example, it has a nil value that counts as both false and an empty list,
-just like an Elisp, +just like in Elisp,
-and it also has a version of the Common Lisp object system +and it also has a version of the Common Lisp Object System
-and its metoptic[??] protocol, which is called GOOPS. +and its metaobject protocol, which is called GOOPS.
-The idea of Guile Emacs has a pretty long history. +The idea of Guile-Emacs has a pretty long history,
going back at least three decades. @@ -166,10 +166,10 @@ half a dozen previous implementation attempts. But the current iteration began with
-a series of six Summer of Code internships, +a series of six Summer of Code internships:
-Daniel Kraft's[??] in 2009, +Daniel Kraft's in 2009,
and then my internships from 2010 to 2014. @@ -196,22 +196,22 @@ In Emacs, I modified the garbage collector and the data structures for Lisp objects
-to use their libgal equivalents. +to use their libguile equivalents.
I replaced Emacs' Lisp evaluator
-with the one provided by guile-elisp.[??] +with the one provided by Guile Elisp.
-After a little over a year of work +After a little over a year of work,
at the end of the 2014 internship,
-I ended up with a fully functional prototype of Guile Emacs. +I ended up with a fully functional prototype of Guile-Emacs.
It used Guile Elisp alone as its Lisp implementation @@ -235,28 +235,28 @@ as well as ease of integration with the Emacs C code. But it was nonetheless a major milestone for the project.
-Let's take just a moment to look at guile-elisp. +Let's take just a moment to look at Guile-Elisp.
-For starters, we have access to guile modules. +For starters, we have access to Guile modules.
-If we call guile's version function, +If we call Guile's version function,
-we can see that we're running under guile 3.0, +we can see that we're running under Guile 3.0.
-have access to some of the numeric tower +We have access to some of the numeric tower
via the arithmetic functions. We also have multiple values.
-We have to be careful to use Guile's values procedure here, +We have to be careful to use Guile's values procedure here,
-not the CL libraries, +not the CL library's,
but you can see that this works properly @@ -271,28 +271,28 @@ Finally, we have tail call elimination. Naturally, we're going to use factorial to demonstrate it.
-If n is zero, return the answer, +If n is zero, return the answer,
-else recurse with n less one and n times a. +else recurse with n less one and n times a.
-Of course this definition works correctly, +Of course, this definition works correctly,
but it gets more interesting
-if we communicate the answer with an error. +if we communicate the answer with an error,
-or to look at a backtrace. +in order to look at a backtrace.
You can see here that there are
-no calls to fact visible in between +no calls to fact visible in between
the request to evaluate @@ -313,7 +313,7 @@ This is essential for any kind of serious functional programming.
-That's a peek at guile-elisp. +That's a peek at Guile-Elisp.
In 2015, I left university to go work on web technologies, @@ -328,13 +328,13 @@ But that's been changing recently. During the last few months,
-I've been working with Larry Valkama[??] +I've been working with Larry Valkama
-to rebase guile-emacs +to rebase Guile-Emacs
-onto the development branch of upstream emacs, +onto the development branch of upstream Emacs,
including the past decade's worth of upstream development. @@ -358,7 +358,7 @@ where they haven't been properly adjusted for changes in the Emacs implementation.
-but we do have by now a version of Emacs 30 +But we do have by now a version of Emacs 30
which boots correctly @@ -403,10 +403,10 @@ an order of magnitude faster than ordinary Elisp, and that's based on micro benchmarks
-like the Gabriel[??] benchmarks. +like the Gabriel benchmarks.
-but there's clearly a lot of room +But there's clearly a lot of room
to improve our compiler's output. @@ -415,7 +415,7 @@ to improve our compiler's output. If you want to mark your calendars,
-we're expecting to have a usable version of Guile Emacs 30 +we're expecting to have a usable version of Guile-Emacs 30
out sometime next spring. @@ -448,7 +448,7 @@ On the Emacs side, we'll be working initially on abstracting away the details of the Lisp implementation
-where they're not relevant, +where they're not relevant.
And that will clean up the Emacs code base a bit. @@ -469,16 +469,16 @@ We're also going to be adding new features to Emacs Lisp. We've seen a few of them already.
-The new [??] tower, tail call optimization, +The numeric tower, tail call optimization,
-common list compatibility. +Common Lisp compatibility.
We're also going to provide access to Fibers,
-which is a guide library based on ideas from concurrent ML +which is a Guile library based on ideas from Concurrent ML
that provides much more powerful facilities @@ -490,7 +490,7 @@ for concurrent and parallel programming than what Emacs currently offers.
-This plan meets Guile Emacs' basic goals, +This plan meets Guile-Emacs' basic goals,
and it's work that we could maybe get integrated upstream @@ -502,7 +502,7 @@ in a reasonable amount of time. But it's also worth considering what more we can do,
-and what effect Guile Emacs might have on Emacs +and what effect Guile-Emacs might have on Emacs
if it becomes simply Emacs. @@ -538,7 +538,7 @@ and being written in C means that they can't be practically redefined.
-the use of C can become a barrier to extending Emacs +The use of C can become a barrier to extending Emacs
or customizing its behavior. @@ -553,10 +553,10 @@ as much of Emacs as possible in Lisp. One way to speed up this process
-would be to provide a common Lisp implementation for Guile. +would be to provide a Common Lisp implementation for Guile.
-Note that between guile-elisp and guile-scheme, +Note that between Guile Elisp and Guile Scheme,
we have all of the essential ingredients @@ -568,7 +568,7 @@ for a Common Lisp environment. We can also share code with other Common Lisp implementations
-such as SBCL and SICL[??]. +such as SBCL and SICL.
Overall, the duration of the project @@ -592,7 +592,7 @@ It could be a model for future improvements to Elisp, because Elisp and CL can interact directly without problems.
-and it would be very easy for Elisp +And it would be very easy for Elisp
to borrow language features from Common Lisp. @@ -640,7 +640,7 @@ to compile Emacs to WebAssembly, making it available perhaps in web browsers
-or on systems with the WebAssembly system interface. +or on systems with the WebAssembly System Interface.
But it would also be a great victory @@ -649,7 +649,7 @@ But it would also be a great victory for practical software freedom.
-That's the idea that freedom one, +That's the idea that Freedom One,
the freedom to study and modify programs, @@ -661,7 +661,7 @@ should not just be legally and technically possible, but should be actively encouraged
-by our competing environments. +by our computing environments.
Emacs is really one of the archetypal examples of this, @@ -733,7 +733,7 @@ We'll certainly be looking at the practicality of these kinds of changes
-as we continue developing Guile Emacs. +as we continue developing Guile-Emacs.
Finally, how can you get involved @@ -778,10 +778,10 @@ We can always use bug reports, and we're interested in what kind of features
-people actually want to see in Guile Emacs. +people actually want to see in Guile-Emacs.
-Guile Emacs is also being developed +Guile-Emacs is also being developed
by a small worker cooperative, @@ -799,10 +799,10 @@ and subscribing to our mailing lists so that you can keep up with news on the project.
-If you're watching this at Emacsconf, +If you're watching this at EmacsConf,
there will be a Q&A session immediately following this,
-and thanks for watching. +and thanks for watching! -- cgit v1.2.3