summaryrefslogtreecommitdiffstats
path: root/2025/talks/juicemacs.md
diff options
context:
space:
mode:
Diffstat (limited to '2025/talks/juicemacs.md')
-rw-r--r--2025/talks/juicemacs.md74
1 files changed, 74 insertions, 0 deletions
diff --git a/2025/talks/juicemacs.md b/2025/talks/juicemacs.md
new file mode 100644
index 00000000..d724ad33
--- /dev/null
+++ b/2025/talks/juicemacs.md
@@ -0,0 +1,74 @@
+[[!meta title="Juicemacs: Exploring Speculative JIT Compilation for ELisp in Java"]]
+[[!meta copyright="Copyright © 2025 Kana"]]
+[[!inline pages="internal(2025/info/juicemacs-nav)" raw="yes"]]
+
+<!-- Initially generated with emacsconf-publish-talk-page and then left alone for manual editing -->
+<!-- You can manually edit this file to update the abstract, add links, etc. --->
+
+
+# Juicemacs: Exploring Speculative JIT Compilation for ELisp in Java
+Kana (they/them) - IRC: kanakana, Blog: https://kyo.iroiro.party - ActivityPub: @kana@f.iroiro.party - Bluesky: @kana.iroiro.party, <mailto:kana@iroiro.party>
+
+[[!inline pages="internal(2025/info/juicemacs-before)" raw="yes"]]
+
+Just-in-time (JIT) compilation helps dynamic languages run fast, and
+speculative compilation makes them run faster, as has been showcased
+by JVMs, LuaJIT, JavaScript engines, and many more JIT runtimes.
+However, Emacs native-compilation, despite its JIT compilation
+(`native-comp-jit-compilation`), does not speculate about runtime
+execution, making it effectively a JIT-ish AOT (ahead-of-time)
+compiler. By introducing a speculative runtime for ELisp, we could
+potentially improve ELisp performance even further, with many new
+optimization opportunities.
+
+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?
+
+- What is speculative compilation? How is it useful for an ELisp JIT
+ runtime?
+
+- 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:
+
+Hello! This is Kana, an Emacs hobbyist and Java lover from China. A
+few years ago I discovered the Truffle JIT compilation framework and
+have since hoped to implement a JIT runtime myself. Last year I
+finally started implementing one for ELisp, called Juicemacs, and
+have made some progress. In this talk I will share what I've learned
+during the journey, including how three interpreters out of four (or
+more?) in Emacs are implemented in Juicemacs and how speculative
+compilation can make some optimizations possible.
+
+
+[[!inline pages="internal(2025/info/juicemacs-after)" raw="yes"]]
+
+[[!inline pages="internal(2025/info/juicemacs-nav)" raw="yes"]]
+
+