PyPy’s Approach to Virtual Machine Construction Armin Rigo Samuele Pedroni Heinrich-Heine-Universitat¨ Dusseldorf¨ AB Strakt Institut fur¨ Informatik Norra Agatan˚ 10A Universitatsstraße¨ 1 416 64 Goteborg¨ D-40225 Dusseldorf¨ Sweden Deutschland
[email protected] [email protected] Abstract in use by writing three versions of his virtual machine: for C/Posix, The PyPy project seeks to prove both on a research and a practical for Java, and for CLI/.NET. This is, at least, the current situation of level the feasibility of constructing a virtual machine (VM) for a the Python programming language, where independent volunteers dynamic language in a dynamic language – in this case, Python. have developed and are now maintaining Java and .NET versions The aim is to translate (i.e. compile) the VM to arbitrary target of Python, which follow the evolution of the “official” C version environments, ranging in level from C/Posix to Smalltalk/Squeak (CPython). via Java and CLI/.NET, while still being of reasonable efficiency However, we believe that platform standardization does not within these environments. have to be a necessary component of this equation. We are basically A key tool to achieve this goal is the systematic reuse of the using the standard “meta-programming” argument: if one could Python language as a system programming language at various write the VM at a sufficiently high level of abstraction in a language levels of our architecture and translation process. For each level, supporting such level, then the VM itself could be automatically we design a corresponding type system and apply a generic type translated to any lower-level platform.