https://github.com/python/cpython/commit/748262f85e9ca9b94d6683401f1d4ac12417b02a
commit: 748262f85e9ca9b94d6683401f1d4ac12417b02a
branch: 3.15
author: Miss Islington (bot) <[email protected]>
committer: hugovk <[email protected]>
date: 2026-10-03T19:06:16+03:00
summary:

[3.15] gh-158643: Document that `Py_EnterRecursiveCall` uses the C stack, not a 
counter (GH-158644) (#158653)

Co-authored-by: Bhuvansh <[email protected]>
Co-authored-by: An Long <[email protected]>

files:
M Doc/c-api/exceptions.rst

diff --git a/Doc/c-api/exceptions.rst b/Doc/c-api/exceptions.rst
index 40522f8c7b13756..0c8d14dc134ebc1 100644
--- a/Doc/c-api/exceptions.rst
+++ b/Doc/c-api/exceptions.rst
@@ -1034,6 +1034,10 @@ because the :ref:`call protocol <call>` takes care of 
recursion handling.
    case, a :exc:`RecursionError` is set and a nonzero value is returned.
    Otherwise, zero is returned.
 
+   The check is based on the remaining C stack space of the current thread,
+   not on a count of calls, so it is unaffected by
+   :c:func:`Py_SetRecursionLimit` and :func:`sys.setrecursionlimit`.
+
    *where* should be a UTF-8 encoded string such as ``" in instance check"`` to
    be concatenated to the :exc:`RecursionError` message caused by the recursion
    depth limit.
@@ -1044,6 +1048,10 @@ because the :ref:`call protocol <call>` takes care of 
recursion handling.
    .. versionchanged:: 3.9
       This function is now also available in the :ref:`limited API 
<limited-c-api>`.
 
+   .. versionchanged:: 3.14
+      The check is based on the remaining C stack space.  Previously, a
+      separate counter of C-level calls was used.
+
 .. c:function:: void Py_LeaveRecursiveCall(void)
 
    Ends a :c:func:`Py_EnterRecursiveCall`.  Must be called once for each

_______________________________________________
Python-checkins mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3//lists/python-checkins.python.org
Member address: [email protected]

Reply via email to