Skip to content

Commit

Permalink
pythongh-112826: Add a "What's New" Entry About _thread._is_main_inte…
Browse files Browse the repository at this point in the history
…rpreter (pythongh-112853)

As of pythongh-112661, the threading module expects the _thread module to have a _is_main_interpreter(), which is used in the internal threading._shutdown().  This change causes a problem for anyone that replaces the _thread module with a custom one (only if they don't provide _is_main_interpreter()).  They need to be sure to add it for 3.13+, thus this PR is adding a note in "What's New".

This also forward-ports the "What's New" entry from 3.12 (pythongh-112850).  Note that we do not also forward-port the fix in that PR.  The fix is there only due to a regression from 3.12.0. There is no regression in 3.13+.
  • Loading branch information
ericsnowcurrently authored and aisk committed Feb 11, 2024
1 parent 0640620 commit d1cfbb7
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 0 deletions.
9 changes: 9 additions & 0 deletions Doc/whatsnew/3.12.rst
Original file line number Diff line number Diff line change
Expand Up @@ -1895,6 +1895,15 @@ Changes in the Python API
* Mixing tabs and spaces as indentation in the same file is not supported anymore and will
raise a :exc:`TabError`.

* The :mod:`threading` module now expects the :mod:`!_thread` module to have
an ``_is_main_interpreter`` attribute. It is a function with no
arguments that returns ``True`` if the current interpreter is the
main interpreter.

Any library or application that provides a custom ``_thread`` module
should provide ``_is_main_interpreter()``.
(See :gh:`112826`.)

Build Changes
=============

Expand Down
10 changes: 10 additions & 0 deletions Doc/whatsnew/3.13.rst
Original file line number Diff line number Diff line change
Expand Up @@ -1082,6 +1082,16 @@ Changes in the Python API
retrieve a username, instead of :exc:`ImportError` on non-Unix platforms or
:exc:`KeyError` on Unix platforms where the password database is empty.

* The :mod:`threading` module now expects the :mod:`!_thread` module to have
an ``_is_main_interpreter`` attribute. It is a function with no
arguments that returns ``True`` if the current interpreter is the
main interpreter.

Any library or application that provides a custom ``_thread`` module
must provide ``_is_main_interpreter()``, just like the module's
other "private" attributes.
(See :gh:`112826`.)


Build Changes
=============
Expand Down

0 comments on commit d1cfbb7

Please sign in to comment.