|
| 1 | +.. title: PyPy v7.3.18 release |
| 2 | +.. slug: pypy-v7318-release |
| 3 | +.. date: 2025-02-06 12:00:00 UTC |
| 4 | +.. tags: release |
| 5 | +.. category: |
| 6 | +.. link: |
| 7 | +.. description: |
| 8 | +.. type: rst |
| 9 | +.. author: mattip |
| 10 | + |
| 11 | +======================================================= |
| 12 | +PyPy v7.3.18: release of python 2.7, 3.10 and 3.11 beta |
| 13 | +======================================================= |
| 14 | + |
| 15 | +The PyPy team is proud to release version 7.3.18 of PyPy. |
| 16 | + |
| 17 | +This release includes a python 3.11 interpreter. We are labelling it "beta" |
| 18 | +because it is the first one. In the next release we will drop 3.10 and remove |
| 19 | +the "beta" label. There are a particularly large set of bugfixes in this |
| 20 | +release thanks to @devdanzin using fusil on the 3.10 builds, originally written |
| 21 | +by Victor Stinner. Other significant changes: |
| 22 | + |
| 23 | +- We have updated libffi shipped in our portable builds. We also now statically |
| 24 | + link to libffi where possible which reduces the number of |
| 25 | + shared object dependencies. |
| 26 | + |
| 27 | +- We have added code to be able to show the native function names when |
| 28 | + profiling with VMProf. So far only Linux supports this feature. |
| 29 | + |
| 30 | +- We have added a `PEP 768`_-inspired remote debugging facility. |
| 31 | + |
| 32 | +- The HPy backend has been updated to latest HPy HEAD |
| 33 | + |
| 34 | +The release includes three different interpreters: |
| 35 | + |
| 36 | +- PyPy2.7, which is an interpreter supporting the syntax and the features of |
| 37 | + Python 2.7 including the stdlib for CPython 2.7.18+ (the ``+`` is for |
| 38 | + backported security updates) |
| 39 | + |
| 40 | +- PyPy3.10, which is an interpreter supporting the syntax and the features of |
| 41 | + Python 3.10, including the stdlib for CPython 3.10.19. |
| 42 | + |
| 43 | +- PyPy3.11, which is an interpreter supporting the syntax and the features of |
| 44 | + Python 3.11, including the stdlib for CPython 3.10.11. |
| 45 | + |
| 46 | +The interpreters are based on much the same codebase, thus the triple |
| 47 | +release. This is a micro release, all APIs are compatible with the other 7.3 |
| 48 | +releases. It follows after 7.3.17 release on August 28, 2024. |
| 49 | + |
| 50 | +We recommend updating. You can find links to download the releases here: |
| 51 | + |
| 52 | + https://pypy.org/download.html |
| 53 | + |
| 54 | +We would like to thank our donors for the continued support of the PyPy |
| 55 | +project. If PyPy is not quite good enough for your needs, we are available for |
| 56 | +`direct consulting`_ work. If PyPy is helping you out, we would love to hear |
| 57 | +about it and encourage submissions to our blog_ via a pull request |
| 58 | +to https://github.com/pypy/pypy.org |
| 59 | + |
| 60 | +We would also like to thank our contributors and encourage new people to join |
| 61 | +the project. PyPy has many layers and we need help with all of them: bug fixes, |
| 62 | +`PyPy`_ and `RPython`_ documentation improvements, or general `help`_ with |
| 63 | +making RPython's JIT even better. |
| 64 | + |
| 65 | +If you are a python library maintainer and use C-extensions, please consider |
| 66 | +making a HPy_ / CFFI_ / cppyy_ version of your library that would be performant |
| 67 | +on PyPy. In any case, both `cibuildwheel`_ and the `multibuild system`_ support |
| 68 | +building wheels for PyPy. |
| 69 | + |
| 70 | +.. _`PyPy`: index.html |
| 71 | +.. _`RPython`: https://rpython.readthedocs.org |
| 72 | +.. _`help`: project-ideas.html |
| 73 | +.. _CFFI: https://cffi.readthedocs.io |
| 74 | +.. _cppyy: https://cppyy.readthedocs.io |
| 75 | +.. _`multibuild system`: https://github.com/matthew-brett/multibuild |
| 76 | +.. _`cibuildwheel`: https://github.com/joerick/cibuildwheel |
| 77 | +.. _blog: https://pypy.org/blog |
| 78 | +.. _HPy: https://hpyproject.org/ |
| 79 | +.. _direct consulting: https://www.pypy.org/pypy-sponsors.html |
| 80 | +.. _`PEP 768`: https://peps.python.org/pep-0768/ |
| 81 | + |
| 82 | +VMProf Native Symbol Names |
| 83 | +=========================== |
| 84 | + |
| 85 | +When running VMProf profiling with native profiling enabled, PyPy did so far |
| 86 | +not produce function names for C functions. The output looked like this:: |
| 87 | + |
| 88 | + pypy -m vmprof ~/projects/gitpypy/lib-python/2.7/test/pystone.py |
| 89 | + Pystone(1.1) time for 50000 passes = 0.0109887 |
| 90 | + This machine benchmarks at 4.55011e+06 pystones/second |
| 91 | + vmprof output: |
| 92 | + %: name: location: |
| 93 | + 100.0% entry_point <builtin>/app_main.py:874 |
| 94 | + 100.0% run_command_line <builtin>/app_main.py:601 |
| 95 | + 100.0% run_toplevel <builtin>/app_main.py:93 |
| 96 | + 100.0% _run_module_as_main /home/user/bin/pypy-c-jit-170203-99a72243b541-linux64/lib-python/2.7/runpy.py:150 |
| 97 | + 100.0% _run_code /home/user/bin/pypy-c-jit-170203-99a72243b541-linux64/lib-python/2.7/runpy.py:62 |
| 98 | + 100.0% <module> /home/user/bin/pypy-c-jit-170203-99a72243b541-linux64/site-packages/vmprof/__main__.py:1 |
| 99 | + 100.0% main /home/user/bin/pypy-c-jit-170203-99a72243b541-linux64/site-packages/vmprof/__main__.py:30 |
| 100 | + 100.0% run_path /home/user/bin/pypy-c-jit-170203-99a72243b541-linux64/lib-python/2.7/runpy.py:238 |
| 101 | + 100.0% _run_module_code /home/user/bin/pypy-c-jit-170203-99a72243b541-linux64/lib-python/2.7/runpy.py:75 |
| 102 | + 100.0% <module> /home/user/projects/gitpypy/lib-python/2.7/test/pystone.py:3 |
| 103 | + 100.0% main /home/user/projects/gitpypy/lib-python/2.7/test/pystone.py:60 |
| 104 | + 100.0% pystones /home/user/projects/gitpypy/lib-python/2.7/test/pystone.py:67 |
| 105 | + 100.0% Proc0 /home/user/projects/gitpypy/lib-python/2.7/test/pystone.py:79 |
| 106 | + 76.9% <unknown code> |
| 107 | + 69.2% <unknown code> |
| 108 | + 53.8% <unknown code> |
| 109 | + 53.8% <unknown code> |
| 110 | + 46.2% <unknown code> |
| 111 | + 46.2% <unknown code> |
| 112 | + 38.5% <unknown code> |
| 113 | + 38.5% Proc8 /home/user/projects/gitpypy/lib-python/2.7/test/pystone.py:212 |
| 114 | + 30.8% <unknown code> |
| 115 | + ... |
| 116 | + |
| 117 | +We can now symbolify these C functions and give function names and which |
| 118 | +shared library they come from, at least on Linux:: |
| 119 | + |
| 120 | + Pystone(1.1) time for 50000 passes = 0.218967 |
| 121 | + This machine benchmarks at 228345 pystones/second |
| 122 | + vmprof output: |
| 123 | + %: name: location: |
| 124 | + 100.0% entry_point <builtin>/app_main.py:889 |
| 125 | + 100.0% run_command_line <builtin>/app_main.py:616 |
| 126 | + 100.0% run_toplevel <builtin>/app_main.py:95 |
| 127 | + 100.0% _run_module_as_main /home/user/projects/gitpypy/lib-python/2.7/runpy.py:150 |
| 128 | + 100.0% _run_code /home/user/projects/gitpypy/lib-python/2.7/runpy.py:62 |
| 129 | + 100.0% <module> /home/user/projects/gitpypy/site-packages/vmprof/__main__.py:1 |
| 130 | + 100.0% main /home/user/projects/gitpypy/site-packages/vmprof/__main__.py:30 |
| 131 | + 100.0% run_module /home/user/projects/gitpypy/lib-python/2.7/runpy.py:179 |
| 132 | + 100.0% _run_module_code /home/user/projects/gitpypy/lib-python/2.7/runpy.py:75 |
| 133 | + 100.0% <module> /home/user/projects/gitpypy/lib-python/2.7/test/pystone.py:3 |
| 134 | + 100.0% main /home/user/projects/gitpypy/lib-python/2.7/test/pystone.py:60 |
| 135 | + 100.0% pystones /home/user/projects/gitpypy/lib-python/2.7/test/pystone.py:67 |
| 136 | + 100.0% Proc0 /home/user/projects/gitpypy/lib-python/2.7/test/pystone.py:79 |
| 137 | + 95.5% n:pypy_g_execute_frame:0:pypy-c |
| 138 | + 91.4% n:pypy_g_PyFrame_dispatch:0:pypy-c |
| 139 | + 63.8% n:pypy_g_PyFrame_dispatch_bytecode:0:pypy-c |
| 140 | + 49.8% Proc1 /home/user/projects/gitpypy/lib-python/2.7/test/pystone.py:137 |
| 141 | + 17.6% copy /home/user/projects/gitpypy/lib-python/2.7/test/pystone.py:53 |
| 142 | + 13.6% n:pypy_g_PyFrame_CALL_FUNCTION:0:pypy-c |
| 143 | + 10.4% Proc8 /home/user/projects/gitpypy/lib-python/2.7/test/pystone.py:212 |
| 144 | + 8.6% n:pypy_g_STORE_ATTR_slowpath:0:pypy-c |
| 145 | + |
| 146 | +This becomes even more useful when using the `VMProf Firefox converter`_, which |
| 147 | +uses the Firefox Profiler Web UI to visualize profiling output: |
| 148 | + |
| 149 | +.. image:: /images/2025-vmprof-firefox.png |
| 150 | + |
| 151 | +.. _`VMProf Firefox converter`: https://github.com/Cskorpion/vmprof-firefox-converter/ |
| 152 | + |
| 153 | +What is PyPy? |
| 154 | +============= |
| 155 | + |
| 156 | +PyPy is a Python interpreter, a drop-in replacement for CPython |
| 157 | +It's fast (`PyPy and CPython`_ performance |
| 158 | +comparison) due to its integrated tracing JIT compiler. |
| 159 | + |
| 160 | +We also welcome developers of other `dynamic languages`_ to see what RPython |
| 161 | +can do for them. |
| 162 | + |
| 163 | +We provide binary builds for: |
| 164 | + |
| 165 | +* **x86** machines on most common operating systems |
| 166 | + (Linux 32/64 bits, Mac OS 64 bits, Windows 64 bits) |
| 167 | + |
| 168 | +* 64-bit **ARM** machines running Linux (``aarch64``) and macos (``macos_arm64``). |
| 169 | + |
| 170 | +PyPy supports Windows 32-bit, Linux PPC64 big- and little-endian, Linux ARM |
| 171 | +32 bit, RISC-V RV64IMAFD Linux, and s390x Linux but does not release binaries. |
| 172 | +Please reach out to us if you wish to sponsor binary releases for those |
| 173 | +platforms. Downstream packagers provide binary builds for debian, Fedora, |
| 174 | +conda, OpenBSD, FreeBSD, Gentoo, and more. |
| 175 | + |
| 176 | +.. _`PyPy and CPython`: https://speed.pypy.org |
| 177 | +.. _`dynamic languages`: https://rpython.readthedocs.io/en/latest/examples.html |
| 178 | + |
| 179 | +What else is new? |
| 180 | +================= |
| 181 | + |
| 182 | +For more information about the 7.3.18 release, see the `full changelog`_. |
| 183 | + |
| 184 | +Please update, and continue to help us make pypy better. |
| 185 | + |
| 186 | +Cheers, |
| 187 | +The PyPy Team |
| 188 | + |
| 189 | +.. _`full changelog`: https://doc.pypy.org/en/latest/release-v7.3.18.html#changelog |
0 commit comments