
PyPy 8.0 brings Python 3.12 beta support, better RPython code generation, and drops HPy
The PyPy development team has announced the release of PyPy 8.0, marking a significant milestone as the first version to support Python 3.12, albeit in beta quality. Alongside Python 3.12, the distribution continues to support Python 2.7 and Python 3.11, catering to both legacy projects and modern codebases. The major version bump from 7.x to 8.0 reflects substantial architectural changes undertaken during the development cycle, with the team cautioning that Python 3.12 support may still harbor bugs as it reaches its initial implementation stage.
Several technical shifts define this release. Most notably, the project dropped its internal HPy backend, a handle-based approach that failed to gain sufficient traction within the broader Python community to establish itself as a standard. While the code remains available as an optional build toggle, its deactivation signals a pragmatic pivot away from underutilized experimental features. On the engineering front, PyPy introduced improvements to its RPython code generation pipeline, including computed gotos and more aggressive inlining to streamline the base interpreter's execution. Though performance gains were modest, the added source code annotations mapping generated C back to original RPython sources should aid future optimization efforts. The team also revived a clang-based utility called pyhdrdump to compare PyPy's headers against CPython's, aiding compatibility maintenance.
PyPy maintains its cross-platform ambitions, supporting architectures ranging from Windows 32-bit and Linux ARM to niche systems like RISC-V RV64IMAFD and s390x. However, official binary releases are limited, with downstream packagers covering Debian, Fedora, Conda, and various BSD and Linux distributions. The project continues to solicit sponsorship for additional platform binaries while welcoming new contributors across bug fixes, documentation, and JIT enhancements. Users interested in adopting Python 3.12's latest features through PyPy's renowned JIT compilation can now test the beta, with the team encouraging feedback.


