From 3d7ba7a917db9208ee732da2e818b1d30e9598d2 Mon Sep 17 00:00:00 2001 From: Kana Date: Fri, 5 Dec 2025 02:56:43 +0800 Subject: remove outdated talk outline and add pointers --- 2025/talks/juicemacs.md | 84 +++++++++++++++---------------------------------- 1 file changed, 26 insertions(+), 58 deletions(-) (limited to '2025') 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 1 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 - -1 - -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): + + (scheduled to become available after the talk) + +- Project repository: or + + +- ERT testing results: + +- Zulip chat (devlog + discussions): About the speaker: -- cgit v1.2.3