diff options
Diffstat (limited to '2024/captions')
-rw-r--r-- | 2024/captions/emacsconf-2024-guile--beguiling-emacs-guileemacs-relaunched--robin-templeton--main.vtt | 118 |
1 files changed, 59 insertions, 59 deletions
diff --git a/2024/captions/emacsconf-2024-guile--beguiling-emacs-guileemacs-relaunched--robin-templeton--main.vtt b/2024/captions/emacsconf-2024-guile--beguiling-emacs-guileemacs-relaunched--robin-templeton--main.vtt index 1c952084..35cf8ccd 100644 --- a/2024/captions/emacsconf-2024-guile--beguiling-emacs-guileemacs-relaunched--robin-templeton--main.vtt +++ b/2024/captions/emacsconf-2024-guile--beguiling-emacs-guileemacs-relaunched--robin-templeton--main.vtt @@ -1,13 +1,13 @@ -WEBVTT captioned by anush +WEBVTT captioned by anush, checked by robin 00:00.000 --> 00:03.066 -Hello everyone, I'm Robin Templeton, +Hello everyone. I'm Robin Templeton, 00:03.083 --> 00:05.750 and I'm going to talk about Emacs Beguiled 00:05.766 --> 00:13.866 -and recent progress on the Guile Emacs project. +and recent progress on the Guile-Emacs project. 00:13.883 --> 00:16.433 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. 00:28.166 --> 00:30.400 -The goal of the Guile Emacs project +The goal of the Guile-Emacs project 00:30.400 --> 00:34.950 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 01:31.133 --> 01:34.033 -why Guile is suitable for this product. +why Guile is suitable for this project. 01:34.050 --> 01:36.666 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, 01:46.883 --> 01:50.066 -You only have to write a compiler +you only have to write a compiler 01:50.083 --> 01:52.550 -from the source language to TRIAL[??], +from the source language to Tree-IL, 01:52.566 --> 01:55.800 which is essentially a low-level, @@ -118,7 +118,7 @@ minimal representation of Scheme. All of Guile's compiler optimizations 02:01.800 --> 02:04.433 -occur at the TRIAL[??] layer or lower, +occur at the Tree-IL layer or lower, 02:04.450 --> 02:06.033 so you don't need to worry @@ -133,7 +133,7 @@ when initially implementing your language. Guile also has some Lisp features 02:14.650 --> 02:18.316 -that are very rare in schema implementations. +that are very rare in Scheme implementations. 02:18.333 --> 02:20.033 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, 02:23.933 --> 02:25.633 -just like an Elisp, +just like in Elisp, 02:25.650 --> 02:30.466 -and it also has a version of the Common Lisp object system +and it also has a version of the Common Lisp Object System 02:30.483 --> 02:37.200 -and its metoptic[??] protocol, which is called GOOPS. +and its metaobject protocol, which is called GOOPS. 02:37.200 --> 02:40.150 -The idea of Guile Emacs has a pretty long history. +The idea of Guile-Emacs has a pretty long history, 02:40.166 --> 02:43.866 going back at least three decades. @@ -166,10 +166,10 @@ half a dozen previous implementation attempts. But the current iteration began with 02:49.966 --> 02:52.866 -a series of six Summer of Code internships, +a series of six Summer of Code internships: 02:52.883 --> 02:56.033 -Daniel Kraft's[??] in 2009, +Daniel Kraft's in 2009, 02:56.050 --> 03:01.200 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 03:18.600 --> 03:23.033 -to use their libgal equivalents. +to use their libguile equivalents. 03:23.050 --> 03:26.950 I replaced Emacs' Lisp evaluator 03:26.966 --> 03:32.200 -with the one provided by guile-elisp.[??] +with the one provided by Guile Elisp. 03:32.200 --> 03:34.033 -After a little over a year of work +After a little over a year of work, 03:34.050 --> 03:37.950 at the end of the 2014 internship, 03:37.966 --> 03:44.316 -I ended up with a fully functional prototype of Guile Emacs. +I ended up with a fully functional prototype of Guile-Emacs. 03:44.333 --> 03:48.916 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. 04:11.566 --> 04:19.600 -Let's take just a moment to look at guile-elisp. +Let's take just a moment to look at Guile-Elisp. 04:19.600 --> 04:23.233 -For starters, we have access to guile modules. +For starters, we have access to Guile modules. 04:23.250 --> 04:25.116 -If we call guile's version function, +If we call Guile's <i>version</i> function, 04:25.133 --> 04:30.516 -we can see that we're running under guile 3.0, +we can see that we're running under Guile 3.0. 04:30.533 --> 04:33.233 -have access to some of the numeric tower +We have access to some of the numeric tower 04:33.250 --> 04:39.516 via the arithmetic functions. We also have multiple values. 04:39.533 --> 04:43.950 -We have to be careful to use Guile's values procedure here, +We have to be careful to use Guile's <i>values</i> procedure here, 04:43.966 --> 04:46.666 -not the CL libraries, +not the CL library's, 04:46.683 --> 04:48.833 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. 05:02.883 --> 05:05.633 -If n is zero, return the answer, +If <i>n</i> is zero, return the answer, 05:05.650 --> 05:14.266 -else recurse with n less one and n times a. +else recurse with <i>n</i> less one and <i>n</i> times <i>a</i>. 05:14.283 --> 05:16.150 -Of course this definition works correctly, +Of course, this definition works correctly, 05:16.166 --> 05:18.950 but it gets more interesting 05:18.966 --> 00:05:25.000 -if we communicate the answer with an error. +if we communicate the answer with an error, 00:05:25.100 --> 05:29.633 -or to look at a backtrace. +in order to look at a backtrace. 05:29.650 --> 05:32.350 You can see here that there are 05:32.366 --> 05:35.516 -no calls to fact visible in between +no calls to <i>fact</i> visible in between 05:35.533 --> 05:37.833 the request to evaluate @@ -313,7 +313,7 @@ This is essential for any kind of serious functional programming. 00:06:00.116 --> 06:03.033 -That's a peek at guile-elisp. +That's a peek at Guile-Elisp. 06:03.050 --> 06:08.066 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, 06:16.083 --> 06:17.633 -I've been working with Larry Valkama[??] +I've been working with Larry Valkama 06:17.650 --> 06:20.716 -to rebase guile-emacs +to rebase Guile-Emacs 06:20.733 --> 06:24.833 -onto the development branch of upstream emacs, +onto the development branch of upstream Emacs, 06:24.850 --> 06:29.666 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. 06:52.200 --> 06:56.833 -but we do have by now a version of Emacs 30 +But we do have by now a version of Emacs 30 06:56.850 --> 06:57.800 which boots correctly @@ -403,10 +403,10 @@ an order of magnitude faster than ordinary Elisp, and that's based on micro benchmarks 07:43.933 --> 00:07:46.133 -like the Gabriel[??] benchmarks. +like the Gabriel benchmarks. 00:07:46.233 --> 00:07:50.900 -but there's clearly a lot of room +But there's clearly a lot of room 00:07:50.900 --> 00:07:53.150 to improve our compiler's output. @@ -415,7 +415,7 @@ to improve our compiler's output. If you want to mark your calendars, 07:56.650 --> 08:00.150 -we're expecting to have a usable version of Guile Emacs 30 +we're expecting to have a usable version of Guile-Emacs 30 08:00.166 --> 00:08:03.016 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 08:35.333 --> 00:08:37.433 -where they're not relevant, +where they're not relevant. 00:08:37.533 --> 08:40.716 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. 08:59.333 --> 09:02.633 -The new [??] tower, tail call optimization, +The numeric tower, tail call optimization, 09:02.650 --> 09:04.550 -common list compatibility. +Common Lisp compatibility. 09:04.566 --> 09:07.950 We're also going to provide access to Fibers, 09:07.966 --> 09:12.466 -which is a guide library based on ideas from concurrent ML +which is a Guile library based on ideas from Concurrent ML 09:12.483 --> 09:15.716 that provides much more powerful facilities @@ -490,7 +490,7 @@ for concurrent and parallel programming than what Emacs currently offers. 00:09:24.666 --> 09:32.233 -This plan meets Guile Emacs' basic goals, +This plan meets Guile-Emacs' basic goals, 09:32.250 --> 09:36.316 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, 00:09:42.600 --> 09:46.600 -and what effect Guile Emacs might have on Emacs +and what effect Guile-Emacs might have on Emacs 09:46.600 --> 00:09:50.566 if it becomes simply Emacs. @@ -538,7 +538,7 @@ and being written in C means that they can't be practically redefined. 10:28.083 --> 10:34.433 -the use of C can become a barrier to extending Emacs +The use of C can become a barrier to extending Emacs 10:34.450 --> 10:36.233 or customizing its behavior. @@ -553,10 +553,10 @@ as much of Emacs as possible in Lisp. One way to speed up this process 10:46.050 --> 10:49.400 -would be to provide a common Lisp implementation for Guile. +would be to provide a Common Lisp implementation for Guile. 10:49.400 --> 10:54.833 -Note that between guile-elisp and guile-scheme, +Note that between Guile Elisp and Guile Scheme, 10:54.850 --> 10:57.516 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 11:06.016 --> 11:10.200 -such as SBCL and SICL[??]. +such as SBCL and SICL. 11:10.200 --> 11:13.800 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. 11:34.883 --> 11:38.400 -and it would be very easy for Elisp +And it would be very easy for Elisp 11:38.400 --> 11:41.466 to borrow language features from Common Lisp. @@ -640,7 +640,7 @@ to compile Emacs to WebAssembly, making it available perhaps in web browsers 12:33.200 --> 12:37.233 -or on systems with the WebAssembly system interface. +or on systems with the WebAssembly System Interface. 12:37.250 --> 12:41.266 But it would also be a great victory @@ -649,7 +649,7 @@ But it would also be a great victory for practical software freedom. 12:43.050 --> 12:45.866 -That's the idea that freedom one, +That's the idea that Freedom One, 12:45.883 --> 12:48.350 the freedom to study and modify programs, @@ -661,7 +661,7 @@ should not just be legally and technically possible, but should be actively encouraged 12:53.333 --> 12:57.066 -by our competing environments. +by our computing environments. 12:57.083 --> 13:00.116 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 14:20.966 --> 00:14:25.033 -as we continue developing Guile Emacs. +as we continue developing Guile-Emacs. 00:14:25.133 --> 00:14:29.933 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 15:18.883 --> 15:21.716 -people actually want to see in Guile Emacs. +people actually want to see in Guile-Emacs. 15:21.733 --> 00:15:25.200 -Guile Emacs is also being developed +Guile-Emacs is also being developed 00:15:25.300 --> 00:15:27.816 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. 15:45.600 --> 15:47.316 -If you're watching this at Emacsconf, +If you're watching this at EmacsConf, 15:47.333 --> 15:50.466 there will be a Q&A session immediately following this, 15:50.483 --> 15:57.066 -and thanks for watching. +and thanks for watching! |