#14 Scott Rostrup on Tracing the Meta-Level: PyPy’s Tracing JIT Compiler

This is a past event

41 people went

Location image of event venue


Important: please arrive before 7pm, which is when the front door locks! If you arrive after 7pm, use the keypad beside the outside door and buzz 8882 to be let in.


Scott will be presenting Tracing the Meta-Level: PyPy’s Tracing JIT Compiler (https://bitbucket.org/pypy/extradoc/raw/13d40402539787ff826ceff3518372d70725b464/talk/icooolps2009/bolz-tracing-jit-final.pdf) by Carl Friedrich Bolz, Antonio Cuni, Maciej Fijalkowski, and Armin Rigo.


Writing an interpreter for a language is a great way to quickly explore new ideas and create domain specific languages (DSLs). Interpreted languages are both prevalent and incredibly popular, however the common perception is that choosing an interpreted language over a compiled language will always comes with a performance cost. In this talk, Scott will provide a high level introduction to the RPython toolchain for writing high performance interpreters in the context of PyPy the high performance Python interpreter built with RPython.

RPython stands for restricted Python; it is both a restricted subset of the Python language and a toolchain for developing interpreters. RPython's speed comes from a technique known as Tracing-JIT compilation which has been applied to many different languages; though perhaps most successfully with Lua and Python, where tracing-JITs underlie two high performance interpreter implementations; LuaJIT and PyPy respectively.

The RPython toolchain takes the Tracing-JIT approach and abstracts it over languages. That is rather than trying to speed up the programs of one language, it aims to provide a toolchain such that for any language; when you implement the interpreter for that language with RPython, you can then compile a version of your interpreter augmented with a tracing-JIT compiler. This is very attractive since it means you can write a relatively simple but inefficient interpreter and by guiding the tracing-JIT process you can compile out much of the inefficiency and arrive at an efficient compiled version of your interpreter.

Paper Link: https://bitbucket.org/pypy/extradoc/raw/13d40402539787ff826ceff3518372d70725b464/talk/icooolps2009/bolz-tracing-jit-final.pdf

Doors open at 6:30 pm, presentation will begin at 7:00 pm. There will be food and refreshments provided by Shopify.


Scott is a software generalist who aims his creative energies wherever interesting problems are to be found. Currently he works at the intersection of programming language design and machine learning, but in the past he has worked on an eclectic mix of topics; including computer graphics, circuit simulation, distributed storage, and at one point in grad school trying to simulate the flow of bubbles when you pour out a pint of Guinness (It's really neat to watch!). Recently he has become fascinated with developing mini languages and interpreters for fun and maybe even some utility. If this seems interesting to you, feel free to connect with Scott and fellow members of the Toronto CSCabal (http://compscicabal.github.io (http://compscicabal.github.io/)).