Features

PyPy 2.2 implements Python 2.7.3 and runs on Intel x86 (IA-32) , x86_64 and ARM platforms, with PPC being stalled. It supports all of the core language, passing the Python test suite (with minor modifications that were already accepted in the main python in newer versions). It supports most of the commonly used Python standard library modules. For known differences with CPython, see our compatibility page.

If you are interested in helping to move forward, see our howtohelp page.

Speed

Our main executable comes with a Just-in-Time compiler. It is really fast in running most benchmarks. Try it out!

Sandboxing

PyPy's sandboxing is a working prototype for the idea of running untrusted user programs. Unlike other sandboxing approaches for Python, PyPy's does not try to limit language features considered “unsafe”. Instead we replace all calls to external libraries (C or platform) with a stub that communicates with an external process handling the policy.

To run the sandboxed process, you need pypy-sandbox. You also need to get the full sources (step 1 only). Run:

cd pypy/pypy/translator/sandbox
pypy_interact.py path/to/pypy-sandbox

You get a fully sandboxed interpreter, in its own filesystem hierarchy (try os.listdir('/')). For example, you would run an untrusted script as follows:

mkdir virtualtmp
cp untrusted.py virtualtmp/
pypy_interact.py --tmp=virtualtmp pypy-sandbox /tmp/untrusted.py

Note that the path /tmp/untrusted.py is a path inside the sandboxed filesystem. You don't have to put untrusted.py in the real /tmp directory at all.

To read more about its features, try pypy_interact.py --help or go to our documentation site.

Stackless

Support for Stackless and greenlets are now integrated in the normal PyPy. More detailed information is available here.

Other features

PyPy has many secondary features and semi-independent projects. We will mention here:

  • the .NET backend: There was a backend for building a native pypy for the .NET/CLI VM. Of particular interest was the cli-jit branch, in which you could make a version of pypy-net which also contains a high-level JIT compiler (it compiled your Python programs Just in Time into CLR bytecodes). The code of this backend is very old by now and would require serious work to get back into a working state. If you would like to tackle this project, please Contact us!

  • the Java backend: PyPy can run on the Java VM, but more care is needed to finish this project. Writing a backend for our high-level JIT compiler would be excellent. Contact us!

  • Other languages: we also implemented other languages that makes use of our RPython toolchain: Prolog (almost complete), as well as Smalltalk, JavaScript, Io, Scheme and Gameboy.

    There is also a Ruby implementation called Topaz.