22C3 - 2.2

22nd Chaos Communication Congress
Private Investigations

Armin Rigo
Carl Friedrich Bolz
Holger Krekel
Day 2
Room Saal 3
Start time 17:00
Duration 01:00
ID 586
Event type Lecture
Track Hacking
Language English

PyPy - the new Python implementation on the block

Language/VM R&D, whole program type inference, translation to low level backends, fun

We present our first self-contained Python virtual machine that uses parts of itself to translate itself to low level languages ("the Muenchhausen approach"). The PyPy approach could solve problems at language/interpreter-level that formerly required complex frameworkish solutions at user-level.

PyPy is a reimplementation of Python written in Python itself, flexible and easy to experiment with. Our long-term goals are to target a large variety of platforms, small and large, by adapting the compiler toolsuite we developed to produce custom Python versions. Platform, Memory and Threading models will become aspects of the translation process - as opposed to encoding low level details into a language implementation itself.

Basically, we think it's a good way to avoid writing n x m x o interpreters for n dynamic languages and m platforms with o crucial design decisions. In PyPy any one of these can be changed independently.

We are going to briefly describe the concepts of object spaces, abstract interpretation and translation aspects and how they led us to a first self-contained very compliant Python implementation in August 2005, completely independent from the current mainstream CPython implementation. We go through a translation example of a Python program with control-flow-graphs and the according translated lowlevel C and LLVM (Low level Virtual Machine) code.

We'll also try to relate PyPy's architectural concepts (known roughly for 2-3 years now) to similar upcoming concepts in e.g. pugs/Perl 6 development and we'll give an outlook on our starting Just-In-Time Compiler efforts and approaches.

Lastly, we intend to discuss experimental new language/interpreter-level solutions to long-standing problems such as distributed computing, persistence and security/sandboxing.

Development of PyPy is partly funded by the European Union during the 6th Research Framework programme.