Monday, December 25, 2017

PyPy2.7 and PyPy3.5 v5.10 dual release

The PyPy team is proud to release both PyPy2.7 v5.10 (an interpreter supporting Python 2.7 syntax), and a final PyPy3.5 v5.10 (an interpreter for Python 3.5 syntax). The two releases are both based on much the same codebase, thus the dual release.

This release is an incremental release with very few new features, the main feature being the final PyPy3.5 release that works on linux and OS X with beta windows support. It also includes fixes for vmprof cooperation with greenlets.

Compared to 5.9, the 5.10 release contains mostly bugfixes and small improvements. We have in the pipeline big new features coming for PyPy 6.0 that did not make the release cut and should be available within the next couple months.

As always, this release is 100% compatible with the previous one and fixed several issues and bugs raised by the growing community of PyPy users. As always, we strongly recommend updating.

There are quite a few important changes that are in the pipeline that did not make it into the 5.10 release. Most important are speed improvements to cpyext (which will make numpy and pandas a bit faster) and utf8 branch that changes internal representation of unicode to utf8, which should help especially the Python 3.5 version of PyPy.

This release concludes the Mozilla Open Source grant for having a compatible PyPy 3.5 release and we're very grateful for that. Of course, we will continue to improve PyPy 3.5 and probably move to 3.6 during the course of 2018.

You can download the v5.10 releases here:

We would like to thank our donors for the continued support of the PyPy project.

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: PyPy and RPython documentation improvements, tweaking popular modules to run on pypy, or general help with making RPython's JIT even better.

What is PyPy?

PyPy is a very compliant Python interpreter, almost a drop-in replacement for CPython 2.7 and CPython 3.5. It's fast (PyPy and CPython 2.7.x 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.

The PyPy release supports:

  • x86 machines on most common operating systems (Linux 32/64 bits, Mac OS X 64 bits, Windows 32 bits, OpenBSD, FreeBSD)
  • newer ARM hardware (ARMv6 or ARMv7, with VFPv3) running Linux,
  • big- and little-endian variants of PPC64 running Linux,
  • s390x running Linux


  • improve ssl handling on windows for pypy3 (makes pip work)
  • improve unicode handling in various error reporters
  • fix vmprof cooperation with greenlets
  • fix some things in cpyext
  • test and document the cmp(nan, nan) == 0 behaviour
  • don't crash when calling sleep with inf or nan
  • fix bugs in _io module
  • inspect.isbuiltin() now returns True for functions implemented in C
  • allow the sequences future-import, docstring, future-import for CPython bug compatibility
  • Issue #2699: non-ascii messages in warnings
  • posix.lockf
  • fixes for FreeBSD platform
  • add .debug files, so builds contain debugging info, instead of being stripped
  • improvements to cppyy
  • issue #2677 copy pure c PyBuffer_{From,To}Contiguous from cpython
  • issue #2682, split firstword on any whitespace in sqlite3
  • ctypes: allow ptr[0] = foo when ptr is a pointer to struct
  • matplotlib will work with tkagg backend once matplotlib pr #9356 is merged
  • improvements to utf32 surrogate handling
  • cffi version bump to 1.11.2
Maciej Fijalkowski, Matti Picus and the whole PyPy team