From: Ken Jin Date: Thu, 6 Mar 2025 06:43:53 +0000 (+0800) Subject: gh-128563: Add correction note to tail call in whats new (#130908) X-Git-Tag: v3.14.0a6~137 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=e4a60248b031d9e327443f1f2627e66865f8a9c9;p=thirdparty%2FPython%2Fcpython.git gh-128563: Add correction note to tail call in whats new (#130908) * Add correction note to tail call in whats new * Update 3.14.rst --- diff --git a/Doc/whatsnew/3.14.rst b/Doc/whatsnew/3.14.rst index 7c1245187f60..a178ba51c89c 100644 --- a/Doc/whatsnew/3.14.rst +++ b/Doc/whatsnew/3.14.rst @@ -270,7 +270,7 @@ It uses tail calls between small C functions that implement individual Python opcodes, rather than one large C case statement. For certain newer compilers, this interpreter provides significantly better performance. Preliminary numbers on our machines suggest -anywhere from -3% to 30% faster Python code, and a geometric mean of 9-15% +anywhere up to 30% faster Python code, and a geometric mean of 3-5% faster on ``pyperformance`` depending on platform and architecture. The baseline is Python 3.14 built with Clang 19 without this new interpreter. @@ -295,6 +295,19 @@ For further information on how to build Python, see __ https://en.wikipedia.org/wiki/Tail_call +.. attention:: + + This section previously reported a 9-15% geomean speedup. This number has since been + cautiously revised down to 3-5%. While we expect performance results to be better + than what we report, our estimates are more conservative due to a + `compiler bug `_ found in + Clang/LLVM 19. We were unaware of this bug, and it artifically boosted + our numbers, resulting in inaccurate results. We sincerely apologize for + communicating results that were only accurate for certain versions of LLVM 19 + and 20. At the time of writing, this bug has not yet been fixed in LLVM 19-21. Thus + any benchmarks with those versions of LLVM may produce artifically inflated numbers. + (Thanks to Nelson Elhage for bringing this to light.) + (Contributed by Ken Jin in :gh:`128563`, with ideas on how to implement this in CPython by Mark Shannon, Garrett Gu, Haoran Xu, and Josh Haberman.)