PyPy 1.0: JIT compilers for free and more

Welcome to the PyPy 1.0 release - a milestone integrating the results of four years of research, engineering, management and sprinting efforts, concluding the 28 months phase of EU co-funding!

Although still not mature enough for general use, PyPy 1.0 materializes for the first time the full extent of our original vision:

  • A flexible Python interpreter, written in “RPython”:
    • Mostly unaware of threading, memory and lower-level target platform aspects.
    • Showcasing advanced interpreter features and prototypes.
    • Passing core CPython regression tests, translatable to C, LLVM and .NET.
  • An advanced framework to translate such interpreters and programs:
    • That performs whole type-inference on RPython programs.
    • Can weave in threading, memory and target platform aspects.
    • Has low level (C, LLVM) and high level (CLI, Java, JavaScript) backends.
  • A Just-In-Time Compiler generator able to automatically enhance the low level versions of our Python interpreter, leading to run-time machine code that runs algorithmic examples at speeds typical of JITs!

Previous releases, particularly the 0.99.0 release from February, already highlighted features of our Python implementation and the abilities of our translation approach but the new JIT generator clearly marks a major research result and gives weight to our vision that one can generate efficient interpreter implementations, starting from a description in a high level language.

We have prepared several entry points to help you get started:

In the next few months we are going to discuss the goals and form of the next stage of development - now more than ever depending on your feedback and contributions - and we hope you appreciate PyPy 1.0 as an interesting basis for greater things to come, as much as we do ourselves!

have fun,

the PyPy release team, Samuele Pedroni, Armin Rigo, Holger Krekel, Michael Hudson, Carl Friedrich Bolz, Antonio Cuni, Anders Chrigstroem, Guido Wesdorp Maciej Fijalkowski, Alexandre Fayolle

and many others:

What is PyPy?

Technically, PyPy is both a Python interpreter implementation and an advanced compiler, or more precisely a framework for implementing dynamic languages and generating virtual machines for them.

The framework allows for alternative frontends and for alternative backends, currently C, LLVM and .NET. For our main target “C”, we can can “mix in” different garbage collectors and threading models, including micro-threads aka “Stackless”. The inherent complexity that arises from this ambitious approach is mostly kept away from the Python interpreter implementation, our main frontend.

PyPy is now also a Just-In-Time compiler generator. The translation framework contains the now-integrated JIT generation technology. This depends only on a few hints added to the interpreter source and should be able to cope with the changes to the interpreter and be generally applicable to other interpreters written using the framework.

Socially, PyPy is a collaborative effort of many individuals working together in a distributed and sprint-driven way since 2003. PyPy would not have gotten as far as it has without the coding, feedback and general support from numerous people.

Formally, many of the current developers were involved in executing an EU contract with the goal of exploring and researching new approaches to language and compiler development and software engineering. This contract’s duration is about to end this month (March 2007) and we are working and preparing the according final review which is scheduled for May 2007.

For the future, we are in the process of setting up structures to help maintain conceptual integrity of the project and to discuss and deal with funding opportunities related to further PyPy sprinting and developments. See here for results of the discussion so far:

1.0.0 Feature highlights

Here is a summary list of key features included in PyPy 1.0:

For a detailed description and discussion of high level backends and Python interpreter features, please see our extensive “D12” report:

Funding partners and organizations

PyPy development and activities happen as an open source project and with the support of a consortium partially funded by a 28 month European Union IST research grant for the period from December 2004 to March 2007. The full partners of that consortium are:

Heinrich-Heine University (Germany), Open End (Sweden) merlinux GmbH (Germany), tismerysoft GmbH (Germany) Logilab Paris (France), DFKI GmbH (Germany) ChangeMaker (Sweden), Impara (Germany)