This post is all about speculative compilation, or just speculation for short, in the context of the JavaScriptCore virtual machine.
This Org-mode file was used for an org-present presentation at EmacsConf 2025 – Juicemacs. This blog post is adapted from that presentation, with added transcript and explanations for a bunch of things I didn't dig into during the presentation. For EmacsConf 2025 Project: https://github.com/gudzpoz/Juicemacs Contact: See the navigation bar (or join the Zulip chat)
Mandelbort benchmark: Emacs (native-comp) runs 10x slower than Java or Truffle implementation 1 So I've been working on an interpreter for Emacs Lisp using the GraalVM Truffle framework for a while now. As I've just completed its AST interpreter and a bytecode interpreter, I guess its time to give it a little write-up (or rather, some random babbling of various tricks). Although the Truffle interpreter covered here is for Emacs Lisp only, most of the following should also be applicable to other Lisp dialects and maybe other Truffle-based language implementations.
Overview In February 2023, researchers at Exodus Intelligence discovered a bug in the Data Flow Graph (DFG) compiler of WebKit, the browser engine used by Safari. This bug, CVE-2024-44308, was patched by Apple in November 2024. While it was alive, its exploit was chained with PAC and APRR bypasses on Apple Silicon to yield renderer ... Read more Oops Safari, I think You Spilled Something!
Adventures in hacking Hermes VM’s C++ internals for fun and profit
This is Part 1 of a series of posts. Part 2 is available here: Building a baseline JIT for Lua automatically It is well-known that writing a good VM for a dynamic language is never an easy job. High
This is the Part 2 of a series. Feel free to read the prequel for more context: Building the fastest Lua interpreter automatically Building a good VM for a dynamic language takes a ton of engineerin
This is Part 1 of a series of posts. Part 2 is available here: Building a baseline JIT for Lua automatically It is well-known that writing a good VM for a dynamic language is never an easy job. High