Skip to content
Tech News
← Back to articles

PyPy v8.0.0 Release

read original more articles
Why This Matters

PyPy's v8.0.0 release marks a significant infrastructure and compatibility upgrade, modernizing its Linux build environment and laying groundwork for broader binary wheel compatibility with CPython. This matters because it could substantially reduce the friction package maintainers face in supporting PyPy, potentially boosting adoption of this faster Python implementation.

Key Takeaways

We have updated our linux buildbots (linux64, linux32, aarch64) to use manylinux_2_28 images based on AlmaLinux 8 and glibc 2.28. These use gcc14 instead of the gcc5 previously used. So our compiled tarballs will require at least glibc2.28, which should be universally supported by now (Ubuntu 24.04 uses glibc2.39). In order to prevent confusion, we felt bumping the major version would be prudent.

PyPy's Python 3.12 support comes with a new model for the C layer PyObject . In order to link the C object to the internal RPython one, we have an extra field in the object ob_pypy_link , as described in-depth in rawrefcount-and-the-gc. In previous versions, this field was visible in a way that makes the PyObject struct different from the CPython one. From v8.0.0, we "hide" the PyPy-only extension in a prefix before the pointer we hand off to C-extension modules. The goal of this work is to allow PyPy to use cp312-abi3 wheels produced for CPython 3.12 and up, using the limited ABI. The required pieces have all been put in place:

PyPy's C headers, including struct definitions like PyObject , are compatible with CPython's C headers when defining Py_LIMITED_API=0x030C0000

PyPy no longer mangles exported function names from the limited API. In PyPy3.11 and earlier, functions like PyTuple_New were exported as PyPyTupleNew .

Still missing: the import machinery must be taught that abi3.so shared objects are valid for PyPy, and the larger ecosystem (pip, uv) must also accept that cp312-abi3 wheels are valid candidates for installation.

Yes, this is a big step. We are working with Cython and PyO3 to make sure it all will Just Work™. Hopefully this will make it easier for packages to support PyPy.