How to get a JIT Compiler for Free: Implementing SOM Smalltalk with RPython and Truffle

Today at FOSDEM, I gave a brief talk on implementing SOM, a little Smalltalk, with RPython and Truffle. RPython, probably best known for the PyPy implementation, uses meta-tracing JIT compilation to make simple interpreters fast. Truffle, a research project of Oracle Lab, is an approach for building self-optimizing interpreters and in combination with Graal, it gives a JIT compiler for AST-like interpreters. In the talk, I briefly sketch both of them, without going into many details.

The slides are embedded below. Please note that the performance numbers given in the slides are preliminary. They reflect the current snapshot and your on results may very drastically. Further, TruffleSOM has much remaining optimization potential, as does RPySOM. So, these numbers should not be considered benchmarks for the potential of Truffle+Graal or RPython themselves.

Acknowledgments: I would like to thank Carl Friedrich Bolz and Tobias Pape for their help on RPySOM (cf. commit log), especially for making it fast. And, I would like to thank Oracle Labs and the Truffle+Graal community for guidance, support, and fixing bugs. Among others, and in alphabetic order: Andreas Wöß, Chris Seaton, Christian Humer, Christian Wimmer, Gilles Duboscq, Michael Haupt, Thomas Würthinger, Wei Zhang.