Dr. Christian Wimmer

Truffle: A Self-Optimizing Runtime System

Christian Wimmer, Thomas Würthinger: Truffle: A Self-Optimizing Runtime System. Demonstration at Systems, Programming, Languages and Applications: Software for Humanity, pages 13–14. ACM Press, 2012. doi:10.1145/2384716.2384723

Download as PDF


We present Truffle, a novel framework for implementing managed languages in Java™. The language implementer writes an AST interpreter, which is integrated in our framework that allows tree rewriting during AST interpretation. Tree rewrites incorporate type feedback and other profiling information into the tree, thus specializing the tree and augmenting it with run-time information. When the tree reaches a stable state, partial evaluation compiles the tree into optimized machine code. The partial evaluation is done by Graal, the just-in-time compiler of our Java VM (a variation of the Java HotSpot VM). To show that Truffle supports a variety of programming language paradigms, we present prototype implementations of JavaScript (a dynamically typed programming language) and J (an array programming language).