Skip to content

Commit 3032fd2

Browse files
committed
add blog post about release
1 parent 9ed97a2 commit 3032fd2

File tree

2 files changed

+189
-0
lines changed

2 files changed

+189
-0
lines changed

images/2025-vmprof-firefox.png

400 KB
Loading

posts/2025/02/pypy-v7318-release.txt

Lines changed: 189 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,189 @@
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

Comments
 (0)