diff --git a/Doc/library/mmap.rst b/Doc/library/mmap.rst index 28b2d1e244787a..ae4a7fc103cb0c 100644 --- a/Doc/library/mmap.rst +++ b/Doc/library/mmap.rst @@ -346,7 +346,7 @@ To map anonymous memory, -1 should be passed as the fileno along with the length .. availability:: Linux >= 5.17 (kernel built with ``CONFIG_ANON_VMA_NAME`` option) - .. versionadded:: next + .. versionadded:: 3.15 .. method:: size() diff --git a/Include/patchlevel.h b/Include/patchlevel.h index 90a73c8f2b1ecc..47c3cf50c7d45d 100644 --- a/Include/patchlevel.h +++ b/Include/patchlevel.h @@ -24,10 +24,10 @@ #define PY_MINOR_VERSION 15 #define PY_MICRO_VERSION 0 #define PY_RELEASE_LEVEL PY_RELEASE_LEVEL_ALPHA -#define PY_RELEASE_SERIAL 3 +#define PY_RELEASE_SERIAL 4 /* Version as a string */ -#define PY_VERSION "3.15.0a3+" +#define PY_VERSION "3.15.0a4+" /*--end constants--*/ diff --git a/Lib/pydoc_data/topics.py b/Lib/pydoc_data/topics.py index 2f19e84d2e47e5..c290f950100a7d 100644 --- a/Lib/pydoc_data/topics.py +++ b/Lib/pydoc_data/topics.py @@ -1,4 +1,4 @@ -# Autogenerated by Sphinx on Tue Dec 16 14:26:04 2025 +# Autogenerated by Sphinx on Tue Jan 13 12:26:49 2026 # as part of the release process. topics = { @@ -888,8 +888,8 @@ class to a new value, *value*. created for each of the iterator’s values. However, the *__slots__* attribute will be an empty iterator. -Changed in version 3.15.0a2 (unreleased): Allowed defining the -*__dict__* and *__weakref__* *__slots__* for any class. +Changed in version 3.15: Allowed defining the *__dict__* and +*__weakref__* *__slots__* for any class. ''', 'attribute-references': r'''Attribute references ******************** @@ -4563,8 +4563,8 @@ class pdb.Pdb(completekey='tab', stdin=None, stdout=None, skip=None, nosigint=Fa To remove all commands from a breakpoint, type "commands" and follow it immediately with "end"; that is, give no commands. - With no *bpnumber* argument, "commands" refers to the last - breakpoint set. + With no *bpnumber* argument, "commands" refers to the most recently + set breakpoint that still exists. You can use breakpoint commands to start your program up again. Simply use the "continue" command, or "step", or any other command @@ -9032,8 +9032,8 @@ class to a new value, *value*. created for each of the iterator’s values. However, the *__slots__* attribute will be an empty iterator. -Changed in version 3.15.0a2 (unreleased): Allowed defining the -*__dict__* and *__weakref__* *__slots__* for any class. +Changed in version 3.15: Allowed defining the *__dict__* and +*__weakref__* *__slots__* for any class. Customizing class creation @@ -11466,8 +11466,11 @@ class is used in a class pattern with positional arguments, each By default, an object is considered true unless its class defines either a "__bool__()" method that returns "False" or a "__len__()" -method that returns zero, when called with the object. [1] Here are -most of the built-in objects considered false: +method that returns zero, when called with the object. [1] If one of +the methods raises an exception when called, the exception is +propagated and the object does not have a truth value (for example, +"NotImplemented"). Here are most of the built-in objects considered +false: * constants defined to be false: "None" and "False" diff --git a/Lib/test/support/__init__.py b/Lib/test/support/__init__.py index 7bc2e1f3150035..3a639497fa1272 100644 --- a/Lib/test/support/__init__.py +++ b/Lib/test/support/__init__.py @@ -1781,7 +1781,7 @@ def skip_if_unlimited_stack_size(test): See https://github.com/python/cpython/issues/143460. """ - if is_wasi or os.name == "nt": + if is_emscripten or is_wasi or os.name == "nt": return test import resource diff --git a/Lib/test/test_capi/test_opt.py b/Lib/test/test_capi/test_opt.py index a2c041eb4a67d0..757e5e6ef53574 100644 --- a/Lib/test/test_capi/test_opt.py +++ b/Lib/test/test_capi/test_opt.py @@ -3575,6 +3575,42 @@ def testfunc(n): # _POP_TOP_NOP is a sign the optimizer ran and didn't hit bottom. self.assertGreaterEqual(count_ops(ex, "_POP_TOP_NOP"), 1) + def test_binary_op_subscr_init_frame(self): + class B: + def __getitem__(self, other): + return other + 1 + def testfunc(*args): + n, b = args[0] + for _ in range(n): + y = b[2] + + res, ex = self._run_with_optimizer(testfunc, (TIER2_THRESHOLD, B())) + self.assertIsNotNone(ex) + uops = get_opnames(ex) + + self.assertIn("_BINARY_OP_SUBSCR_INIT_CALL", uops) + # _POP_TOP_NOP is a sign the optimizer ran and didn't hit contradiction. + self.assertGreaterEqual(count_ops(ex, "_POP_TOP_NOP"), 1) + + def test_load_attr_property_frame(self): + class B: + @property + def prop(self): + return 3 + def testfunc(*args): + n, b = args[0] + for _ in range(n): + y = b.prop + b.prop + + testfunc((3, B())) + res, ex = self._run_with_optimizer(testfunc, (TIER2_THRESHOLD, B())) + self.assertIsNotNone(ex) + uops = get_opnames(ex) + + self.assertIn("_LOAD_ATTR_PROPERTY_FRAME", uops) + # This is a sign the optimizer ran and didn't hit contradiction. + self.assertIn("_INSERT_2_LOAD_CONST_INLINE_BORROW", uops) + def test_unary_negative(self): def testfunc(n): a = 3 diff --git a/Misc/NEWS.d/3.15.0a4.rst b/Misc/NEWS.d/3.15.0a4.rst new file mode 100644 index 00000000000000..408f76cab411e3 --- /dev/null +++ b/Misc/NEWS.d/3.15.0a4.rst @@ -0,0 +1,351 @@ +.. date: 2025-12-17-02-02-57 +.. gh-issue: 142836 +.. nonce: mR-fvK +.. release date: 2026-01-13 +.. section: Tests + +Accommodated Solaris in ``test_pdb.test_script_target_anonymous_pipe``. + +.. + +.. date: 2025-12-22-22-36-21 +.. gh-issue: 122431 +.. nonce: 9E3085 +.. section: Library + +Corrected the error message in :func:`readline.append_history_file` to state +that ``nelements`` must be non-negative instead of positive. + +.. + +.. date: 2025-12-21-17-44-28 +.. gh-issue: 143046 +.. nonce: GBa5Ip +.. section: Library + +The :mod:`asyncio` REPL no longer prints copyright and version messages in +the quiet mode (:option:`-q`). Patch by Bartosz Sławecki. + +.. + +.. date: 2025-12-20-16-35-42 +.. gh-issue: 80744 +.. nonce: X4pZ2N +.. section: Library + +Fix issue where ``pdb`` would read a ``.pdbrc`` twice if launched from the +home directory + +.. + +.. date: 2025-12-20-02-33-05 +.. gh-issue: 138122 +.. nonce: m3EF9E +.. section: Library + +Add blocking mode to Tachyon for accurate stack traces in applications with +many generators or fast-changing call stacks. Patch by Pablo Galindo. + +.. + +.. date: 2025-12-20-01-49-02 +.. gh-issue: 143010 +.. nonce: _-SWX0 +.. section: Library + +Fixed a bug in :mod:`mailbox` where the precise timing of an external event +could result in the library opening an existing file instead of a file it +expected to create. + +.. + +.. date: 2025-12-17-14-41-09 +.. gh-issue: 112127 +.. nonce: 13OHQk +.. section: Library + +Fix possible use-after-free in :func:`atexit.unregister` when the callback +is unregistered during comparison. + +.. + +.. date: 2025-12-17-03-03-12 +.. gh-issue: 138122 +.. nonce: m3EF9E +.. section: Library + +Fix incomplete stack traces in the Tachyon profiler's frame cache when +profiling code with deeply nested generators. The frame cache now validates +that stack traces reach the base frame before caching, preventing broken +flamegraphs. Patch by Pablo Galindo. + +.. + +.. date: 2025-12-16-15-32-41 +.. gh-issue: 142834 +.. nonce: g7mHw_ +.. section: Library + +Change the :mod:`pdb` ``commands`` command to use the last available +breakpoint instead of failing when the most recently created breakpoint was +deleted. + +.. + +.. date: 2025-12-16-14-49-19 +.. gh-issue: 142783 +.. nonce: VPV1ig +.. section: Library + +Fix zoneinfo use-after-free with descriptor _weak_cache. a descriptor as +_weak_cache could cause crashes during object creation. The fix ensures +proper reference counting for descriptor-provided objects. + +.. + +.. date: 2025-12-16-14-21-20 +.. gh-issue: 76007 +.. nonce: O4AmYl +.. section: Library + +Deprecate ``VERSION`` from :mod:`xml.etree.ElementTree` and ``version`` from +:mod:`!xml.sax.expatreader` and :mod:`xml.sax.handler`. Patch by Hugo van +Kemenade. + +.. + +.. date: 2025-12-16-04-39-27 +.. gh-issue: 142784 +.. nonce: HBGJag +.. section: Library + +The :mod:`asyncio` REPL now properly closes the loop upon the end of +interactive session. Previously, it could cause surprising warnings. +Contributed by Bartosz Sławecki. + +.. + +.. date: 2025-12-15-02-00-31 +.. gh-issue: 138122 +.. nonce: m3EF9E +.. section: Library + +Add binary output format to :mod:`profiling.sampling` for compact storage of +profiling data. The new ``--binary`` option captures samples to a file that +can be converted to other formats using the ``replay`` command. Patch by +Pablo Galindo + +.. + +.. date: 2025-12-13-23-26-42 +.. gh-issue: 142495 +.. nonce: I88Uv_ +.. section: Library + +:class:`collections.defaultdict` now prioritizes :meth:`~object.__setitem__` +when inserting default values from ``default_factory``. This prevents race +conditions where a default value would overwrite a value set before +``default_factory`` returns. + +.. + +.. date: 2025-12-13-10-34-59 +.. gh-issue: 142654 +.. nonce: fmm974 +.. section: Library + +Show the clearer error message when using ``profiling.sampling`` on an +unknown PID. + +.. + +.. date: 2025-12-11-22-59-33 +.. gh-issue: 142560 +.. nonce: GkJrkk +.. section: Library + +Fix use-after-free in :class:`bytearray` search-like methods +(:meth:`~bytearray.find`, :meth:`~bytearray.count`, +:meth:`~bytearray.index`, :meth:`~bytearray.rindex`, and +:meth:`~bytearray.rfind`) by marking the storage as exported which causes +reallocation attempts to raise :exc:`BufferError`. For +:func:`~operator.contains`, :meth:`~bytearray.split`, and +:meth:`~bytearray.rsplit` the :ref:`buffer protocol ` is used +for this. + +.. + +.. date: 2025-12-10-02-31-43 +.. gh-issue: 142419 +.. nonce: C8_LES +.. section: Library + +:meth:`mmap.mmap.set_name` method added to annotate an anonymous memory map +if Linux kernel supports ``PR_SET_VMA_ANON_NAME`` (Linux 5.17 or newer). +Patch by Donghee Na. + +.. + +.. date: 2025-10-12-12-05-52 +.. gh-issue: 139971 +.. nonce: UdoStU +.. section: Library + +:mod:`pydoc`: Ensure that the link to the online documentation of a +:term:`stdlib` module is correct. + +.. + +.. date: 2025-07-20-15-39-54 +.. gh-issue: 124098 +.. nonce: znFPIp +.. section: Library + +Fix issue where methods in handlers that lacked the protocol name but +matched a valid base handler method (e.g., ``_open()`` or ``error()``) were +incorrectly added to :class:`urllib.request.OpenerDirector`'s handlers. +Contributed by Andrea Mattei. + +.. + +.. date: 2025-07-05-08-30-07 +.. gh-issue: 136282 +.. nonce: K3JKyD +.. section: Library + +Add support for :const:`~configparser.UNNAMED_SECTION` when creating a +section via the mapping protocol access + +.. + +.. date: 2025-12-22-12-03-09 +.. gh-issue: 143057 +.. nonce: Majsre +.. section: Core and Builtins + +Avoid locking in :c:func:`PyTraceMalloc_Track` and +:c:func:`PyTraceMalloc_Untrack` when :mod:`tracemalloc` is not enabled. + +.. + +.. date: 2025-12-21-00-25-26 +.. gh-issue: 139109 +.. nonce: gwSsOL +.. section: Core and Builtins + +Add missing terminator in certain cases when tracing in the new JIT +compiler. + +.. + +.. date: 2025-12-19-00-59-29 +.. gh-issue: 142961 +.. nonce: q8WRSq +.. section: Core and Builtins + +Fix a segfault in the JIT when constant folding ``len(tuple)``. + +.. + +.. date: 2025-12-18-01-00-14 +.. gh-issue: 142776 +.. nonce: ACaoeP +.. section: Core and Builtins + +Fix a file descriptor leak in import.c + +.. + +.. date: 2025-12-17-20-31-09 +.. gh-issue: 139757 +.. nonce: 6DWxeQ +.. section: Core and Builtins + +Fix building JIT stencils on free-threaded builds. + +.. + +.. date: 2025-12-17-10-49-03 +.. gh-issue: 129068 +.. nonce: GlYnrO +.. section: Core and Builtins + +Make concurrent iteration over the same range iterator thread-safe in the +free threading build. + +.. + +.. date: 2025-12-16-23-26-41 +.. gh-issue: 142543 +.. nonce: wJKjBs +.. section: Core and Builtins + +Fix a stack overflow on Clang JIT build configurations with full LTO. + +.. + +.. date: 2025-12-16-20-38-17 +.. gh-issue: 142448 +.. nonce: mAFqwL +.. section: Core and Builtins + +Fix a bug when using monitoring with the JIT. + +.. + +.. date: 2025-12-16-11-56-20 +.. gh-issue: 142766 +.. nonce: Uy2HTm +.. section: Core and Builtins + +Clear the frame of a generator when :meth:`generator.close` is called. + +.. + +.. date: 2025-12-16-05-52-37 +.. gh-issue: 134584 +.. nonce: VsfOQR +.. section: Core and Builtins + +Eliminate redundant refcounting from ``_LOAD_ATTR_INSTANCE_VALUE``. + +.. + +.. date: 2025-12-16-05-24-24 +.. gh-issue: 134584 +.. nonce: tJ1usH +.. section: Core and Builtins + +Eliminate redundant refcounting from ``_STORE_ATTR_WITH_HINT``. + +.. + +.. date: 2025-12-13-01-11-03 +.. gh-issue: 142476 +.. nonce: 44Sp4N +.. section: Core and Builtins + +Fix a memory leak in the experimental Tier 2 optimizer when creating +executors. Patched by Shamil Abdulaev. + +.. + +.. date: 2025-11-06-05-21-25 +.. gh-issue: 100964 +.. nonce: TxPf1b +.. section: Core and Builtins + +Fix reference cycle in exhausted generator frames. Patch by Savannah +Ostrowski. + +.. + +.. date: 2025-10-11-17-01-21 +.. gh-issue: 139922 +.. nonce: RUkXyd +.. section: Core and Builtins + +Allow building CPython with the tail calling interpreter on Visual Studio +2026 MSVC. This provides a performance gain over the prior interpreter for +MSVC. Patch by Ken Jin, Brandt Bucher, and Chris Eibl. With help from the +MSVC team including Hulon Jenkins. diff --git a/Misc/NEWS.d/next/Core_and_Builtins/2025-10-11-17-01-21.gh-issue-139922.RUkXyd.rst b/Misc/NEWS.d/next/Core_and_Builtins/2025-10-11-17-01-21.gh-issue-139922.RUkXyd.rst deleted file mode 100644 index d498db07f91454..00000000000000 --- a/Misc/NEWS.d/next/Core_and_Builtins/2025-10-11-17-01-21.gh-issue-139922.RUkXyd.rst +++ /dev/null @@ -1 +0,0 @@ -Allow building CPython with the tail calling interpreter on Visual Studio 2026 MSVC. This provides a performance gain over the prior interpreter for MSVC. Patch by Ken Jin, Brandt Bucher, and Chris Eibl. With help from the MSVC team including Hulon Jenkins. diff --git a/Misc/NEWS.d/next/Core_and_Builtins/2025-11-06-05-21-25.gh-issue-100964.TxPf1b.rst b/Misc/NEWS.d/next/Core_and_Builtins/2025-11-06-05-21-25.gh-issue-100964.TxPf1b.rst deleted file mode 100644 index 7c554cf8dda5d1..00000000000000 --- a/Misc/NEWS.d/next/Core_and_Builtins/2025-11-06-05-21-25.gh-issue-100964.TxPf1b.rst +++ /dev/null @@ -1 +0,0 @@ -Fix reference cycle in exhausted generator frames. Patch by Savannah Ostrowski. diff --git a/Misc/NEWS.d/next/Core_and_Builtins/2025-12-11-22-59-33.gh-issue-142560.GkJrkk.rst b/Misc/NEWS.d/next/Core_and_Builtins/2025-12-11-22-59-33.gh-issue-142560.GkJrkk.rst deleted file mode 100644 index 9c0657214b0751..00000000000000 --- a/Misc/NEWS.d/next/Core_and_Builtins/2025-12-11-22-59-33.gh-issue-142560.GkJrkk.rst +++ /dev/null @@ -1 +0,0 @@ -Fix use-after-free in :class:`bytearray` search-like methods (:meth:`~bytearray.find`, :meth:`~bytearray.count`, :meth:`~bytearray.index`, :meth:`~bytearray.rindex`, and :meth:`~bytearray.rfind`) by marking the storage as exported which causes reallocation attempts to raise :exc:`BufferError`. For :func:`~operator.contains`, :meth:`~bytearray.split`, and :meth:`~bytearray.rsplit` the :ref:`buffer protocol ` is used for this. diff --git a/Misc/NEWS.d/next/Core_and_Builtins/2025-12-13-01-11-03.gh-issue-142476.44Sp4N.rst b/Misc/NEWS.d/next/Core_and_Builtins/2025-12-13-01-11-03.gh-issue-142476.44Sp4N.rst deleted file mode 100644 index eae1f3a1ce53b6..00000000000000 --- a/Misc/NEWS.d/next/Core_and_Builtins/2025-12-13-01-11-03.gh-issue-142476.44Sp4N.rst +++ /dev/null @@ -1,2 +0,0 @@ -Fix a memory leak in the experimental Tier 2 optimizer when creating -executors. Patched by Shamil Abdulaev. diff --git a/Misc/NEWS.d/next/Core_and_Builtins/2025-12-16-05-24-24.gh-issue-134584.tJ1usH.rst b/Misc/NEWS.d/next/Core_and_Builtins/2025-12-16-05-24-24.gh-issue-134584.tJ1usH.rst deleted file mode 100644 index aa096fc827dbc4..00000000000000 --- a/Misc/NEWS.d/next/Core_and_Builtins/2025-12-16-05-24-24.gh-issue-134584.tJ1usH.rst +++ /dev/null @@ -1 +0,0 @@ -Eliminate redundant refcounting from ``_STORE_ATTR_WITH_HINT``. diff --git a/Misc/NEWS.d/next/Core_and_Builtins/2025-12-16-05-52-37.gh-issue-134584.VsfOQR.rst b/Misc/NEWS.d/next/Core_and_Builtins/2025-12-16-05-52-37.gh-issue-134584.VsfOQR.rst deleted file mode 100644 index d92f2c166c56a4..00000000000000 --- a/Misc/NEWS.d/next/Core_and_Builtins/2025-12-16-05-52-37.gh-issue-134584.VsfOQR.rst +++ /dev/null @@ -1 +0,0 @@ -Eliminate redundant refcounting from ``_LOAD_ATTR_INSTANCE_VALUE``. diff --git a/Misc/NEWS.d/next/Core_and_Builtins/2025-12-16-11-56-20.gh-issue-142766.Uy2HTm.rst b/Misc/NEWS.d/next/Core_and_Builtins/2025-12-16-11-56-20.gh-issue-142766.Uy2HTm.rst deleted file mode 100644 index 6a14976a6dcf94..00000000000000 --- a/Misc/NEWS.d/next/Core_and_Builtins/2025-12-16-11-56-20.gh-issue-142766.Uy2HTm.rst +++ /dev/null @@ -1 +0,0 @@ -Clear the frame of a generator when :meth:`generator.close` is called. diff --git a/Misc/NEWS.d/next/Core_and_Builtins/2025-12-16-20-38-17.gh-issue-142448.mAFqwL.rst b/Misc/NEWS.d/next/Core_and_Builtins/2025-12-16-20-38-17.gh-issue-142448.mAFqwL.rst deleted file mode 100644 index bcc7c1fb12d094..00000000000000 --- a/Misc/NEWS.d/next/Core_and_Builtins/2025-12-16-20-38-17.gh-issue-142448.mAFqwL.rst +++ /dev/null @@ -1 +0,0 @@ -Fix a bug when using monitoring with the JIT. diff --git a/Misc/NEWS.d/next/Core_and_Builtins/2025-12-16-23-26-41.gh-issue-142543.wJKjBs.rst b/Misc/NEWS.d/next/Core_and_Builtins/2025-12-16-23-26-41.gh-issue-142543.wJKjBs.rst deleted file mode 100644 index 0897127fec747e..00000000000000 --- a/Misc/NEWS.d/next/Core_and_Builtins/2025-12-16-23-26-41.gh-issue-142543.wJKjBs.rst +++ /dev/null @@ -1 +0,0 @@ -Fix a stack overflow on Clang JIT build configurations with full LTO. diff --git a/Misc/NEWS.d/next/Core_and_Builtins/2025-12-17-10-49-03.gh-issue-129068.GlYnrO.rst b/Misc/NEWS.d/next/Core_and_Builtins/2025-12-17-10-49-03.gh-issue-129068.GlYnrO.rst deleted file mode 100644 index 16b19524cd4057..00000000000000 --- a/Misc/NEWS.d/next/Core_and_Builtins/2025-12-17-10-49-03.gh-issue-129068.GlYnrO.rst +++ /dev/null @@ -1,2 +0,0 @@ -Make concurrent iteration over the same range iterator thread-safe in the -free threading build. diff --git a/Misc/NEWS.d/next/Core_and_Builtins/2025-12-17-20-31-09.gh-issue-139757.6DWxeQ.rst b/Misc/NEWS.d/next/Core_and_Builtins/2025-12-17-20-31-09.gh-issue-139757.6DWxeQ.rst deleted file mode 100644 index 3c476d3eaea574..00000000000000 --- a/Misc/NEWS.d/next/Core_and_Builtins/2025-12-17-20-31-09.gh-issue-139757.6DWxeQ.rst +++ /dev/null @@ -1 +0,0 @@ -Fix building JIT stencils on free-threaded builds. diff --git a/Misc/NEWS.d/next/Core_and_Builtins/2025-12-18-01-00-14.gh-issue-142776.ACaoeP.rst b/Misc/NEWS.d/next/Core_and_Builtins/2025-12-18-01-00-14.gh-issue-142776.ACaoeP.rst deleted file mode 100644 index 3039b04d89cb88..00000000000000 --- a/Misc/NEWS.d/next/Core_and_Builtins/2025-12-18-01-00-14.gh-issue-142776.ACaoeP.rst +++ /dev/null @@ -1 +0,0 @@ -Fix a file descriptor leak in import.c diff --git a/Misc/NEWS.d/next/Core_and_Builtins/2025-12-19-00-59-29.gh-issue-142961.q8WRSq.rst b/Misc/NEWS.d/next/Core_and_Builtins/2025-12-19-00-59-29.gh-issue-142961.q8WRSq.rst deleted file mode 100644 index 4b75ab232d50e4..00000000000000 --- a/Misc/NEWS.d/next/Core_and_Builtins/2025-12-19-00-59-29.gh-issue-142961.q8WRSq.rst +++ /dev/null @@ -1 +0,0 @@ -Fix a segfault in the JIT when constant folding ``len(tuple)``. diff --git a/Misc/NEWS.d/next/Core_and_Builtins/2025-12-21-00-25-26.gh-issue-139109.gwSsOL.rst b/Misc/NEWS.d/next/Core_and_Builtins/2025-12-21-00-25-26.gh-issue-139109.gwSsOL.rst deleted file mode 100644 index 17cceac4e09057..00000000000000 --- a/Misc/NEWS.d/next/Core_and_Builtins/2025-12-21-00-25-26.gh-issue-139109.gwSsOL.rst +++ /dev/null @@ -1 +0,0 @@ -Add missing terminator in certain cases when tracing in the new JIT compiler. diff --git a/Misc/NEWS.d/next/Core_and_Builtins/2025-12-22-12-03-09.gh-issue-143057.Majsre.rst b/Misc/NEWS.d/next/Core_and_Builtins/2025-12-22-12-03-09.gh-issue-143057.Majsre.rst deleted file mode 100644 index 2eac8c1cfdc10c..00000000000000 --- a/Misc/NEWS.d/next/Core_and_Builtins/2025-12-22-12-03-09.gh-issue-143057.Majsre.rst +++ /dev/null @@ -1 +0,0 @@ -Avoid locking in :c:func:`PyTraceMalloc_Track` and :c:func:`PyTraceMalloc_Untrack` when :mod:`tracemalloc` is not enabled. diff --git a/Misc/NEWS.d/next/Library/2025-07-05-08-30-07.gh-issue-136282.K3JKyD.rst b/Misc/NEWS.d/next/Library/2025-07-05-08-30-07.gh-issue-136282.K3JKyD.rst deleted file mode 100644 index b5589b47716c70..00000000000000 --- a/Misc/NEWS.d/next/Library/2025-07-05-08-30-07.gh-issue-136282.K3JKyD.rst +++ /dev/null @@ -1,2 +0,0 @@ -Add support for :const:`~configparser.UNNAMED_SECTION` when creating a -section via the mapping protocol access diff --git a/Misc/NEWS.d/next/Library/2025-07-20-15-39-54.gh-issue-124098.znFPIp.rst b/Misc/NEWS.d/next/Library/2025-07-20-15-39-54.gh-issue-124098.znFPIp.rst deleted file mode 100644 index 236b37d268ef2d..00000000000000 --- a/Misc/NEWS.d/next/Library/2025-07-20-15-39-54.gh-issue-124098.znFPIp.rst +++ /dev/null @@ -1,4 +0,0 @@ -Fix issue where methods in handlers that lacked the protocol name but -matched a valid base handler method (e.g., ``_open()`` or ``error()``) -were incorrectly added to :class:`urllib.request.OpenerDirector`'s -handlers. Contributed by Andrea Mattei. diff --git a/Misc/NEWS.d/next/Library/2025-10-12-12-05-52.gh-issue-139971.UdoStU.rst b/Misc/NEWS.d/next/Library/2025-10-12-12-05-52.gh-issue-139971.UdoStU.rst deleted file mode 100644 index 720397e2729c0a..00000000000000 --- a/Misc/NEWS.d/next/Library/2025-10-12-12-05-52.gh-issue-139971.UdoStU.rst +++ /dev/null @@ -1,2 +0,0 @@ -:mod:`pydoc`: Ensure that the link to the online documentation of a -:term:`stdlib` module is correct. diff --git a/Misc/NEWS.d/next/Library/2025-12-10-02-31-43.gh-issue-142419.C8_LES.rst b/Misc/NEWS.d/next/Library/2025-12-10-02-31-43.gh-issue-142419.C8_LES.rst deleted file mode 100644 index 63955923cd157c..00000000000000 --- a/Misc/NEWS.d/next/Library/2025-12-10-02-31-43.gh-issue-142419.C8_LES.rst +++ /dev/null @@ -1,3 +0,0 @@ -:meth:`mmap.mmap.set_name` method added to annotate an anonymous memory map -if Linux kernel supports ``PR_SET_VMA_ANON_NAME`` (Linux 5.17 or newer). -Patch by Donghee Na. diff --git a/Misc/NEWS.d/next/Library/2025-12-13-10-34-59.gh-issue-142654.fmm974.rst b/Misc/NEWS.d/next/Library/2025-12-13-10-34-59.gh-issue-142654.fmm974.rst deleted file mode 100644 index 7bb14cb499d850..00000000000000 --- a/Misc/NEWS.d/next/Library/2025-12-13-10-34-59.gh-issue-142654.fmm974.rst +++ /dev/null @@ -1,2 +0,0 @@ -Show the clearer error message when using ``profiling.sampling`` on an -unknown PID. diff --git a/Misc/NEWS.d/next/Library/2025-12-13-23-26-42.gh-issue-142495.I88Uv_.rst b/Misc/NEWS.d/next/Library/2025-12-13-23-26-42.gh-issue-142495.I88Uv_.rst deleted file mode 100644 index 3e1a624fe56473..00000000000000 --- a/Misc/NEWS.d/next/Library/2025-12-13-23-26-42.gh-issue-142495.I88Uv_.rst +++ /dev/null @@ -1,4 +0,0 @@ -:class:`collections.defaultdict` now prioritizes :meth:`~object.__setitem__` -when inserting default values from ``default_factory``. This prevents race -conditions where a default value would overwrite a value set before -``default_factory`` returns. diff --git a/Misc/NEWS.d/next/Library/2025-12-15-02-00-31.gh-issue-138122.m3EF9E.rst b/Misc/NEWS.d/next/Library/2025-12-15-02-00-31.gh-issue-138122.m3EF9E.rst deleted file mode 100644 index f9c2cee51d1dcd..00000000000000 --- a/Misc/NEWS.d/next/Library/2025-12-15-02-00-31.gh-issue-138122.m3EF9E.rst +++ /dev/null @@ -1,4 +0,0 @@ -Add binary output format to :mod:`profiling.sampling` for compact storage of -profiling data. The new ``--binary`` option captures samples to a file that -can be converted to other formats using the ``replay`` command. Patch by -Pablo Galindo diff --git a/Misc/NEWS.d/next/Library/2025-12-16-04-39-27.gh-issue-142784.HBGJag.rst b/Misc/NEWS.d/next/Library/2025-12-16-04-39-27.gh-issue-142784.HBGJag.rst deleted file mode 100644 index 92a723cbc29739..00000000000000 --- a/Misc/NEWS.d/next/Library/2025-12-16-04-39-27.gh-issue-142784.HBGJag.rst +++ /dev/null @@ -1,3 +0,0 @@ -The :mod:`asyncio` REPL now properly closes the loop upon the end of interactive session. -Previously, it could cause surprising warnings. -Contributed by Bartosz Sławecki. diff --git a/Misc/NEWS.d/next/Library/2025-12-16-14-21-20.gh-issue-76007.O4AmYl.rst b/Misc/NEWS.d/next/Library/2025-12-16-14-21-20.gh-issue-76007.O4AmYl.rst deleted file mode 100644 index cfda7327e8fee8..00000000000000 --- a/Misc/NEWS.d/next/Library/2025-12-16-14-21-20.gh-issue-76007.O4AmYl.rst +++ /dev/null @@ -1,3 +0,0 @@ -Deprecate ``VERSION`` from :mod:`xml.etree.ElementTree` and ``version`` from -:mod:`!xml.sax.expatreader` and :mod:`xml.sax.handler`. Patch by Hugo van -Kemenade. diff --git a/Misc/NEWS.d/next/Library/2025-12-16-14-49-19.gh-issue-142783.VPV1ig.rst b/Misc/NEWS.d/next/Library/2025-12-16-14-49-19.gh-issue-142783.VPV1ig.rst deleted file mode 100644 index db6de6e801f8a4..00000000000000 --- a/Misc/NEWS.d/next/Library/2025-12-16-14-49-19.gh-issue-142783.VPV1ig.rst +++ /dev/null @@ -1,3 +0,0 @@ -:mod:`zoneinfo`: fix a use-after-free crash when instantiating -:class:`~zoneinfo.ZoneInfo` objects with an invalid ``_weak_cache`` -descriptor. diff --git a/Misc/NEWS.d/next/Library/2025-12-16-15-32-41.gh-issue-142834.g7mHw_.rst b/Misc/NEWS.d/next/Library/2025-12-16-15-32-41.gh-issue-142834.g7mHw_.rst deleted file mode 100644 index 8cde592e7c937d..00000000000000 --- a/Misc/NEWS.d/next/Library/2025-12-16-15-32-41.gh-issue-142834.g7mHw_.rst +++ /dev/null @@ -1 +0,0 @@ -Change the :mod:`pdb` ``commands`` command to use the last available breakpoint instead of failing when the most recently created breakpoint was deleted. diff --git a/Misc/NEWS.d/next/Library/2025-12-17-03-03-12.gh-issue-138122.m3EF9E.rst b/Misc/NEWS.d/next/Library/2025-12-17-03-03-12.gh-issue-138122.m3EF9E.rst deleted file mode 100644 index e33a761aa61825..00000000000000 --- a/Misc/NEWS.d/next/Library/2025-12-17-03-03-12.gh-issue-138122.m3EF9E.rst +++ /dev/null @@ -1,4 +0,0 @@ -Fix incomplete stack traces in the Tachyon profiler's frame cache when -profiling code with deeply nested generators. The frame cache now validates -that stack traces reach the base frame before caching, preventing broken -flamegraphs. Patch by Pablo Galindo. diff --git a/Misc/NEWS.d/next/Library/2025-12-17-14-41-09.gh-issue-112127.13OHQk.rst b/Misc/NEWS.d/next/Library/2025-12-17-14-41-09.gh-issue-112127.13OHQk.rst deleted file mode 100644 index c983683ebd5589..00000000000000 --- a/Misc/NEWS.d/next/Library/2025-12-17-14-41-09.gh-issue-112127.13OHQk.rst +++ /dev/null @@ -1,2 +0,0 @@ -Fix possible use-after-free in :func:`atexit.unregister` when the callback -is unregistered during comparison. diff --git a/Misc/NEWS.d/next/Library/2025-12-20-01-49-02.gh-issue-143010._-SWX0.rst b/Misc/NEWS.d/next/Library/2025-12-20-01-49-02.gh-issue-143010._-SWX0.rst deleted file mode 100644 index 4914d0b7be727b..00000000000000 --- a/Misc/NEWS.d/next/Library/2025-12-20-01-49-02.gh-issue-143010._-SWX0.rst +++ /dev/null @@ -1 +0,0 @@ -Fixed a bug in :mod:`mailbox` where the precise timing of an external event could result in the library opening an existing file instead of a file it expected to create. diff --git a/Misc/NEWS.d/next/Library/2025-12-20-02-33-05.gh-issue-138122.m3EF9E.rst b/Misc/NEWS.d/next/Library/2025-12-20-02-33-05.gh-issue-138122.m3EF9E.rst deleted file mode 100644 index a5785a88b0f433..00000000000000 --- a/Misc/NEWS.d/next/Library/2025-12-20-02-33-05.gh-issue-138122.m3EF9E.rst +++ /dev/null @@ -1,2 +0,0 @@ -Add blocking mode to Tachyon for accurate stack traces in applications with -many generators or fast-changing call stacks. Patch by Pablo Galindo. diff --git a/Misc/NEWS.d/next/Library/2025-12-20-16-35-42.gh-issue-80744.X4pZ2N.rst b/Misc/NEWS.d/next/Library/2025-12-20-16-35-42.gh-issue-80744.X4pZ2N.rst deleted file mode 100644 index 03ec9e4652b8cc..00000000000000 --- a/Misc/NEWS.d/next/Library/2025-12-20-16-35-42.gh-issue-80744.X4pZ2N.rst +++ /dev/null @@ -1 +0,0 @@ -Fix issue where ``pdb`` would read a ``.pdbrc`` twice if launched from the home directory diff --git a/Misc/NEWS.d/next/Library/2025-12-21-17-44-28.gh-issue-143046.GBa5Ip.rst b/Misc/NEWS.d/next/Library/2025-12-21-17-44-28.gh-issue-143046.GBa5Ip.rst deleted file mode 100644 index ac819a47f4cde9..00000000000000 --- a/Misc/NEWS.d/next/Library/2025-12-21-17-44-28.gh-issue-143046.GBa5Ip.rst +++ /dev/null @@ -1,2 +0,0 @@ -The :mod:`asyncio` REPL no longer prints copyright and version messages in -the quiet mode (:option:`-q`). Patch by Bartosz Sławecki. diff --git a/Misc/NEWS.d/next/Library/2025-12-22-22-36-21.gh-issue-122431.9E3085.rst b/Misc/NEWS.d/next/Library/2025-12-22-22-36-21.gh-issue-122431.9E3085.rst deleted file mode 100644 index 8936ac9395f743..00000000000000 --- a/Misc/NEWS.d/next/Library/2025-12-22-22-36-21.gh-issue-122431.9E3085.rst +++ /dev/null @@ -1 +0,0 @@ -Corrected the error message in :func:`readline.append_history_file` to state that ``nelements`` must be non-negative instead of positive. diff --git a/Misc/NEWS.d/next/Tests/2025-12-17-02-02-57.gh-issue-142836.mR-fvK.rst b/Misc/NEWS.d/next/Tests/2025-12-17-02-02-57.gh-issue-142836.mR-fvK.rst deleted file mode 100644 index dd84ce9839ffa9..00000000000000 --- a/Misc/NEWS.d/next/Tests/2025-12-17-02-02-57.gh-issue-142836.mR-fvK.rst +++ /dev/null @@ -1 +0,0 @@ -Accommodated Solaris in ``test_pdb.test_script_target_anonymous_pipe``. diff --git a/Python/optimizer_bytecodes.c b/Python/optimizer_bytecodes.c index 7b386454b76c09..1a64810b50a3a4 100644 --- a/Python/optimizer_bytecodes.c +++ b/Python/optimizer_bytecodes.c @@ -327,9 +327,20 @@ dummy_func(void) { GETLOCAL(this_instr->operand0) = sym_new_null(ctx); } - op(_BINARY_OP_SUBSCR_INIT_CALL, (container, sub, getitem -- new_frame)) { - new_frame = PyJitRef_NULL; - ctx->done = true; + op(_BINARY_OP_SUBSCR_INIT_CALL, (container, sub, getitem -- new_frame)) { + assert((this_instr + 1)->opcode == _PUSH_FRAME); + PyCodeObject *co = get_code_with_logging(this_instr + 1); + if (co == NULL) { + ctx->done = true; + break; + } + _Py_UOpsAbstractFrame *f = frame_new(ctx, co, 0, NULL, 0); + if (f == NULL) { + break; + } + f->locals[0] = container; + f->locals[1] = sub; + new_frame = PyJitRef_Wrap((JitOptSymbol *)f); } op(_BINARY_OP_SUBSCR_STR_INT, (str_st, sub_st -- res, s, i)) { @@ -761,9 +772,19 @@ dummy_func(void) { } op(_LOAD_ATTR_PROPERTY_FRAME, (fget/4, owner -- new_frame)) { - (void)fget; - new_frame = PyJitRef_NULL; - ctx->done = true; + // + 1 for _SAVE_RETURN_OFFSET + assert((this_instr + 2)->opcode == _PUSH_FRAME); + PyCodeObject *co = get_code_with_logging(this_instr + 2); + if (co == NULL) { + ctx->done = true; + break; + } + _Py_UOpsAbstractFrame *f = frame_new(ctx, co, 0, NULL, 0); + if (f == NULL) { + break; + } + f->locals[0] = owner; + new_frame = PyJitRef_Wrap((JitOptSymbol *)f); } op(_INIT_CALL_BOUND_METHOD_EXACT_ARGS, (callable, self_or_null, unused[oparg] -- callable, self_or_null, unused[oparg])) { diff --git a/Python/optimizer_cases.c.h b/Python/optimizer_cases.c.h index accb3e620ebc4e..f3bc7213fcce3f 100644 --- a/Python/optimizer_cases.c.h +++ b/Python/optimizer_cases.c.h @@ -1114,9 +1114,24 @@ } case _BINARY_OP_SUBSCR_INIT_CALL: { + JitOptRef sub; + JitOptRef container; JitOptRef new_frame; - new_frame = PyJitRef_NULL; - ctx->done = true; + sub = stack_pointer[-2]; + container = stack_pointer[-3]; + assert((this_instr + 1)->opcode == _PUSH_FRAME); + PyCodeObject *co = get_code_with_logging(this_instr + 1); + if (co == NULL) { + ctx->done = true; + break; + } + _Py_UOpsAbstractFrame *f = frame_new(ctx, co, 0, NULL, 0); + if (f == NULL) { + break; + } + f->locals[0] = container; + f->locals[1] = sub; + new_frame = PyJitRef_Wrap((JitOptSymbol *)f); CHECK_STACK_BOUNDS(-2); stack_pointer[-3] = new_frame; stack_pointer += -2; @@ -1947,11 +1962,22 @@ } case _LOAD_ATTR_PROPERTY_FRAME: { + JitOptRef owner; JitOptRef new_frame; + owner = stack_pointer[-1]; PyObject *fget = (PyObject *)this_instr->operand0; - (void)fget; - new_frame = PyJitRef_NULL; - ctx->done = true; + assert((this_instr + 2)->opcode == _PUSH_FRAME); + PyCodeObject *co = get_code_with_logging(this_instr + 2); + if (co == NULL) { + ctx->done = true; + break; + } + _Py_UOpsAbstractFrame *f = frame_new(ctx, co, 0, NULL, 0); + if (f == NULL) { + break; + } + f->locals[0] = owner; + new_frame = PyJitRef_Wrap((JitOptSymbol *)f); stack_pointer[-1] = new_frame; break; } diff --git a/README.rst b/README.rst index 5f451c6876ccfe..e9bf44ad14fb79 100644 --- a/README.rst +++ b/README.rst @@ -1,4 +1,4 @@ -This is Python version 3.15.0 alpha 3 +This is Python version 3.15.0 alpha 4 ===================================== .. image:: https://github.com/python/cpython/actions/workflows/build.yml/badge.svg?branch=main&event=push