PyPy 7 speeds up Python 2.7, Python 3.5, and Python 3.6 alike

Posted on 11-02-2019 , by: admin , in , 0 Comments

PyPy, the Python runtime that uses just-in-time compilation to achieve major performance improvements over the stock CPython distribution, is now available in version 7.0 releases supporting Python 2.7, Python 3.5, and Python 3.6.

According to a post on the official PyPy Status Blog, all three versions use “much the same codebase, thus the triple release.” The Python 3.6 interpreter is “the first official release of PyPy to support Python 3.6 features, although it is still considered alpha quality.”  Most of the improvements to PyPy over the last release involve memory management and interfacing with external C code built for Python.

CPython provides programmatic hooks into its garbage collection subsystem. PyPy 7 goes a step further, running the garbage collector in incremental steps to prevent the garbage collection process from bringing programs to a halt for too long.

One longstanding issue with PyPy versus the stock CPython interpreter is that many packages that use binary wheels, or binary components built to run with the Python interpreter, may not work correctly or at the same speed. Officially, any C/C++ projects that need to work with PyPy should use the cffi and cppyy projects to wrap their binaries. The latest versions of these projects now work with PyPy.

Third parties also offer rebuilds of some popular Python packages, such as NumPy, Pandas, and SciPy, to work specifically with PyPy, but that build process is still experimental and yields binaries only for Ubuntu Linux.

Many of the other changes and improvements in PyPy 7 involve better support for async structures and compatibility with other language features in Python 3.5 and Python 3.6. However, PyPy’s creators advise that the release for Python 3.6, as well as for Python 3.5 for Windows, is “still not production quality” as “there are open issues with incomplete compatibility and C extension support.”