PyPy v7.3.12: release of python 2.7, 3.9, and 3.10¶
The PyPy team is proud to release version 7.3.12 of PyPy. There are only minimal bugfixes since the last release. We did implement support for symlinks in Windows, and are releasing a Python3.10 version. The release includes three different interpreters:
PyPy2.7, which is an interpreter supporting the syntax and the features of Python 2.7 including the stdlib for CPython 2.7.18+ (the
+
is for backported security updates)PyPy3.9, which is an interpreter supporting the syntax and the features of Python 3.9, including the stdlib for CPython 3.9.16.
PyPy3.10, which is an interpreter supporting the syntax and the features of Python 3.10, including the stdlib for CPython 3.10.9. This is our first release of 3.10, but based on past experience we are quite confident in its compatibility with upstream. Of course, we recommend testing your code with this new version before putting it into production. Note it does require a new version of cython that has yet to be released.
The interpreters are based on much the same codebase, thus the multiple release. This is a micro release, all APIs are compatible with the other 7.3 releases. It follows after 7.3.11 release on Dec 29, 2022
We recommend updating. You can find links to download the v7.3.12 releases here:
We would like to thank our donors for the continued support of the PyPy project. If PyPy is not quite good enough for your needs, we are available for direct consulting work. If PyPy is helping you out, we would love to hear about it and encourage submissions to our blog via a pull request to https://github.com/pypy/pypy.org
We would also like to thank our contributors and encourage new people to join the project. PyPy has many layers and we need help with all of them: bug fixes, PyPy and RPython documentation improvements, or general help with making RPython’s JIT even better. Since the previous release, we have accepted contributions from one new contributor, thanks for pitching in, and welcome to the project!
If you are a python library maintainer and use C-extensions, please consider making a HPy / CFFI / cppyy version of your library that would be performant on PyPy. In any case, both cibuildwheel and the multibuild system support building wheels for PyPy.
What is PyPy?¶
PyPy is a Python interpreter, a drop-in replacement for CPython It’s fast (PyPy and CPython 3.7.4 performance comparison) due to its integrated tracing JIT compiler.
We also welcome developers of other dynamic languages to see what RPython can do for them.
We provide binary builds for:
x86 machines on most common operating systems (Linux 32/64 bits, Mac OS 64 bits, Windows 64 bits)
64-bit ARM machines running Linux (
aarch64
).Apple M1 arm64 machines (
macos_arm64
).s390x running Linux
PyPy support Windows 32-bit, Linux PPC64 big- and little-endian, and Linux ARM 32 bit, but does not release binaries. Please reach out to us if you wish to sponsor binary releases for those platforms. Downstream packagers provide binary builds for debian, Fedora, conda, OpenBSD, FreeBSD, Gentoo, and more.
Changelog¶
For all versions¶
Update vendored version of pycparser
Update to ssl 1.1.1t, 3.0.8 when embedding libraries
Bugfixes¶
Allow creating
ctypes.py_object()
on aweakref
(issue 3883)Add memory pressure for malloc allocations in
_ssl
, fix OpenSSL context usePair OpenSSL allocation calls better with free calls in
_ssl
(issue 3887)Only define
SO
insysconfig
ifimp.get_suffixes()
hasimp.C_EXTENSION
Fix wrong assert in
intutils
, it should be anInvalidLoop
instead (issue 3892:_)export
PyDescr_NewGetSet
and definePyDescr_TYPE
,PyDescr_NAME
space.index(W_Bool)
should return anint
, not abool
(issue 3906_)Skip cpython pickling of
range
Support loading c-extension modules with both
powerpc64le-linux-gnu
andppc_64-linux-gnu
platform tags (issue 3834)Fix various cases where a mutating
__index__
method could crash the interpreter (issue 3917)
Speedups and enhancements¶
Do less string copies in the bytecode compiler
Add missing CJK range in unicodedata version 13
Python 3.9+¶
Bugfixes¶
Fix corner case when computing
__main__.__file__
(issue 3881)Fix misnamed function (issue 3874)
Disallow pickle of
staticmethod
,classmethod
, andDirEntry
Make sure that the max stackdepth is observed in method calls
Fix
utf-16
andutf-32
errorhandler replacement logic: if the replacement is bytes. those are just copied to the outputFix the problems of https://bugs.python.org/issue36819
Fix
str_decode_raw_unicode_escape
for the case of\\
, which was incorrectly special-cased.Forbid null bytes in
pwd.getpwnam
Use
r_longlong
math in nanosecond time forperf_counter
on windows (issue 3890)Fix for
tuple.contains(obj)
usingitem == obj
(bpo-37648)Allow indexing with a class with a
__index__
methodImplement
__copy__
and__deepcopy__
forzlib
(de)compressorsFix weirdness about combining annotations and a global declaration of a name in some random function (issue 3925)
Fix wrong implementation of
_copy_base
for slices of n-dimensional buffers (issue 3520)
Speedups and enhancements¶
Speed up
nametuple _replace
by code generation (issue 3884)Correct exception on positional arguments, while supporting empty namedtuple (?) at the same time
Implement
os.symlink
andos.readlink
on windowsFix
os.mkdir
for unicode handling via teaching rposix about utf-8 paths, which could lead to removing the last vestiges of unicode from rpython.Refactor
os.remove
/os.unlink
to take symlink into account on windowsIncrement
macosx-version-min
to 10.9space.newlong
returns aW_LongObject
on pypy3, where there is no observable applevel difference betweenW_IntObject
andW_LongObject