diff options
| -rw-r--r-- | 2025/talks/juicemacs.md | 84 |
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: |
