or how to get a just-in-time compiler by writing an interpreter.
Truffle is framework to write a programming language implementation as an Abstract-Syntax-Tree Interpreter. Together with the Graal Just-in-Time compiler, it achieve competitive performance with the best just-in-time compilers such as V8 for JavaScript. In particular, the Ruby implementation I am working on, TruffleRuby achieves speedups of more than 10x faster than the standard implementation on classic benchmarks.
We also observed impressive speedups for Mozart-Graal, a new implementation of the Oz language using Truffle, also the subject of a master thesis at UCL. Graal and Truffle can be seen as a way to obtain a Just-in-Time compiler by only writing an AST interpreter for the language, which is itself the simplest way to implement a language. This is possible in great parts thanks to an application of Partial Evaluation, an idea described in 1983 and now made a reality.