summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--2025/talks/juicemacs.md84
1 files changed, 26 insertions, 58 deletions
diff --git a/2025/talks/juicemacs.md b/2025/talks/juicemacs.md
index ba29b3f6..d724ad33 100644
--- a/2025/talks/juicemacs.md
+++ b/2025/talks/juicemacs.md
@@ -21,11 +21,11 @@ compiler. By introducing a speculative runtime for ELisp, we could
potentially improve ELisp performance even further, with many new
optimization opportunities.
-Juicemacs <sup><a id="fnr.juicemacs" class="footref" href="#fn.juicemacs" role="doc-backlink">1</a></sup> is my work-in-progress toy project
-re-implementing Emacs in Java. At its centre sits an ELisp JIT
-runtime powered by Graal Truffle, a JIT interpreter framework based
-on partial evaluation and Futamura projections. This talk will cover
-the following along with some demonstrations:
+Juicemacs is my work-in-progress toy project re-implementing Emacs in
+Java. At its centre sits an ELisp JIT runtime powered by Graal
+Truffle, a JIT interpreter framework based on partial evaluation and
+Futamura projections. This talk will cover the following along with
+some demonstrations:
- What is Juicemacs and its ambition? How compatible is it (or does
it plan to be) with GNU Emacs and how feature-complete is it now?
@@ -33,59 +33,27 @@ the following along with some demonstrations:
- What is speculative compilation? How is it useful for an ELisp JIT
runtime?
-- What is Truffle and partial evaluation? What is needed if we are to
- implement a speculative runtime in C without Truffle?
-
-- How many interpreters are there in Emacs? How does Juicemacs
- implement them?
-
-- What JIT techniques does Juicemacs plan to explore? How can you
- get involved?
-
-
-# Footnotes
-
-<sup><a id="fn.1" href="#fnr.1">1</a></sup> <https://codeberg.org/gudzpoz/Juicemacs>
-
-Outline:
-
-- Intro: Juicemacs
- - Self-introduction
- - Emacs `native-compile` versus modern JIT compilers
- - Juicemacs: Yet another Emacs rewrite
- - Demonstration: REPL, pbootstrap, pdump, elprop, ERT
-- Speculative compilation
- - What we talk about when we talk about JIT compilers
- - Tired: JIT versus AOT
- - Wired: With or without runtime information
- - Speculative compilation
- - Example: arithmetics
- - Example: boxing elimination
- - Graal+Truffle: a meta-compiler by partial evaluation
-- ELisp JIT interpreters
- - AST interpreter
- - Macros
- - Bytecode interpreter
- - Regexp: slowish
- - CCL: to be done
- - Benchmarks
- - Fun to be had (i.e., TODO & possible explorations)
- - Transparent array-backed cons list
- - Regexps
- - Leaning on `native-compile` for LIMPLE IR
- - Others
- - GraalVM native image
- - GUI
- - Emacs dynamic module support
- - How this could be implemented in C
- - `transferToInterpreter`
- - Bytecode approach
- - Problems with the AST approach
-
-- Closing Words
- - Future of Juicemacs
- - Future of GNU Emacs Lisp JIT
- - Ways to contribute
+- How is the performance of Juicemacs compared to Emacs nativecomp?
+ How do we interpret the benchmarks?
+
+- What is Truffle and partial evaluation? What is needed if we are
+ to implement a speculative runtime in C without Truffle?
+
+- What JIT techniques and other things does Juicemacs plan to
+ explore? How to get involved?
+
+Relevant links:
+
+- Accompanying blog post (slides + transcript + more discussions):
+ <https://kyo.iroiro.party/en/posts/juicemacs-exploring-jit-for-elisp/>
+ (scheduled to become available after the talk)
+
+- Project repository: <https://github.com/gudzpoz/Juicemacs> or
+ <https://codeberg.org/gudzpoz/Juicemacs>
+
+- ERT testing results: <https://emacsen.de/dev/tests/>
+
+- Zulip chat (devlog + discussions): <https://juice.zulipchat.com>
About the speaker: