Tracing Just-in-time Compilation for Effects and Handlers
summary
Implements an RPython-based tracing JIT that runs a common bytecode target for Eff, Effekt, and Koka, records hot traces and applies allocation removal and loop hoisting, and reports being competitive with ahead-of-time compilers. Oneshot continuation patterns (generators) get large speedups; multi-shot resumptions produce tens of traces and slow down due to trace fragmentation. Benchmarks show it beats V8 on control-effect workloads and is roughly comparable to PyPy-like baselines, artifacts and data are reproducible.
AI-written summary · about
chapters (12)
- 0:00Tracing JIT for effect handlers
- 1:23Research questions and approach
- 2:48Implementation with three languages
- 3:31Tracing JIT compilation example
- 8:11Performance vs ahead-of-time compilers
- 9:20When tracing JIT works best
- 10:25Summary and insights
- 11:08Q&A
- 11:30Meta-tracing JIT for effects
- 12:32Benchmarking and AOT depth
- 13:58Stack space and resumptions
- 14:40Closing remarks
related talks
45mTwo-level Just-in-Time Compilation with One Interpreter and One Engine
40mJoy of Meta-Tracing Just-in-Time Compilation: More Than Just a VM Generator
19mReusing Just-in-Time Compiled Code
55mMaking CPython Fast Using Trace-based Optimisations
12mCompiling Effect Handlers in Capability-Passing Style
34mWhat happens to your code when you don't look?
17mInside a PyPy JIT: is that even legal?
41mHow to write a JIT compiler in 30 minutes
