@@ -68,6 +68,7 @@ Summary -- release highlights
6868 * :ref: `PEP 649: deferred evaluation of annotations <whatsnew314-pep649 >`
6969* :ref: `PEP 741: Python Configuration C API <whatsnew314-pep741 >`
7070* :ref: `PEP 761: Discontinuation of PGP signatures <whatsnew314-pep761 >`
71+ * :ref: `A new type of interpreter <whatsnew314-tail-call >`
7172
7273
7374New features
@@ -208,6 +209,37 @@ configuration mechanisms).
208209.. seealso ::
209210 :pep: `741 `.
210211
212+ .. _whatsnew314-tail-call :
213+
214+ A new type of interpreter
215+ -------------------------
216+
217+ A new type of interpreter based on tail calls has been added to CPython.
218+ For certain newer compilers, this interpreter provides
219+ significantly better performance. Preliminary numbers on our machines suggest
220+ anywhere from -3% to 30% faster Python code, and a geometric mean of 9-15%
221+ faster on ``pyperformance `` depending on platform and architecture.
222+
223+ This interpreter currently only works with Clang 19 and newer
224+ on x86-64 and AArch64 architectures. However, we expect
225+ that a future release of GCC will support this as well.
226+
227+ This feature is opt-in for now. We highly recommend enabling profile-guided
228+ optimization with the new interpreter as it is the only configuration we have
229+ tested and can validate its improved performance.
230+ For further information on how to build Python, see
231+ :option: `--with-tail-call-interp `.
232+
233+ .. note ::
234+
235+ This is not to be confused with `tail call optimization `__ of Python
236+ functions, which is currently not implemented in CPython.
237+
238+ __ https://en.wikipedia.org/wiki/Tail_call
239+
240+ (Contributed by Ken Jin in :gh: `128718 `, with ideas on how to implement this
241+ in CPython by Mark Shannon, Garrett Gu, Haoran Xu, and Josh Haberman.)
242+
211243
212244Other language changes
213245======================
@@ -357,6 +389,9 @@ ctypes
357389 complex C types.
358390 (Contributed by Sergey B Kirpichev in :gh: `61103 `).
359391
392+ * Add :func: `ctypes.util.dllist ` for listing the shared libraries
393+ loaded by the current process.
394+ (Contributed by Brian Ward in :gh: `119349 `.)
360395
361396datetime
362397--------
@@ -585,6 +620,15 @@ pathlib
585620
586621 (Contributed by Barney Gale in :gh: `73991 `.)
587622
623+ * Add :attr: `pathlib.Path.info ` attribute, which stores an object
624+ implementing the :class: `pathlib.types.PathInfo ` protocol (also new). The
625+ object supports querying the file type and internally caching
626+ :func: `~os.stat ` results. Path objects generated by
627+ :meth: `~pathlib.Path.iterdir ` are initialized with file type information
628+ gleaned from scanning the parent directory.
629+
630+ (Contributed by Barney Gale in :gh: `125413 `.)
631+
588632
589633pdb
590634---
600644 command when :mod: `pdb ` is in ``inline `` mode.
601645 (Contributed by Tian Gao in :gh: `123757 `.)
602646
647+ * A confirmation prompt will be shown when the user tries to quit :mod: `pdb `
648+ in ``inline `` mode. ``y ``, ``Y ``, ``<Enter> `` or ``EOF `` will confirm
649+ the quit and call :func: `sys.exit `, instead of raising :exc: `bdb.BdbQuit `.
650+ (Contributed by Tian Gao in :gh: `124704 `.)
651+
603652
604653pickle
605654------
@@ -1167,6 +1216,12 @@ Others
11671216 :meth: `~object.__index__ `. (Contributed by Mark Dickinson in :gh: `119743 `.)
11681217
11691218
1219+ CPython Bytecode Changes
1220+ ========================
1221+
1222+ * Replaced the opcode ``BINARY_SUBSCR `` by :opcode: `BINARY_OP ` with oparg ``NB_SUBSCR ``.
1223+ (Contributed by Irit Katriel in :gh: `100239 `.)
1224+
11701225Porting to Python 3.14
11711226======================
11721227
0 commit comments