summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--2024/info/guile-after.md475
-rw-r--r--2024/info/guile-before.md8
-rw-r--r--2024/talks/guile.md69
3 files changed, 317 insertions, 235 deletions
diff --git a/2024/info/guile-after.md b/2024/info/guile-after.md
index d4814cc3..bbe921d2 100644
--- a/2024/info/guile-after.md
+++ b/2024/info/guile-after.md
@@ -279,241 +279,248 @@ Captioner: sachac and robin
<div class="transcript transcript-qanda"><a name="guile-qanda-transcript"></a><h1>Q&A transcript (unedited)</h1>
-[[!template text="""All right. Hey, thanks for bearing with us there. We had a""" start="00:00:03.720" video="qanda-guile" id="subtitle"]]
-[[!template text="""couple of bumps in the road, a cross between a couple of""" start="00:00:07.523" video="qanda-guile" id="subtitle"]]
-[[!template text="""different versions of our program that we deliver here,""" start="00:00:07.523" video="qanda-guile" id="subtitle"]]
-[[!template text="""different ways that we bring this stream together between""" start="00:00:07.523" video="qanda-guile" id="subtitle"]]
-[[!template text="""the recorded content that that speakers are putting""" start="00:00:07.523" video="qanda-guile" id="subtitle"]]
-[[!template text="""together in advance in the live content, such as what you're""" start="00:00:21.926" video="qanda-guile" id="subtitle"]]
-[[!template text="""seeing right here. So thanks, Scott, Sasha, and Leo, and""" start="00:00:21.926" video="qanda-guile" id="subtitle"]]
-[[!template text="""everybody behind the stages gluing it all together. And""" start="00:00:27.732" video="qanda-guile" id="subtitle"]]
-[[!template text="""we're back here now, and I'm speaking with Robin, who us""" start="00:00:34.059" video="qanda-guile" id="subtitle"]]
-[[!template text="""ready to take on some of your questions and address some of""" start="00:00:39.978" video="qanda-guile" id="subtitle"]]
-[[!template text="""the comments over here on the etherpad. If you want to jump in""" start="00:00:39.978" video="qanda-guile" id="subtitle"]]
-[[!template text="""there, there's links in the chat. And thanks so much, Robin,""" start="00:00:45.900" video="qanda-guile" id="subtitle"]]
-[[!template text="""for your talk. And it's also been a pleasure chatting with""" start="00:00:48.541" video="qanda-guile" id="subtitle"]]
-[[!template text="""you just a little bit over the last couple of months on IRC.""" start="00:00:51.703" video="qanda-guile" id="subtitle"]]
-[[!template text="""Yeah, absolutely. Great meeting you.""" start="00:00:57.945" video="qanda-guile" id="subtitle"]]
-[[!template text="""All right. All right, everyone. I think I am streaming now.""" start="00:01:33.368" video="qanda-guile" id="subtitle"]]
-[[!template text="""So let's look at it. Let's see. I see the IRC scrolling. So""" start="00:01:37.730" video="qanda-guile" id="subtitle"]]
-[[!template text="""let's see where that's going. Yes, the Common Lisp is what I""" start="00:01:42.213" video="qanda-guile" id="subtitle"]]
-[[!template text="""thought would piss people off. And because it's not part of""" start="00:01:45.595" video="qanda-guile" id="subtitle"]]
-[[!template text="""either community, but I think it would be a good compromise""" start="00:01:48.656" video="qanda-guile" id="subtitle"]]
-[[!template text="""for building a Lisp into a language that's more suitable for""" start="00:01:48.656" video="qanda-guile" id="subtitle"]]
-[[!template text="""building large systems like the kind that we are building in""" start="00:01:48.656" video="qanda-guile" id="subtitle"]]
-[[!template text="""Emacs today. I also left out an important part of the talk,""" start="00:01:48.656" video="qanda-guile" id="subtitle"]]
-[[!template text="""which is part of the motivation for transitioning from C to""" start="00:02:04.075" video="qanda-guile" id="subtitle"]]
-[[!template text="""Lisp. And that's the performance characteristics""" start="00:02:04.075" video="qanda-guile" id="subtitle"]]
-[[!template text="""fundamentally change when you get a modern and high""" start="00:02:12.040" video="qanda-guile" id="subtitle"]]
-[[!template text="""performance Lisp system involved. it starts getting less""" start="00:02:12.040" video="qanda-guile" id="subtitle"]]
-[[!template text="""practical to just call out to C to speed up every operation.""" start="00:02:22.146" video="qanda-guile" id="subtitle"]]
-[[!template text="""Among other things, you lose the ability to use more""" start="00:02:28.135" video="qanda-guile" id="subtitle"]]
-[[!template text="""advanced control structures, like the limited""" start="00:02:28.135" video="qanda-guile" id="subtitle"]]
-[[!template text="""continuations. And you also have to pay the overhead of""" start="00:02:28.135" video="qanda-guile" id="subtitle"]]
-[[!template text="""calling out to our foreign function. So it gets to be an""" start="00:02:36.933" video="qanda-guile" id="subtitle"]]
-[[!template text="""increasingly better deal to optimize your list""" start="00:02:42.197" video="qanda-guile" id="subtitle"]]
-[[!template text="""implementation and provide ways for building faster list""" start="00:02:42.197" video="qanda-guile" id="subtitle"]]
-[[!template text="""programs, such as type annotations, once you've gotten""" start="00:02:42.197" video="qanda-guile" id="subtitle"]]
-[[!template text="""over a certain threshold of performance.""" start="00:02:42.197" video="qanda-guile" id="subtitle"]]
-[[!template text="""I'm going to look at the pad. Here we go. The first question is""" start="00:03:01.471" video="qanda-guile" id="subtitle"]]
-[[!template text="""about fibers and whether they help with making ELISP""" start="00:03:05.832" video="qanda-guile" id="subtitle"]]
-[[!template text="""concurrent in terms of its data structures. Yes, that's""" start="00:03:05.832" video="qanda-guile" id="subtitle"]]
-[[!template text="""absolutely correct. Fibers by themselves do not provide""" start="00:03:16.422" video="qanda-guile" id="subtitle"]]
-[[!template text="""thread safety for any of the existing Emacs data""" start="00:03:18.264" video="qanda-guile" id="subtitle"]]
-[[!template text="""structures. What they are useful for is building things""" start="00:03:18.264" video="qanda-guile" id="subtitle"]]
-[[!template text="""that don't use Emacs data structures, say a network client""" start="00:03:32.183" video="qanda-guile" id="subtitle"]]
-[[!template text="""that reads input from a stream or in scheme, a port or a stream""" start="00:03:32.183" video="qanda-guile" id="subtitle"]]
-[[!template text="""instead of a buffer. And we can also take a look at options for""" start="00:03:32.183" video="qanda-guile" id="subtitle"]]
-[[!template text="""making more Emacs features concurrency safe or thread""" start="00:03:46.592" video="qanda-guile" id="subtitle"]]
-[[!template text="""safe. For example, we could introduce the idea of a thread""" start="00:03:46.592" video="qanda-guile" id="subtitle"]]
-[[!template text="""local buffer that didn't require locks for sharing between""" start="00:03:55.260" video="qanda-guile" id="subtitle"]]
-[[!template text="""different threads. And I'm not sure how that would develop,""" start="00:03:55.260" video="qanda-guile" id="subtitle"]]
-[[!template text="""but I'm sure the Emacs maintainers already have some ideas""" start="00:04:06.609" video="qanda-guile" id="subtitle"]]
-[[!template text="""in this direction. Fibers will basically provide a""" start="00:04:06.609" video="qanda-guile" id="subtitle"]]
-[[!template text="""high-performance system that you can use apart from""" start="00:04:15.356" video="qanda-guile" id="subtitle"]]
-[[!template text="""ordinary Emacs-less constructs.""" start="00:04:15.356" video="qanda-guile" id="subtitle"]]
-[[!template text="""Let's see. We have another question. Emacs is roughly 25% C.""" start="00:04:28.066" video="qanda-guile" id="subtitle"]]
-[[!template text="""How much of Guile is in C?""" start="00:04:31.128" video="qanda-guile" id="subtitle"]]
-[[!template text="""Well, part of my point about C is not so much that there, well,""" start="00:04:39.392" video="qanda-guile" id="subtitle"]]
-[[!template text="""obviously, I phrased it a little provocatively, but the""" start="00:04:39.392" video="qanda-guile" id="subtitle"]]
-[[!template text="""problem is not so much that there is C, but that there is so""" start="00:04:39.392" video="qanda-guile" id="subtitle"]]
-[[!template text="""much C involved in every single layer of the application.""" start="00:04:39.392" video="qanda-guile" id="subtitle"]]
-[[!template text="""So, for example, we're limited in our ability to use tools""" start="00:05:00.796" video="qanda-guile" id="subtitle"]]
-[[!template text="""like limit continuations, which can be used to express""" start="00:05:00.796" video="qanda-guile" id="subtitle"]]
-[[!template text="""buffer local variable binding in a few dozen lines, because""" start="00:05:00.796" video="qanda-guile" id="subtitle"]]
-[[!template text="""Emacs has so much calling back and forth between guile and C,""" start="00:05:00.796" video="qanda-guile" id="subtitle"]]
-[[!template text="""due to so much basic functionality being in primitive C""" start="00:05:00.796" video="qanda-guile" id="subtitle"]]
-[[!template text="""subroutines. So that's one issue apart from the question of""" start="00:05:00.796" video="qanda-guile" id="subtitle"]]
-[[!template text="""how much is in a particular language. To answer the question""" start="00:05:28.800" video="qanda-guile" id="subtitle"]]
-[[!template text="""about Guile, Guile has about 165,000 lines of scheme code""" start="00:05:37.206" video="qanda-guile" id="subtitle"]]
-[[!template text="""and about 160,000 lines of C code, so it's about half and""" start="00:05:37.206" video="qanda-guile" id="subtitle"]]
-[[!template text="""half. And that shouldn't really be surprising given that it""" start="00:05:37.206" video="qanda-guile" id="subtitle"]]
-[[!template text="""is actually focused on low-level things like building a""" start="00:05:52.494" video="qanda-guile" id="subtitle"]]
+[[!template text="""All right. Hey, thanks for bearing with us there. We had a""" start="00:00:00.000" video="qanda-guile" id="subtitle"]]
+[[!template text="""couple of bumps in the road, a cross between a couple of""" start="00:00:08.120" video="qanda-guile" id="subtitle"]]
+[[!template text="""different versions of our program that we deliver here,""" start="00:00:11.240" video="qanda-guile" id="subtitle"]]
+[[!template text="""different ways that we bring this stream together between""" start="00:00:13.480" video="qanda-guile" id="subtitle"]]
+[[!template text="""the recorded content that that speakers are putting""" start="00:00:17.960" video="qanda-guile" id="subtitle"]]
+[[!template text="""together in advance in the live content, such as what you're""" start="00:00:22.360" video="qanda-guile" id="subtitle"]]
+[[!template text="""seeing right here. So thanks go to Sacha and Leo, and""" start="00:00:26.880" video="qanda-guile" id="subtitle"]]
+[[!template text="""everybody behind the stages gluing it all together. And""" start="00:00:31.040" video="qanda-guile" id="subtitle"]]
+[[!template text="""we're back here now, and I'm speaking with Robin, who us""" start="00:00:34.360" video="qanda-guile" id="subtitle"]]
+[[!template text="""ready to take on some of your questions and address some of""" start="00:00:40.200" video="qanda-guile" id="subtitle"]]
+[[!template text="""the comments over here on the etherpad. If you want to jump in""" start="00:00:42.800" video="qanda-guile" id="subtitle"]]
+[[!template text="""there, there's links in the chat. And thanks so much, Robin,""" start="00:00:46.880" video="qanda-guile" id="subtitle"]]
+[[!template text="""for your talk. And it's also been a pleasure chatting with""" start="00:00:51.320" video="qanda-guile" id="subtitle"]]
+[[!template text="""you just a little bit over the last couple of months on IRC.""" start="00:00:54.000" video="qanda-guile" id="subtitle"]]
+[[!template text="""Yeah, absolutely. Great meeting you.""" start="00:00:57.920" video="qanda-guile" id="subtitle"]]
+[[!template text="""All right. All right, everyone. I think I am streaming now.""" start="00:01:33.320" video="qanda-guile" id="subtitle"]]
+[[!template text="""So let's look at it. Let's see. I see the IRC scrolling. So""" start="00:01:37.680" video="qanda-guile" id="subtitle"]]
+[[!template text="""let's see where that's going. Yes, the Common Lisp is what I""" start="00:01:42.440" video="qanda-guile" id="subtitle"]]
+[[!template text="""thought would piss people off. And because it's not part of""" start="00:01:47.200" video="qanda-guile" id="subtitle"]]
+[[!template text="""either community, but I think it would be a good compromise""" start="00:01:50.520" video="qanda-guile" id="subtitle"]]
+[[!template text="""for building a Lisp into a language that's more suitable for""" start="00:01:54.240" video="qanda-guile" id="subtitle"]]
+[[!template text="""building large systems like the kind that we are building in""" start="00:01:57.840" video="qanda-guile" id="subtitle"]]
+[[!template text="""Emacs today. I also left out an important part of the talk,""" start="00:02:01.880" video="qanda-guile" id="subtitle"]]
+[[!template text="""which is part of the motivation for transitioning from C to""" start="00:02:07.280" video="qanda-guile" id="subtitle"]]
+[[!template text="""Lisp. And that's the performance characteristics""" start="00:02:12.080" video="qanda-guile" id="subtitle"]]
+[[!template text="""fundamentally change when you get a modern and high""" start="00:02:15.600" video="qanda-guile" id="subtitle"]]
+[[!template text="""performance Lisp system involved. it starts getting less""" start="00:02:19.400" video="qanda-guile" id="subtitle"]]
+[[!template text="""practical to just call out to C to speed up every operation.""" start="00:02:23.560" video="qanda-guile" id="subtitle"]]
+[[!template text="""Among other things, you lose the ability to use more""" start="00:02:27.800" video="qanda-guile" id="subtitle"]]
+[[!template text="""advanced control structures, like the limited""" start="00:02:31.560" video="qanda-guile" id="subtitle"]]
+[[!template text="""continuations. And you also have to pay the overhead of""" start="00:02:34.760" video="qanda-guile" id="subtitle"]]
+[[!template text="""calling out to our foreign function. So it gets to be an""" start="00:02:40.040" video="qanda-guile" id="subtitle"]]
+[[!template text="""increasingly better deal to optimize your list""" start="00:02:43.880" video="qanda-guile" id="subtitle"]]
+[[!template text="""implementation and provide ways for building faster list""" start="00:02:47.880" video="qanda-guile" id="subtitle"]]
+[[!template text="""programs, such as type annotations, once you've gotten""" start="00:02:52.720" video="qanda-guile" id="subtitle"]]
+[[!template text="""over a certain threshold of performance.""" start="00:02:55.880" video="qanda-guile" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Q: About fibers: My understanding is that the problem with making Elisp concurrent is that none of the data structures (buffer, cons, vector, window etc) are concurrency-safe.  How do fibers help with this?""" start="00:03:01.480" video="qanda-guile" id="subtitle"]]</div>[[!template text="""I'm going to look at the pad. Here we go. The first question is""" start="00:03:01.480" video="qanda-guile" id="subtitle"]]
+[[!template text="""about fibers and whether they help with making Elisp""" start="00:03:07.360" video="qanda-guile" id="subtitle"]]
+[[!template text="""concurrent in terms of its data structures. Yes, that's""" start="00:03:12.520" video="qanda-guile" id="subtitle"]]
+[[!template text="""absolutely correct. Fibers by themselves do not provide""" start="00:03:18.280" video="qanda-guile" id="subtitle"]]
+[[!template text="""thread safety for any of the existing Emacs data""" start="00:03:23.880" video="qanda-guile" id="subtitle"]]
+[[!template text="""structures. What they are useful for is building things""" start="00:03:26.800" video="qanda-guile" id="subtitle"]]
+[[!template text="""that don't use Emacs data structures, say a network client""" start="00:03:32.880" video="qanda-guile" id="subtitle"]]
+[[!template text="""that reads input from a stream or in scheme, a port or a stream""" start="00:03:38.200" video="qanda-guile" id="subtitle"]]
+[[!template text="""instead of a buffer. And we can also take a look at options for""" start="00:03:44.560" video="qanda-guile" id="subtitle"]]
+[[!template text="""making more Emacs features concurrency safe or thread""" start="00:03:49.680" video="qanda-guile" id="subtitle"]]
+[[!template text="""safe. For example, we could introduce the idea of a thread""" start="00:03:54.200" video="qanda-guile" id="subtitle"]]
+[[!template text="""local buffer that didn't require locks for sharing between""" start="00:03:58.080" video="qanda-guile" id="subtitle"]]
+[[!template text="""different threads. And I'm not sure how that would develop,""" start="00:04:03.040" video="qanda-guile" id="subtitle"]]
+[[!template text="""but I'm sure the Emacs maintainers already have some ideas""" start="00:04:09.240" video="qanda-guile" id="subtitle"]]
+[[!template text="""in this direction. Fibers will basically provide a""" start="00:04:12.320" video="qanda-guile" id="subtitle"]]
+[[!template text="""high-performance system that you can use apart from""" start="00:04:17.520" video="qanda-guile" id="subtitle"]]
+[[!template text="""ordinary Emacs-less constructs.""" start="00:04:22.160" video="qanda-guile" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Q: Do you have a rough idea of how much of Guile is written in C?""" start="00:04:28.080" video="qanda-guile" id="subtitle"]]</div>[[!template text="""Let's see. We have another question. Emacs is roughly 25% C.""" start="00:04:28.080" video="qanda-guile" id="subtitle"]]
+[[!template text="""How much of Guile is in C?""" start="00:04:34.840" video="qanda-guile" id="subtitle"]]
+[[!template text="""Well, part of my point about C is not so much that there, well,""" start="00:04:38.840" video="qanda-guile" id="subtitle"]]
+[[!template text="""obviously, I phrased it a little provocatively, but the""" start="00:04:45.680" video="qanda-guile" id="subtitle"]]
+[[!template text="""problem is not so much that there is C, but that there is so""" start="00:04:50.280" video="qanda-guile" id="subtitle"]]
+[[!template text="""much C involved in every single layer of the application.""" start="00:04:54.720" video="qanda-guile" id="subtitle"]]
+[[!template text="""So, for example, we're limited in our ability to use tools""" start="00:05:00.280" video="qanda-guile" id="subtitle"]]
+[[!template text="""like limit continuations, which can be used to express""" start="00:05:04.560" video="qanda-guile" id="subtitle"]]
+[[!template text="""buffer local variable binding in a few dozen lines, because""" start="00:05:08.160" video="qanda-guile" id="subtitle"]]
+[[!template text="""Emacs has so much calling back and forth between guile and C,""" start="00:05:13.600" video="qanda-guile" id="subtitle"]]
+[[!template text="""due to so much basic functionality being in primitive C""" start="00:05:21.840" video="qanda-guile" id="subtitle"]]
+[[!template text="""subroutines. So that's one issue apart from the question of""" start="00:05:26.600" video="qanda-guile" id="subtitle"]]
+[[!template text="""how much is in a particular language. To answer the question""" start="00:05:34.120" video="qanda-guile" id="subtitle"]]
+[[!template text="""about Guile, Guile has about 165,000 lines of scheme code""" start="00:05:38.360" video="qanda-guile" id="subtitle"]]
+[[!template text="""and about 160,000 lines of C code, so it's about half and""" start="00:05:45.880" video="qanda-guile" id="subtitle"]]
+[[!template text="""half. And that shouldn't really be surprising given that it""" start="00:05:51.600" video="qanda-guile" id="subtitle"]]
+[[!template text="""is actually focused on low-level things like building a""" start="00:05:55.880" video="qanda-guile" id="subtitle"]]
[[!template text="""high-performance bytecode compiler, and a just-in-time""" start="00:06:00.360" video="qanda-guile" id="subtitle"]]
-[[!template text="""compiler, and so on, as well as providing its own fairly""" start="00:06:00.360" video="qanda-guile" id="subtitle"]]
-[[!template text="""rich, but still far less complete than Emacs's standard""" start="00:06:00.360" video="qanda-guile" id="subtitle"]]
-[[!template text="""library, in terms of Ice9 and other system libraries""" start="00:06:00.360" video="qanda-guile" id="subtitle"]]
-[[!template text="""shipped with Guile. The next question is on a Common Lisp""" start="00:06:00.360" video="qanda-guile" id="subtitle"]]
-[[!template text="""implementation for Guile, and whether work on it is""" start="00:06:22.045" video="qanda-guile" id="subtitle"]]
-[[!template text="""underway. In fact, work on it is already underway. I've been""" start="00:06:22.045" video="qanda-guile" id="subtitle"]]
-[[!template text="""working on it on and off in my spare time for a couple of years""" start="00:06:32.488" video="qanda-guile" id="subtitle"]]
-[[!template text="""now. I've gotten, I think, a couple of chapters of the""" start="00:06:32.488" video="qanda-guile" id="subtitle"]]
-[[!template text="""hyperspectin, if you want to measure it that way. But I've""" start="00:06:37.310" video="qanda-guile" id="subtitle"]]
-[[!template text="""been focusing my work more on research and on what we need to""" start="00:06:43.814" video="qanda-guile" id="subtitle"]]
-[[!template text="""do to have a LISP environment, a polyglot LISP environment,""" start="00:06:43.814" video="qanda-guile" id="subtitle"]]
-[[!template text="""wherein the features of Common Lisp and Scheme and Emacs""" start="00:06:57.481" video="qanda-guile" id="subtitle"]]
-[[!template text="""Lisp can all work easily and ergonomically together. So""" start="00:06:57.481" video="qanda-guile" id="subtitle"]]
-[[!template text="""this involves things like the question of Lisps having""" start="00:07:08.306" video="qanda-guile" id="subtitle"]]
-[[!template text="""Lisp1s versus Lisp2s. That is, a Lisp1-like scheme has one""" start="00:07:08.306" video="qanda-guile" id="subtitle"]]
-[[!template text="""namespace, like every variable is a single name that can""" start="00:07:18.111" video="qanda-guile" id="subtitle"]]
-[[!template text="""refer to one value, whereas in Lisp2s like EmacsLisp,""" start="00:07:27.088" video="qanda-guile" id="subtitle"]]
-[[!template text="""symbols can have different definitions as functions and as""" start="00:07:27.088" video="qanda-guile" id="subtitle"]]
-[[!template text="""variables, as well as other namespaces like property""" start="00:07:27.088" video="qanda-guile" id="subtitle"]]
-[[!template text="""lists. So Kent Pittman has some interesting thoughts on""" start="00:07:27.088" video="qanda-guile" id="subtitle"]]
-[[!template text="""this that I've been looking into. Another issue is the""" start="00:07:42.954" video="qanda-guile" id="subtitle"]]
-[[!template text="""interaction between package and module systems. So I don't""" start="00:07:49.917" video="qanda-guile" id="subtitle"]]
-[[!template text="""have really anything ready to publish just yet on this, but I""" start="00:07:56.216" video="qanda-guile" id="subtitle"]]
-[[!template text="""have been looking into the background issues of""" start="00:07:56.216" video="qanda-guile" id="subtitle"]]
-[[!template text="""integrating this into Guile in a useful way.""" start="00:07:56.216" video="qanda-guile" id="subtitle"]]
-[[!template text="""And let's see, one other thing I was going to mention.""" start="00:08:11.543" video="qanda-guile" id="subtitle"]]
-[[!template text="""Okay, I've lost it. But yeah, there is some work already. And""" start="00:08:21.954" video="qanda-guile" id="subtitle"]]
-[[!template text="""if people are interested in moving Emacs in this direction,""" start="00:08:26.519" video="qanda-guile" id="subtitle"]]
-[[!template text="""then we'll certainly start working on it in earnest.""" start="00:08:26.519" video="qanda-guile" id="subtitle"]]
-[[!template text="""Another question, did switching from Guile 2 to 3 give any""" start="00:08:37.730" video="qanda-guile" id="subtitle"]]
-[[!template text="""performance benefits? Well, honestly, we're not really""" start="00:08:37.730" video="qanda-guile" id="subtitle"]]
-[[!template text="""benchmarking stuff here because GollyMax has so much""" start="00:08:43.342" video="qanda-guile" id="subtitle"]]
-[[!template text="""overhead from structuring the compiler to closely conform""" start="00:08:43.342" video="qanda-guile" id="subtitle"]]
-[[!template text="""to Emacs in terms of like even things as simple as metadata""" start="00:08:43.342" video="qanda-guile" id="subtitle"]]
-[[!template text="""layout for variable information.""" start="00:08:43.342" video="qanda-guile" id="subtitle"]]
-[[!template text="""So I haven't actually noticed a perceptual change. I would""" start="00:09:05.112" video="qanda-guile" id="subtitle"]]
-[[!template text="""guess based on uh the Gabriel benchmark results that is""" start="00:09:07.994" video="qanda-guile" id="subtitle"]]
-[[!template text="""benefited from what somewhat from Gal 3's performance""" start="00:09:11.714" video="qanda-guile" id="subtitle"]]
-[[!template text="""improvements but for Emacs I just don't know yet and working""" start="00:09:11.714" video="qanda-guile" id="subtitle"]]
-[[!template text="""on the compiler's code generation and lowering the""" start="00:09:11.714" video="qanda-guile" id="subtitle"]]
-[[!template text="""overhead is going to be the thing that provides the most""" start="00:09:11.714" video="qanda-guile" id="subtitle"]]
-[[!template text="""return for improving that aspect of Gal Emacs.""" start="00:09:11.714" video="qanda-guile" id="subtitle"]]
-[[!template text="""Let's see, I see SICL mentioned here, as well as SPCL. And it""" start="00:09:48.004" video="qanda-guile" id="subtitle"]]
-[[!template text="""could certainly help with the implementation of""" start="00:09:53.485" video="qanda-guile" id="subtitle"]]
-[[!template text="""Commonwealth and Guile, because a lot of the basic stuff is""" start="00:09:53.485" video="qanda-guile" id="subtitle"]]
-[[!template text="""just providing a new interface to some bit of""" start="00:09:53.485" video="qanda-guile" id="subtitle"]]
-[[!template text="""functionality. Like the sequence library, it's mostly""" start="00:09:53.485" video="qanda-guile" id="subtitle"]]
-[[!template text="""stuff that we already have through SR5 and so on. The""" start="00:10:06.828" video="qanda-guile" id="subtitle"]]
-[[!template text="""difficult, well, not the difficult but the time consuming""" start="00:10:13.304" video="qanda-guile" id="subtitle"]]
-[[!template text="""parts are going to be all the little DSL sitcom on this path""" start="00:10:13.304" video="qanda-guile" id="subtitle"]]
-[[!template text="""packed up inside it like pretty printing format loop and so""" start="00:10:13.304" video="qanda-guile" id="subtitle"]]
-[[!template text="""on. It's for those high-level features that I think we could""" start="00:10:13.304" video="qanda-guile" id="subtitle"]]
-[[!template text="""potentially share code with other Common Lisp""" start="00:10:29.179" video="qanda-guile" id="subtitle"]]
-[[!template text="""implementations. And Common Lisp implementations do tend""" start="00:10:29.179" video="qanda-guile" id="subtitle"]]
-[[!template text="""to be permissively licensed, SPCL's public domain, for""" start="00:10:36.462" video="qanda-guile" id="subtitle"]]
-[[!template text="""example, so there's no barrier to sharing code with them.""" start="00:10:36.462" video="qanda-guile" id="subtitle"]]
-[[!template text="""There's another question about whether the Emacs""" start="00:10:50.148" video="qanda-guile" id="subtitle"]]
-[[!template text="""maintainers are interested in switching to Guile as the""" start="00:10:50.148" video="qanda-guile" id="subtitle"]]
-[[!template text="""engine for Emacs Lisp. I can't speak for the current""" start="00:10:50.148" video="qanda-guile" id="subtitle"]]
-[[!template text="""maintainers. I can say that people have talked to previous""" start="00:10:58.341" video="qanda-guile" id="subtitle"]]
-[[!template text="""Emacs maintainers about the whole idea, and their attitude""" start="00:11:01.283" video="qanda-guile" id="subtitle"]]
-[[!template text="""was generally cautiously optimistic. As in, it's not""" start="00:11:01.283" video="qanda-guile" id="subtitle"]]
-[[!template text="""something they, it's somewhat political, they didn't want""" start="00:11:14.573" video="qanda-guile" id="subtitle"]]
-[[!template text="""to get into it, but they didn't think that it was a bad idea,""" start="00:11:14.573" video="qanda-guile" id="subtitle"]]
-[[!template text="""and they wanted to know more about how it might evolve in the""" start="00:11:14.573" video="qanda-guile" id="subtitle"]]
-[[!template text="""future. I can comment that Eli Zaretsky, who I believe is the""" start="00:11:14.573" video="qanda-guile" id="subtitle"]]
-[[!template text="""current Emacs maintainer, is very concerned about""" start="00:11:27.573" video="qanda-guile" id="subtitle"]]
-[[!template text="""cross-platform compatibility. And so if I can guess at his""" start="00:11:27.573" video="qanda-guile" id="subtitle"]]
-[[!template text="""priorities correctly, I think that that's something that""" start="00:11:40.437" video="qanda-guile" id="subtitle"]]
-[[!template text="""we'll have to make sure is rock solid before we propose any""" start="00:11:40.437" video="qanda-guile" id="subtitle"]]
-[[!template text="""kind of upstreaming of Gala Emacs. but in general""" start="00:11:40.437" video="qanda-guile" id="subtitle"]]
-[[!template text="""maintainers have been cautious but curious. So I just""" start="00:11:57.561" video="qanda-guile" id="subtitle"]]
-[[!template text="""wanted to break in and note at this point that as lives I""" start="00:12:02.846" video="qanda-guile" id="subtitle"]]
-[[!template text="""didn't sorry I couldn't do so more gracefully while we were""" start="00:12:02.846" video="qanda-guile" id="subtitle"]]
-[[!template text="""still on stream but I wanted to let you know that just as of 10""" start="00:12:02.846" video="qanda-guile" id="subtitle"]]
-[[!template text="""seconds ago or so we've had to cut away into our next talk but""" start="00:12:02.846" video="qanda-guile" id="subtitle"]]
-[[!template text="""we can keep going here as long as we like. Okay, let's wrap up.""" start="00:12:02.846" video="qanda-guile" id="subtitle"]]
-[[!template text="""There's only a couple questions left on the pad, so I'll""" start="00:12:22.376" video="qanda-guile" id="subtitle"]]
-[[!template text="""answer those, and then I'll be available on IRC. So, the next""" start="00:12:22.376" video="qanda-guile" id="subtitle"]]
-[[!template text="""question is whether GAL Emacs will be able to collaborate""" start="00:12:29.578" video="qanda-guile" id="subtitle"]]
-[[!template text="""with projects like Gypsum and""" start="00:12:29.578" video="qanda-guile" id="subtitle"]]
-[[!template text="""the native compilation projects or the pre-scheme""" start="00:12:29.578" video="qanda-guile" id="subtitle"]]
-[[!template text="""efforts. Oh, yes, that is one of the things I forgot to bring""" start="00:12:29.578" video="qanda-guile" id="subtitle"]]
-[[!template text="""up in my talk. So, first of all, Gypsum is approaching a""" start="00:12:45.622" video="qanda-guile" id="subtitle"]]
-[[!template text="""similar idea from a different direction. And we clearly""" start="00:12:50.463" video="qanda-guile" id="subtitle"]]
-[[!template text="""have a different focus. My focus is on improving Emacs Lisp""" start="00:12:56.848" video="qanda-guile" id="subtitle"]]
-[[!template text="""and making Emacs itself better by integrating Guile eLisp""" start="00:13:00.391" video="qanda-guile" id="subtitle"]]
-[[!template text="""and Emacs, rather than replacing eLisp or deprecating it in""" start="00:13:00.391" video="qanda-guile" id="subtitle"]]
-[[!template text="""any way. But given gypsum's requirements, I do think that we""" start="00:13:00.391" video="qanda-guile" id="subtitle"]]
-[[!template text="""could share a lot of code required for emulating basic Emacs""" start="00:13:17.448" video="qanda-guile" id="subtitle"]]
-[[!template text="""functionality. And this could even become interesting if""" start="00:13:17.448" video="qanda-guile" id="subtitle"]]
-[[!template text="""we get to the point of rewriting parts of Emacs in Lisp. With""" start="00:13:27.659" video="qanda-guile" id="subtitle"]]
-[[!template text="""respect to the native compilation effort, I'm familiar""" start="00:13:35.822" video="qanda-guile" id="subtitle"]]
-[[!template text="""with it. I'm not that impressed with the results of it. It's a""" start="00:13:35.822" video="qanda-guile" id="subtitle"]]
-[[!template text="""very impressive effort, but as far as I can tell, it's""" start="00:13:45.746" video="qanda-guile" id="subtitle"]]
-[[!template text="""accelerating a bytecode interpreter that just simply has""" start="00:13:45.746" video="qanda-guile" id="subtitle"]]
-[[!template text="""an out-of-date design, to be quite blunt. It's possible""" start="00:13:45.746" video="qanda-guile" id="subtitle"]]
-[[!template text="""that Emacs's JIT has ideas that Guile should adopt, like""" start="00:14:01.711" video="qanda-guile" id="subtitle"]]
-[[!template text="""perhaps libGCC JIT might perhaps be better than GNU""" start="00:14:04.497" video="qanda-guile" id="subtitle"]]
-[[!template text="""Lightning, which is a relatively simple JIT that Guile""" start="00:14:04.497" video="qanda-guile" id="subtitle"]]
-[[!template text="""uses.""" start="00:14:04.497" video="qanda-guile" id="subtitle"]]
-[[!template text="""But it doesn't have to have a direct relationship to Guile""" start="00:14:21.995" video="qanda-guile" id="subtitle"]]
-[[!template text="""Emacs. And as far as pre-scheme goes, I have been watching""" start="00:14:21.995" video="qanda-guile" id="subtitle"]]
-[[!template text="""Flat Watson's work on pre-scheme with great interest""" start="00:14:27.373" video="qanda-guile" id="subtitle"]]
-[[!template text="""because Scheme 48 used to be my favorite implementation.""" start="00:14:27.373" video="qanda-guile" id="subtitle"]]
-[[!template text="""And I do think that it could be, it's a tool that we should look""" start="00:14:41.102" video="qanda-guile" id="subtitle"]]
-[[!template text="""at when we're thinking about moving functionality into""" start="00:14:41.102" video="qanda-guile" id="subtitle"]]
-[[!template text="""Lisp and could certainly make it easier to upstream some of""" start="00:14:41.102" video="qanda-guile" id="subtitle"]]
-[[!template text="""the work we may end up doing.""" start="00:14:41.102" video="qanda-guile" id="subtitle"]]
-[[!template text="""All right, do we have more questions?""" start="00:15:01.707" video="qanda-guile" id="subtitle"]]
-[[!template text="""There's a question about SICL and SBCL. I think I answered""" start="00:15:07.992" video="qanda-guile" id="subtitle"]]
-[[!template text="""that earlier. It should help us implement Common Lisp when""" start="00:15:11.135" video="qanda-guile" id="subtitle"]]
-[[!template text="""it comes to high-level features and the various large""" start="00:15:14.417" video="qanda-guile" id="subtitle"]]
-[[!template text="""subcomponents of Common Lisp. Another important factor is""" start="00:15:14.417" video="qanda-guile" id="subtitle"]]
-[[!template text="""that Guile already has decent support for the Common Lisp""" start="00:15:27.328" video="qanda-guile" id="subtitle"]]
-[[!template text="""object system. Without that, it would be far more""" start="00:15:27.328" video="qanda-guile" id="subtitle"]]
-[[!template text="""difficult. But I do expect that we can share code with other""" start="00:15:33.912" video="qanda-guile" id="subtitle"]]
-[[!template text="""Common Lisp implementations. I've personally rated""" start="00:15:37.854" video="qanda-guile" id="subtitle"]]
-[[!template text="""Common Lisp compiler code when working on Guile Hoot, for""" start="00:15:43.718" video="qanda-guile" id="subtitle"]]
-[[!template text="""example. So there are definitely places where they can""" start="00:15:43.718" video="qanda-guile" id="subtitle"]]
-[[!template text="""contribute.""" start="00:15:50.242" video="qanda-guile" id="subtitle"]]
-[[!template text="""Regarding the Hoot project and its relationship to""" start="00:15:59.802" video="qanda-guile" id="subtitle"]]
-[[!template text="""Galimax, it's a purely speculative thing. First of all,""" start="00:15:59.802" video="qanda-guile" id="subtitle"]]
-[[!template text="""Hoot is only tested on Scheme-to-WebAssembly""" start="00:16:10.385" video="qanda-guile" id="subtitle"]]
-[[!template text="""compilations. I've heard some suggestions that some uses""" start="00:16:10.385" video="qanda-guile" id="subtitle"]]
-[[!template text="""of Tree.io may not be compatible with the Hoot compiler. I'm""" start="00:16:19.448" video="qanda-guile" id="subtitle"]]
-[[!template text="""not sure if that's the case or not.""" start="00:16:26.590" video="qanda-guile" id="subtitle"]]
-[[!template text="""But it is a complete enough project that if Emacs is, say, 90%""" start="00:16:33.178" video="qanda-guile" id="subtitle"]]
-[[!template text="""Lisp, there's only a few thousand lines of C code to""" start="00:16:33.178" video="qanda-guile" id="subtitle"]]
-[[!template text="""implement, then it would be entirely practical to compile""" start="00:16:33.178" video="qanda-guile" id="subtitle"]]
-[[!template text="""Emacs WebAssembly, as long as we had a back end, like one""" start="00:16:33.178" video="qanda-guile" id="subtitle"]]
-[[!template text="""based on the browser's document object model, or some sort""" start="00:16:33.178" video="qanda-guile" id="subtitle"]]
-[[!template text="""of graphical interface through WASI. And that may have some""" start="00:16:33.178" video="qanda-guile" id="subtitle"]]
-[[!template text="""interesting applications for portability to unusual""" start="00:17:02.678" video="qanda-guile" id="subtitle"]]
-[[!template text="""platforms. It may even bring performance advantages in""" start="00:17:02.678" video="qanda-guile" id="subtitle"]]
-[[!template text="""cases where the WebAssembly implementation is connected""" start="00:17:08.743" video="qanda-guile" id="subtitle"]]
-[[!template text="""to a tracing just-in-time compiler, because that may be""" start="00:17:15.669" video="qanda-guile" id="subtitle"]]
-[[!template text="""more appropriate to the high level of dynamism the Emacs""" start="00:17:15.669" video="qanda-guile" id="subtitle"]]
-[[!template text="""list has than the kind of simple template JITs that both""" start="00:17:15.669" video="qanda-guile" id="subtitle"]]
-[[!template text="""Emacs and Guile are using.""" start="00:17:15.669" video="qanda-guile" id="subtitle"]]
-[[!template text="""What a fascinating point. Just to break into active""" start="00:17:38.440" video="qanda-guile" id="subtitle"]]
-[[!template text="""listening a little so this doesn't, to you, feel like you're""" start="00:17:39.420" video="qanda-guile" id="subtitle"]]
-[[!template text="""talking to yourself. I can see from chat and the questions""" start="00:17:39.420" video="qanda-guile" id="subtitle"]]
-[[!template text="""still coming in, you know, comments. You know, it isn't, but""" start="00:17:44.764" video="qanda-guile" id="subtitle"]]
-[[!template text="""I just want you to be able to hear and feel that. Yeah, great,""" start="00:17:50.227" video="qanda-guile" id="subtitle"]]
-[[!template text="""great point there. All right. Thank you. And yes, if there""" start="00:17:54.610" video="qanda-guile" id="subtitle"]]
-[[!template text="""are more questions, keep throwing them at me. I should""" start="00:17:59.993" video="qanda-guile" id="subtitle"]]
-[[!template text="""probably also mention I will have to jump out myself, but the""" start="00:18:04.441" video="qanda-guile" id="subtitle"]]
-[[!template text="""recording will automatically end when we all jump out or""" start="00:18:04.441" video="qanda-guile" id="subtitle"]]
-[[!template text="""just drop a note anywhere, ping me, whatever. And I'll come""" start="00:18:04.441" video="qanda-guile" id="subtitle"]]
-[[!template text="""along and shut off the recording and we'll trim it up before""" start="00:18:14.833" video="qanda-guile" id="subtitle"]]
-[[!template text="""we publish it. I'm looking forward to reading through""" start="00:18:14.833" video="qanda-guile" id="subtitle"]]
-[[!template text="""anything I do miss. Thank you. Sounds good.""" start="00:18:18.977" video="qanda-guile" id="subtitle"]]
-[[!template text="""All right, I'm not seeing changes in the etherpad. So I'm""" start="00:19:03.260" video="qanda-guile" id="subtitle"]]
-[[!template text="""going to close this in maybe 30 seconds if there are no more""" start="00:19:07.583" video="qanda-guile" id="subtitle"]]
-[[!template text="""additions. Thanks, everyone, for the interesting and very""" start="00:19:07.583" video="qanda-guile" id="subtitle"]]
-[[!template text="""pointed questions on some of the most significant areas. I""" start="00:19:16.408" video="qanda-guile" id="subtitle"]]
-[[!template text="""appreciate everyone's feedback. I'm glad this provoked so""" start="00:19:26.994" video="qanda-guile" id="subtitle"]]
-[[!template text="""much curiosity in people.""" start="00:19:30.771" video="qanda-guile" id="subtitle"]]
-[[!template text="""Thank you, Yannicka.""" start="00:19:43.500" video="qanda-guile" id="subtitle"]]
-[[!template text="""All right, I think we are done with the Q&A session, so I'm""" start="00:19:46.842" video="qanda-guile" id="subtitle"]]
-[[!template text="""going to close this BBB and we can continue with the rest of""" start="00:19:46.842" video="qanda-guile" id="subtitle"]]
-[[!template text="""EmacsConf.""" start="00:19:46.842" video="qanda-guile" id="subtitle"]]
-[[!template text="""You are currently the only person in this conference.""" start="00:20:02.830" video="qanda-guile" id="subtitle"]]
+[[!template text="""compiler, and so on, as well as providing its own fairly""" start="00:06:05.080" video="qanda-guile" id="subtitle"]]
+[[!template text="""rich, but still far less complete than Emacs's standard""" start="00:06:09.720" video="qanda-guile" id="subtitle"]]
+[[!template text="""library, in terms of Ice9 and other system libraries""" start="00:06:15.000" video="qanda-guile" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Q: A Common Lisp implementation for Guile sounds really cool! Is there already work on this underway?""" start="00:06:19.240" video="qanda-guile" id="subtitle"]]</div>[[!template text="""shipped with Guile. The next question is on a Common Lisp""" start="00:06:19.240" video="qanda-guile" id="subtitle"]]
+[[!template text="""implementation for Guile, and whether work on it is""" start="00:06:24.360" video="qanda-guile" id="subtitle"]]
+[[!template text="""underway. In fact, work on it is already underway. I've been""" start="00:06:27.760" video="qanda-guile" id="subtitle"]]
+[[!template text="""working on it on and off in my spare time for a couple of years""" start="00:06:33.080" video="qanda-guile" id="subtitle"]]
+[[!template text="""now. I've gotten, I think, a couple of chapters of the""" start="00:06:36.400" video="qanda-guile" id="subtitle"]]
+[[!template text="""hyperspectin, if you want to measure it that way. But I've""" start="00:06:40.040" video="qanda-guile" id="subtitle"]]
+[[!template text="""been focusing my work more on research and on what we need to""" start="00:06:43.520" video="qanda-guile" id="subtitle"]]
+[[!template text="""do to have a LISP environment, a polyglot LISP environment,""" start="00:06:51.720" video="qanda-guile" id="subtitle"]]
+[[!template text="""wherein the features of Common Lisp and Scheme and Emacs""" start="00:06:57.400" video="qanda-guile" id="subtitle"]]
+[[!template text="""Lisp can all work easily and ergonomically together. So""" start="00:07:02.760" video="qanda-guile" id="subtitle"]]
+[[!template text="""this involves things like the question of Lisps having""" start="00:07:08.920" video="qanda-guile" id="subtitle"]]
+[[!template text="""Lisp1s versus Lisp2s. That is, a Lisp1-like scheme has one""" start="00:07:13.880" video="qanda-guile" id="subtitle"]]
+[[!template text="""namespace, like every variable is a single name that can""" start="00:07:22.080" video="qanda-guile" id="subtitle"]]
+[[!template text="""refer to one value, whereas in Lisp2s like EmacsLisp,""" start="00:07:27.600" video="qanda-guile" id="subtitle"]]
+[[!template text="""symbols can have different definitions as functions and as""" start="00:07:32.000" video="qanda-guile" id="subtitle"]]
+[[!template text="""variables, as well as other namespaces like property""" start="00:07:37.400" video="qanda-guile" id="subtitle"]]
+[[!template text="""lists. So Kent Pittman has some interesting thoughts on""" start="00:07:41.120" video="qanda-guile" id="subtitle"]]
+[[!template text="""this that I've been looking into. Another issue is the""" start="00:07:45.720" video="qanda-guile" id="subtitle"]]
+[[!template text="""interaction between package and module systems. So I don't""" start="00:07:51.040" video="qanda-guile" id="subtitle"]]
+[[!template text="""have really anything ready to publish just yet on this, but I""" start="00:07:57.520" video="qanda-guile" id="subtitle"]]
+[[!template text="""have been looking into the background issues of""" start="00:08:01.840" video="qanda-guile" id="subtitle"]]
+[[!template text="""integrating this into Guile in a useful way.""" start="00:08:05.280" video="qanda-guile" id="subtitle"]]
+[[!template text="""And let's see, one other thing I was going to mention.""" start="00:08:08.120" video="qanda-guile" id="subtitle"]]
+[[!template text="""Okay, I've lost it. But yeah, there is some work already. And""" start="00:08:15.720" video="qanda-guile" id="subtitle"]]
+[[!template text="""if people are interested in moving Emacs in this direction,""" start="00:08:27.680" video="qanda-guile" id="subtitle"]]
+[[!template text="""then we'll certainly start working on it in earnest.""" start="00:08:30.400" video="qanda-guile" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Q: Did switching from guile 2 to 3 give any performance benefits?""" start="00:08:34.480" video="qanda-guile" id="subtitle"]]</div>[[!template text="""Another question, did switching from Guile 2 to 3 give any""" start="00:08:34.480" video="qanda-guile" id="subtitle"]]
+[[!template text="""performance benefits? Well, honestly, we're not really""" start="00:08:41.120" video="qanda-guile" id="subtitle"]]
+[[!template text="""benchmarking stuff here because Guile Emacs has so much""" start="00:08:46.280" video="qanda-guile" id="subtitle"]]
+[[!template text="""overhead from structuring the compiler to closely conform""" start="00:08:50.760" video="qanda-guile" id="subtitle"]]
+[[!template text="""to Emacs in terms of like even things as simple as metadata""" start="00:08:55.760" video="qanda-guile" id="subtitle"]]
+[[!template text="""layout for variable information.""" start="00:08:59.880" video="qanda-guile" id="subtitle"]]
+[[!template text="""So I haven't actually noticed a perceptual change. I would""" start="00:09:03.880" video="qanda-guile" id="subtitle"]]
+[[!template text="""guess based on the Gabriel benchmark results that is""" start="00:09:12.000" video="qanda-guile" id="subtitle"]]
+[[!template text="""benefited from what somewhat from Gal 3's performance""" start="00:09:15.360" video="qanda-guile" id="subtitle"]]
+[[!template text="""improvements but for Emacs I just don't know yet and working""" start="00:09:21.400" video="qanda-guile" id="subtitle"]]
+[[!template text="""on the compiler's code generation and lowering the""" start="00:09:27.480" video="qanda-guile" id="subtitle"]]
+[[!template text="""overhead is going to be the thing that provides the most""" start="00:09:30.200" video="qanda-guile" id="subtitle"]]
+[[!template text="""return for improving that aspect of Gal Emacs.""" start="00:09:33.720" video="qanda-guile" id="subtitle"]]
+[[!template text="""Let's see, I see SICL mentioned here, as well as SPCL. And it""" start="00:09:37.320" video="qanda-guile" id="subtitle"]]
+[[!template text="""could certainly help with the implementation of""" start="00:09:54.080" video="qanda-guile" id="subtitle"]]
+[[!template text="""Commonwealth and Guile, because a lot of the basic stuff is""" start="00:09:56.920" video="qanda-guile" id="subtitle"]]
+[[!template text="""just providing a new interface to some bit of""" start="00:10:01.520" video="qanda-guile" id="subtitle"]]
+[[!template text="""functionality. Like the sequence library, it's mostly""" start="00:10:05.560" video="qanda-guile" id="subtitle"]]
+[[!template text="""stuff that we already have through SR5 and so on. The""" start="00:10:08.880" video="qanda-guile" id="subtitle"]]
+[[!template text="""difficult, well, not the difficult but the time consuming""" start="00:10:13.280" video="qanda-guile" id="subtitle"]]
+[[!template text="""parts are going to be all the little DSL sitcom on this path""" start="00:10:16.880" video="qanda-guile" id="subtitle"]]
+[[!template text="""packed up inside it like pretty printing format loop and so""" start="00:10:21.600" video="qanda-guile" id="subtitle"]]
+[[!template text="""on. It's for those high-level features that I think we could""" start="00:10:27.000" video="qanda-guile" id="subtitle"]]
+[[!template text="""potentially share code with other Common Lisp""" start="00:10:32.360" video="qanda-guile" id="subtitle"]]
+[[!template text="""implementations. And Common Lisp implementations do tend""" start="00:10:34.960" video="qanda-guile" id="subtitle"]]
+[[!template text="""to be permissively licensed, SPCL's public domain, for""" start="00:10:39.040" video="qanda-guile" id="subtitle"]]
+[[!template text="""example, so there's no barrier to sharing code with them.""" start="00:10:43.240" video="qanda-guile" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Q: Do you know if the Emacs maintainers are interested in switching to Guile as the engine for Emacs Lisp?""" start="00:10:46.440" video="qanda-guile" id="subtitle"]]</div>[[!template text="""There's another question about whether the Emacs""" start="00:10:46.440" video="qanda-guile" id="subtitle"]]
+[[!template text="""maintainers are interested in switching to Guile as the""" start="00:10:52.720" video="qanda-guile" id="subtitle"]]
+[[!template text="""engine for Emacs Lisp. I can't speak for the current""" start="00:10:55.680" video="qanda-guile" id="subtitle"]]
+[[!template text="""maintainers. I can say that people have talked to previous""" start="00:10:59.200" video="qanda-guile" id="subtitle"]]
+[[!template text="""Emacs maintainers about the whole idea, and their attitude""" start="00:11:05.440" video="qanda-guile" id="subtitle"]]
+[[!template text="""was generally cautiously optimistic. As in, it's not""" start="00:11:10.440" video="qanda-guile" id="subtitle"]]
+[[!template text="""something they, it's somewhat political, they didn't want""" start="00:11:15.480" video="qanda-guile" id="subtitle"]]
+[[!template text="""to get into it, but they didn't think that it was a bad idea,""" start="00:11:18.800" video="qanda-guile" id="subtitle"]]
+[[!template text="""and they wanted to know more about how it might evolve in the""" start="00:11:23.480" video="qanda-guile" id="subtitle"]]
+[[!template text="""future. I can comment that Eli Zaretsky, who I believe is the""" start="00:11:25.920" video="qanda-guile" id="subtitle"]]
+[[!template text="""current Emacs maintainer, is very concerned about""" start="00:11:31.880" video="qanda-guile" id="subtitle"]]
+[[!template text="""cross-platform compatibility. And so if I can guess at his""" start="00:11:36.880" video="qanda-guile" id="subtitle"]]
+[[!template text="""priorities correctly, I think that that's something that""" start="00:11:44.680" video="qanda-guile" id="subtitle"]]
+[[!template text="""we'll have to make sure is rock solid before we propose any""" start="00:11:48.520" video="qanda-guile" id="subtitle"]]
+[[!template text="""kind of upstreaming of Gala Emacs. but in general""" start="00:11:52.600" video="qanda-guile" id="subtitle"]]
+[[!template text="""maintainers have been cautious but curious. So I just""" start="00:11:58.360" video="qanda-guile" id="subtitle"]]
+[[!template text="""wanted to break in and note at this point that as lives I""" start="00:12:03.720" video="qanda-guile" id="subtitle"]]
+[[!template text="""didn't sorry I couldn't do so more gracefully while we were""" start="00:12:06.720" video="qanda-guile" id="subtitle"]]
+[[!template text="""still on stream but I wanted to let you know that just as of 10""" start="00:12:09.520" video="qanda-guile" id="subtitle"]]
+[[!template text="""seconds ago or so we've had to cut away into our next talk but""" start="00:12:13.440" video="qanda-guile" id="subtitle"]]
+[[!template text="""we can keep going here as long as we like. Okay, let's wrap up.""" start="00:12:17.400" video="qanda-guile" id="subtitle"]]
+[[!template text="""There's only a couple questions left on the pad, so I'll""" start="00:12:22.200" video="qanda-guile" id="subtitle"]]
+[[!template text="""answer those, and then I'll be available on IRC. So, the next""" start="00:12:25.400" video="qanda-guile" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Q: Do you think guile-emacs will be able to use or (collaborate with) some of the other awesome projects around Emacs Lisp?""" start="00:12:30.000" video="qanda-guile" id="subtitle"]]</div>[[!template text="""question is whether Guile Emacs will be able to collaborate""" start="00:12:30.000" video="qanda-guile" id="subtitle"]]
+[[!template text="""with projects like Gypsum and""" start="00:12:33.320" video="qanda-guile" id="subtitle"]]
+[[!template text="""the native compilation projects or the pre-scheme""" start="00:12:35.960" video="qanda-guile" id="subtitle"]]
+[[!template text="""efforts. Oh, yes, that is one of the things I forgot to bring""" start="00:12:44.320" video="qanda-guile" id="subtitle"]]
+[[!template text="""up in my talk. So, first of all, Gypsum is approaching a""" start="00:12:48.040" video="qanda-guile" id="subtitle"]]
+[[!template text="""similar idea from a different direction. And we clearly""" start="00:12:53.200" video="qanda-guile" id="subtitle"]]
+[[!template text="""have a different focus. My focus is on improving Emacs Lisp""" start="00:12:58.200" video="qanda-guile" id="subtitle"]]
+[[!template text="""and making Emacs itself better by integrating Guile Elisp""" start="00:13:03.920" video="qanda-guile" id="subtitle"]]
+[[!template text="""and Emacs, rather than replacing eLisp or deprecating it in""" start="00:13:09.280" video="qanda-guile" id="subtitle"]]
+[[!template text="""any way. But given gypsum's requirements, I do think that we""" start="00:13:15.160" video="qanda-guile" id="subtitle"]]
+[[!template text="""could share a lot of code required for emulating basic Emacs""" start="00:13:20.160" video="qanda-guile" id="subtitle"]]
+[[!template text="""functionality. And this could even become interesting if""" start="00:13:26.440" video="qanda-guile" id="subtitle"]]
+[[!template text="""we get to the point of rewriting parts of Emacs in Lisp. With""" start="00:13:29.840" video="qanda-guile" id="subtitle"]]
+[[!template text="""respect to the native compilation effort, I'm familiar""" start="00:13:35.800" video="qanda-guile" id="subtitle"]]
+[[!template text="""with it. I'm not that impressed with the results of it. It's a""" start="00:13:41.280" video="qanda-guile" id="subtitle"]]
+[[!template text="""very impressive effort, but as far as I can tell, it's""" start="00:13:45.880" video="qanda-guile" id="subtitle"]]
+[[!template text="""accelerating a bytecode interpreter that just simply has""" start="00:13:52.360" video="qanda-guile" id="subtitle"]]
+[[!template text="""an out-of-date design, to be quite blunt. It's possible""" start="00:13:57.240" video="qanda-guile" id="subtitle"]]
+[[!template text="""that Emacs's JIT has ideas that Guile should adopt, like""" start="00:14:02.720" video="qanda-guile" id="subtitle"]]
+[[!template text="""perhaps libgccjit might perhaps be better than GNU""" start="00:14:08.920" video="qanda-guile" id="subtitle"]]
+[[!template text="""Lightning, which is a relatively simple JIT that Guile""" start="00:14:14.040" video="qanda-guile" id="subtitle"]]
+[[!template text="""uses.""" start="00:14:17.000" video="qanda-guile" id="subtitle"]]
+[[!template text="""But it doesn't have to have a direct relationship to Guile""" start="00:14:17.640" video="qanda-guile" id="subtitle"]]
+[[!template text="""Emacs. And as far as pre-scheme goes, I have been watching""" start="00:14:25.840" video="qanda-guile" id="subtitle"]]
+[[!template text="""Flat Watson's work on pre-scheme with great interest""" start="00:14:31.160" video="qanda-guile" id="subtitle"]]
+[[!template text="""because Scheme 48 used to be my favorite implementation.""" start="00:14:36.200" video="qanda-guile" id="subtitle"]]
+[[!template text="""And I do think that it could be, it's a tool that we should look""" start="00:14:40.000" video="qanda-guile" id="subtitle"]]
+[[!template text="""at when we're thinking about moving functionality into""" start="00:14:44.920" video="qanda-guile" id="subtitle"]]
+[[!template text="""Lisp and could certainly make it easier to upstream some of""" start="00:14:47.880" video="qanda-guile" id="subtitle"]]
+[[!template text="""the work we may end up doing.""" start="00:14:53.200" video="qanda-guile" id="subtitle"]]
+[[!template text="""All right, do we have more questions?""" start="00:14:54.520" video="qanda-guile" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Q: SBCL, ...You mentioned Robert Strandh's SICL along with SBCL---does that work help with the implementation of CL in Guile?""" start="00:15:04.200" video="qanda-guile" id="subtitle"]]</div>[[!template text="""There's a question about SICL and SBCL. I think I answered""" start="00:15:04.200" video="qanda-guile" id="subtitle"]]
+[[!template text="""that earlier. It should help us implement Common Lisp when""" start="00:15:13.160" video="qanda-guile" id="subtitle"]]
+[[!template text="""it comes to high-level features and the various large""" start="00:15:17.520" video="qanda-guile" id="subtitle"]]
+[[!template text="""subcomponents of Common Lisp. Another important factor is""" start="00:15:25.000" video="qanda-guile" id="subtitle"]]
+[[!template text="""that Guile already has decent support for the Common Lisp""" start="00:15:28.760" video="qanda-guile" id="subtitle"]]
+[[!template text="""object system. Without that, it would be far more""" start="00:15:32.280" video="qanda-guile" id="subtitle"]]
+[[!template text="""difficult. But I do expect that we can share code with other""" start="00:15:35.800" video="qanda-guile" id="subtitle"]]
+[[!template text="""Common Lisp implementations. I've personally rated""" start="00:15:41.920" video="qanda-guile" id="subtitle"]]
+[[!template text="""Common Lisp compiler code when working on Guile Hoot, for""" start="00:15:44.800" video="qanda-guile" id="subtitle"]]
+[[!template text="""example. So there are definitely places where they can""" start="00:15:49.200" video="qanda-guile" id="subtitle"]]
+[[!template text="""contribute.""" start="00:15:52.960" video="qanda-guile" id="subtitle"]]
+[[!template text="""Regarding the Hoot project and its relationship to""" start="00:15:54.040" video="qanda-guile" id="subtitle"]]
+[[!template text="""Galimax, it's a purely speculative thing. First of all,""" start="00:16:02.840" video="qanda-guile" id="subtitle"]]
+[[!template text="""Hoot is only tested on Scheme-to-WebAssembly""" start="00:16:11.080" video="qanda-guile" id="subtitle"]]
+[[!template text="""compilations. I've heard some suggestions that some uses""" start="00:16:17.080" video="qanda-guile" id="subtitle"]]
+[[!template text="""of Tree.io may not be compatible with the Hoot compiler. I'm""" start="00:16:22.600" video="qanda-guile" id="subtitle"]]
+[[!template text="""not sure if that's the case or not.""" start="00:16:26.440" video="qanda-guile" id="subtitle"]]
+[[!template text="""But it is a complete enough project that if Emacs is, say, 90%""" start="00:16:30.000" video="qanda-guile" id="subtitle"]]
+[[!template text="""Lisp, there's only a few thousand lines of C code to""" start="00:16:41.200" video="qanda-guile" id="subtitle"]]
+[[!template text="""implement, then it would be entirely practical to compile""" start="00:16:45.120" video="qanda-guile" id="subtitle"]]
+[[!template text="""Emacs WebAssembly, as long as we had a back end, like one""" start="00:16:49.160" video="qanda-guile" id="subtitle"]]
+[[!template text="""based on the browser's document object model, or some sort""" start="00:16:54.160" video="qanda-guile" id="subtitle"]]
+[[!template text="""of graphical interface through WASI. And that may have some""" start="00:16:58.120" video="qanda-guile" id="subtitle"]]
+[[!template text="""interesting applications for portability to unusual""" start="00:17:04.440" video="qanda-guile" id="subtitle"]]
+[[!template text="""platforms. It may even bring performance advantages in""" start="00:17:07.360" video="qanda-guile" id="subtitle"]]
+[[!template text="""cases where the WebAssembly implementation is connected""" start="00:17:11.360" video="qanda-guile" id="subtitle"]]
+[[!template text="""to a tracing just-in-time compiler, because that may be""" start="00:17:18.960" video="qanda-guile" id="subtitle"]]
+[[!template text="""more appropriate to the high level of dynamism the Emacs""" start="00:17:22.760" video="qanda-guile" id="subtitle"]]
+[[!template text="""list has than the kind of simple template JITs that both""" start="00:17:26.840" video="qanda-guile" id="subtitle"]]
+[[!template text="""Emacs and Guile are using.""" start="00:17:32.440" video="qanda-guile" id="subtitle"]]
+[[!template text="""What a fascinating point. Just to break into active""" start="00:17:34.520" video="qanda-guile" id="subtitle"]]
+[[!template text="""listening a little so this doesn't, to you, feel like you're""" start="00:17:39.800" video="qanda-guile" id="subtitle"]]
+[[!template text="""talking to yourself. I can see from chat and the questions""" start="00:17:44.000" video="qanda-guile" id="subtitle"]]
+[[!template text="""still coming in, you know, comments. You know, it isn't, but""" start="00:17:46.920" video="qanda-guile" id="subtitle"]]
+[[!template text="""I just want you to be able to hear and feel that. Yeah, great,""" start="00:17:51.440" video="qanda-guile" id="subtitle"]]
+[[!template text="""great point there. All right. Thank you. And yes, if there""" start="00:17:55.000" video="qanda-guile" id="subtitle"]]
+[[!template text="""are more questions, keep throwing them at me. I should""" start="00:18:00.680" video="qanda-guile" id="subtitle"]]
+[[!template text="""probably also mention I will have to jump out myself, but the""" start="00:18:04.680" video="qanda-guile" id="subtitle"]]
+[[!template text="""recording will automatically end when we all jump out or""" start="00:18:08.000" video="qanda-guile" id="subtitle"]]
+[[!template text="""just drop a note anywhere, ping me, whatever. And I'll come""" start="00:18:10.800" video="qanda-guile" id="subtitle"]]
+[[!template text="""along and shut off the recording and we'll trim it up before""" start="00:18:15.200" video="qanda-guile" id="subtitle"]]
+[[!template text="""we publish it. I'm looking forward to reading through""" start="00:18:18.440" video="qanda-guile" id="subtitle"]]
+[[!template text="""anything I do miss. Thank you. Sounds good.""" start="00:18:21.880" video="qanda-guile" id="subtitle"]]
+[[!template text="""All right, I'm not seeing changes in the etherpad. So I'm""" start="00:18:30.200" video="qanda-guile" id="subtitle"]]
+[[!template text="""going to close this in maybe 30 seconds if there are no more""" start="00:19:08.440" video="qanda-guile" id="subtitle"]]
+[[!template text="""additions. Thanks, everyone, for the interesting and very""" start="00:19:15.000" video="qanda-guile" id="subtitle"]]
+[[!template text="""pointed questions on some of the most significant areas. I""" start="00:19:21.160" video="qanda-guile" id="subtitle"]]
+[[!template text="""appreciate everyone's feedback. I'm glad this provoked so""" start="00:19:26.400" video="qanda-guile" id="subtitle"]]
+[[!template text="""much curiosity in people.""" start="00:19:31.920" video="qanda-guile" id="subtitle"]]
+[[!template text="""Thank you, janneke.""" start="00:19:33.680" video="qanda-guile" id="subtitle"]]
+[[!template text="""All right, I think we are done with the Q&A session, so I'm""" start="00:19:44.520" video="qanda-guile" id="subtitle"]]
+[[!template text="""going to close this BBB and we can continue with the rest of""" start="00:19:51.440" video="qanda-guile" id="subtitle"]]
+[[!template text="""EmacsConf.""" start="00:19:57.200" video="qanda-guile" id="subtitle"]]
+[[!template text="""You are currently the only person in this conference.""" start="00:19:58.720" video="qanda-guile" id="subtitle"]]
</div>Questions or comments? Please e-mail [robin@terpri.org](mailto:robin@terpri.org?subject=Comment%20for%20EmacsConf%202023%20guile%3A%20Beguiling%20Emacs%3A%20Guile-Emacs%20relaunched%21)
diff --git a/2024/info/guile-before.md b/2024/info/guile-before.md
index 4eec0cbc..19d52153 100644
--- a/2024/info/guile-before.md
+++ b/2024/info/guile-before.md
@@ -2,12 +2,18 @@
[[!toc ]]
Format: 16-min talk ; Q&A: BigBlueButton conference room
Etherpad: <https://pad.emacsconf.org/2024-guile>
-Status: Q&A finished, IRC and pad will be archived on this page
+Status: TO_CAPTION_QA
+# Talk
+
<div class="vid"><video controls preload="none" id="guile-mainVideo"><source src="https://media.emacsconf.org/2024/emacsconf-2024-guile--beguiling-emacs-guileemacs-relaunched--robin-templeton--main.webm" />captions="""<track label="English" kind="captions" srclang="en" src="/2024/captions/emacsconf-2024-guile--beguiling-emacs-guileemacs-relaunched--robin-templeton--main.vtt" default />"""<p><em>Your browser does not support the video tag. Please download the video instead.</em></p></video><div></div>Duration: 15:57 minutes<div class="files resources"><ul><li><a href="https://pad.emacsconf.org/2024-guile">Open Etherpad</a></li><li><a href="https://media.emacsconf.org/2024/emacsconf-2024-guile--beguiling-emacs-guileemacs-relaunched--robin-templeton--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2024/emacsconf-2024-guile--beguiling-emacs-guileemacs-relaunched--robin-templeton--main.vtt">Download --main.vtt</a></li><li><a href="https://media.emacsconf.org/2024/emacsconf-2024-guile--beguiling-emacs-guileemacs-relaunched--robin-templeton--main.webm">Download --main.webm (61MB)</a></li><li><a href="https://media.emacsconf.org/2024/emacsconf-2024-guile--beguiling-emacs-guileemacs-relaunched--robin-templeton--pad.html">Download --pad.html</a></li><li><a href="https://media.emacsconf.org/2024/emacsconf-2024-guile--beguiling-emacs-guileemacs-relaunched--robin-templeton--pad.md">Download --pad.md</a></li><li><a href="https://toobnix.org/w/iizGyFwoAetXBw3Uy67vwj">View on Toobnix</a></li></ul></div></div>
+
+# Q&A
+
+<div class="vid"><video controls preload="none" id="guile-qanda"><source src="https://media.emacsconf.org/2024/emacsconf-2024-guile--beguiling-emacs-guileemacs-relaunched--robin-templeton--answers.webm" />captions="""<track label="English" kind="captions" srclang="en" src="/2024/captions/emacsconf-2024-guile--beguiling-emacs-guileemacs-relaunched--robin-templeton--answers.vtt" default />"""<p><em>Your browser does not support the video tag. Please download the video instead.</em></p></video><div></div><div class="files resources"><ul><li><a href="https://pad.emacsconf.org/2024-guile">Open Etherpad</a></li><li><a href="https://media.emacsconf.org/2024/emacsconf-2024-guile--beguiling-emacs-guileemacs-relaunched--robin-templeton--answers.vtt">Download --answers.vtt</a> (unedited)</li><li><a href="https://media.emacsconf.org/2024/emacsconf-2024-guile--beguiling-emacs-guileemacs-relaunched--robin-templeton--answers.webm">Download --answers.webm (48MB)</a></li></ul></div></div>
# Description
<!-- End of emacsconf-publish-before-page --> \ No newline at end of file
diff --git a/2024/talks/guile.md b/2024/talks/guile.md
index 98e49df8..3c82627b 100644
--- a/2024/talks/guile.md
+++ b/2024/talks/guile.md
@@ -58,6 +58,75 @@ significant role for Emacs within the GNU Project, becoming a central
part of a "Lisp machine for the 21st century".
+# Discussion
+
+## Questions and answers
+
+- Q: About fibers: My understanding is that the problem with making Elisp concurrent is that none of the data structures (buffer, cons, vector, window etc) are concurrency-safe.  How do fibers help with this?
+ - A: Fibers do not provide thread-safety for any of the existing
+ data structures.  They are useful for building things that
+ don\'t use Emacs data structures, like a network client that
+ reads a \"stream\".  Fibers can introduce new data structures
+ that are thread-safe, like \"thread-local buffers\".
+- Q: \<ramin\> You mentnioned that Emacs is roughly 25% written in C.
+ Do you have a rough idea of how much of Guile is written in C? Could
+ it be an improvement to make libguile a dependency of Emacs?
+ - A: The problem is not the quantity of C, but that there is C
+ involved at every single level/layer of computation in Emacs. 
+ This makes it difficult to use concepts like delimited
+ continuations, that can make it easy to implement Emacs concepts
+ more simply.
+ - A: About guile: it\'s about 1/2 C.
+- Q: A Common Lisp implementation for Guile sounds really cool! Is there already work on this underway?
+ - A: Yes, Robin is working on it, but focuses more on research on
+ how to do a polyglot lisp environnement where elisp and
+ common-lisp can work together (with lisp 1 vs lisp 2 issues with
+ different name spaces, package and module system interaction,
+ \...). If you are interested, the guile project will work on it.
+- Q: As someone who\'s kinda new to the concept of Guile, is the
+ primary goal to transpile Emacs Lisp into Guile bytecode rather than
+ primarily focusing on adding support for writing code in Guile\'s
+ Scheme interface in particular? 
+ - A:
+- Q: Did switching from guile 2 to 3 give any performance benefits?
+ - A: Not benchmarking stuff here yet, because guile emacs has too
+ much overhead involved in conforming to Emacs.  Have not noticed
+ a perceptible change.  Based on the Gabriel benchmark results,
+ it might have benefited a  bit, but for Emacs we don\'t know
+ yet.  Lowering the overhead is the best place to focus on to
+ optimize guile-emacs.
+- Q: Do you know if the Emacs maintainers are interested in switching to Guile as the engine for Emacs Lisp?
+ - A: Previous maintainers were cautiously optimistic and
+ interested. Issues might be cross-platform compatibility.
+- Q: Do you think guile-emacs will be able to use or (collaborate
+ with) some of the other awesome projects around Emacs-Lisp, like the
+ gypsum project presented earlier today, or Andrea Corallo\'s efforts
+ to make Emacs-Lisp more suitable for native compilation? Or even
+ something like the renewed PreScheme efforts?
+ - A: Gypsum has a different focus. Guile tries to improve lisp
+ instead of replacing lisp in any way. But some code can be
+ shared, especially if some parts of emacs are rewritten in lisp
+ - A: For libgccjit: it is accelerating the interpreter, which is
+ not great in the first place. So no direct relationship.
+ - A: For prescheme: it  is a useful tool to look at, making it
+ easier to upstream one day.
+- Q: SBCL, \...You mentioned Robert Strandh\'s SICL along with SBCL---does that work help with the implementation of CL in Guile? 
+ - A: Time consuming part are the DSL from common lisp. So they can
+ be used. No plan on sharing code yet, as they are open-source.
+- Q: Can you comment more on relation with hoot project and advantages
+ that might bring to guile-emacs?
+ - A: Hoot is only tested on scheme decompilation. But it is a
+ completely different project. One could image compile emacs to
+ wasm and maybe with a different garbage collector.
+- Q:
+ - A:
+
+## Notes
+
+- [https://guile-emacs.org/](https://guile-emacs.org/){rel="noreferrer noopener"}
+- Some more motivation: avoid FFI to increase performance and allow
+ for more optimizations (including type annotations)
+
[[!inline pages="internal(2024/info/guile-after)" raw="yes"]]