From 7752629223acadd783d8248822bfd87a8dd75c8f Mon Sep 17 00:00:00 2001 From: Rok Mandeljc Date: Wed, 24 Sep 2025 12:57:00 +0200 Subject: [PATCH 1/8] gh-139231: Fix estimation of available stack size for recursion limit on macOS (GH-139232) Use `pthread_get_stackaddr_np()` and `pthread_get_stacksize_np()` to determine the stack address and size. --- Python/ceval.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/Python/ceval.c b/Python/ceval.c index 6ce20af62e7249..3ad2afcc53cd6a 100644 --- a/Python/ceval.c +++ b/Python/ceval.c @@ -437,6 +437,13 @@ _Py_InitializeRecursionLimits(PyThreadState *tstate) SetThreadStackGuarantee(&guarantee); _tstate->c_stack_hard_limit = ((uintptr_t)low) + guarantee + _PyOS_STACK_MARGIN_BYTES; _tstate->c_stack_soft_limit = _tstate->c_stack_hard_limit + _PyOS_STACK_MARGIN_BYTES; +#elif defined(__APPLE__) + pthread_t this_thread = pthread_self(); + void *stack_addr = pthread_get_stackaddr_np(this_thread); // top of the stack + size_t stack_size = pthread_get_stacksize_np(this_thread); + _tstate->c_stack_top = (uintptr_t)stack_addr; + _tstate->c_stack_hard_limit = _tstate->c_stack_top - stack_size; + _tstate->c_stack_soft_limit = _tstate->c_stack_hard_limit + _PyOS_STACK_MARGIN_BYTES; #else uintptr_t here_addr = _Py_get_machine_stack_pointer(); /// XXX musl supports HAVE_PTHRED_GETATTR_NP, but the resulting stack size From 03003676ef661f6475f80d6634f1b893b34da45a Mon Sep 17 00:00:00 2001 From: Mark Shannon Date: Tue, 7 Oct 2025 14:04:37 +0100 Subject: [PATCH 2/8] GH-139291: Fix C stack limits by factoring out finding hardware stack limits (GH-139294) --- Python/ceval.c | 60 +++++++++++++++++++++++++++----------------------- 1 file changed, 32 insertions(+), 28 deletions(-) diff --git a/Python/ceval.c b/Python/ceval.c index 3ad2afcc53cd6a..c01105321a4667 100644 --- a/Python/ceval.c +++ b/Python/ceval.c @@ -424,31 +424,26 @@ int pthread_attr_destroy(pthread_attr_t *a) #endif - -void -_Py_InitializeRecursionLimits(PyThreadState *tstate) +static void +hardware_stack_limits(uintptr_t *top, uintptr_t *base) { - _PyThreadStateImpl *_tstate = (_PyThreadStateImpl *)tstate; #ifdef WIN32 ULONG_PTR low, high; GetCurrentThreadStackLimits(&low, &high); - _tstate->c_stack_top = (uintptr_t)high; + *top = (uintptr_t)high; ULONG guarantee = 0; SetThreadStackGuarantee(&guarantee); - _tstate->c_stack_hard_limit = ((uintptr_t)low) + guarantee + _PyOS_STACK_MARGIN_BYTES; - _tstate->c_stack_soft_limit = _tstate->c_stack_hard_limit + _PyOS_STACK_MARGIN_BYTES; + *base = (uintptr_t)low + guarantee; #elif defined(__APPLE__) pthread_t this_thread = pthread_self(); void *stack_addr = pthread_get_stackaddr_np(this_thread); // top of the stack size_t stack_size = pthread_get_stacksize_np(this_thread); - _tstate->c_stack_top = (uintptr_t)stack_addr; - _tstate->c_stack_hard_limit = _tstate->c_stack_top - stack_size; - _tstate->c_stack_soft_limit = _tstate->c_stack_hard_limit + _PyOS_STACK_MARGIN_BYTES; + *top = (uintptr_t)stack_addr; + *base = ((uintptr_t)stack_addr) - stack_size; #else - uintptr_t here_addr = _Py_get_machine_stack_pointer(); -/// XXX musl supports HAVE_PTHRED_GETATTR_NP, but the resulting stack size -/// (on alpine at least) is much smaller than expected and imposes undue limits -/// compared to the old stack size estimation. (We assume musl is not glibc.) + /// XXX musl supports HAVE_PTHRED_GETATTR_NP, but the resulting stack size + /// (on alpine at least) is much smaller than expected and imposes undue limits + /// compared to the old stack size estimation. (We assume musl is not glibc.) # if defined(HAVE_PTHREAD_GETATTR_NP) && !defined(_AIX) && \ !defined(__NetBSD__) && (defined(__GLIBC__) || !defined(__linux__)) size_t stack_size, guard_size; @@ -461,26 +456,35 @@ _Py_InitializeRecursionLimits(PyThreadState *tstate) err |= pthread_attr_destroy(&attr); } if (err == 0) { - uintptr_t base = ((uintptr_t)stack_addr) + guard_size; - _tstate->c_stack_top = base + stack_size; -#ifdef _Py_THREAD_SANITIZER - // Thread sanitizer crashes if we use a bit more than half the stack. - _tstate->c_stack_soft_limit = base + (stack_size / 2); -#else - _tstate->c_stack_soft_limit = base + _PyOS_STACK_MARGIN_BYTES * 2; -#endif - _tstate->c_stack_hard_limit = base + _PyOS_STACK_MARGIN_BYTES; - assert(_tstate->c_stack_soft_limit < here_addr); - assert(here_addr < _tstate->c_stack_top); + *base = ((uintptr_t)stack_addr) + guard_size; + *top = (uintptr_t)stack_addr + stack_size; return; } # endif - _tstate->c_stack_top = _Py_SIZE_ROUND_UP(here_addr, 4096); - _tstate->c_stack_soft_limit = _tstate->c_stack_top - Py_C_STACK_SIZE; - _tstate->c_stack_hard_limit = _tstate->c_stack_top - (Py_C_STACK_SIZE + _PyOS_STACK_MARGIN_BYTES); + uintptr_t here_addr = _Py_get_machine_stack_pointer(); + uintptr_t top_addr = _Py_SIZE_ROUND_UP(here_addr, 4096); + *top = top_addr; + *base = top_addr - Py_C_STACK_SIZE; #endif } +void +_Py_InitializeRecursionLimits(PyThreadState *tstate) +{ + uintptr_t top; + uintptr_t base; + hardware_stack_limits(&top, &base); +#ifdef _Py_THREAD_SANITIZER + // Thread sanitizer crashes if we use more than half the stack. + uintptr_t stacksize = top - base; + base += stacksize/2; +#endif + _PyThreadStateImpl *_tstate = (_PyThreadStateImpl *)tstate; + _tstate->c_stack_top = top; + _tstate->c_stack_hard_limit = base + _PyOS_STACK_MARGIN_BYTES; + _tstate->c_stack_soft_limit = base + _PyOS_STACK_MARGIN_BYTES * 2; +} + /* The function _Py_EnterRecursiveCallTstate() only calls _Py_CheckRecursiveCall() if the recursion_depth reaches recursion_limit. */ int From 2cca51f351d47128c7282b64f5807043652c4d21 Mon Sep 17 00:00:00 2001 From: Petr Viktorin Date: Mon, 17 Nov 2025 13:39:28 +0100 Subject: [PATCH 3/8] gh-139653: Add PyUnstable_ThreadState_SetStackProtection() (GH-139668) Add PyUnstable_ThreadState_SetStackProtection() and PyUnstable_ThreadState_ResetStackProtection() functions to set the stack base address and stack size of a Python thread state. Co-authored-by: Petr Viktorin --- Doc/c-api/exceptions.rst | 3 + Doc/c-api/init.rst | 37 +++++++++ Include/cpython/pystate.h | 12 +++ Include/internal/pycore_pythonrun.h | 6 ++ Include/internal/pycore_tstate.h | 4 + ...-10-06-22-17-47.gh-issue-139653.6-1MOd.rst | 4 + Modules/_testinternalcapi.c | 54 +++++++++++++ Python/ceval.c | 77 +++++++++++++++++-- Python/pystate.c | 3 + 9 files changed, 193 insertions(+), 7 deletions(-) create mode 100644 Misc/NEWS.d/next/C_API/2025-10-06-22-17-47.gh-issue-139653.6-1MOd.rst diff --git a/Doc/c-api/exceptions.rst b/Doc/c-api/exceptions.rst index 7449935e69f721..d7fe9e2c9ec9b4 100644 --- a/Doc/c-api/exceptions.rst +++ b/Doc/c-api/exceptions.rst @@ -984,6 +984,9 @@ because the :ref:`call protocol ` takes care of recursion handling. be concatenated to the :exc:`RecursionError` message caused by the recursion depth limit. + .. seealso:: + The :c:func:`PyUnstable_ThreadState_SetStackProtection` function. + .. versionchanged:: 3.9 This function is now also available in the :ref:`limited API `. diff --git a/Doc/c-api/init.rst b/Doc/c-api/init.rst index 660ab3c3cf97ac..639c9ea4fb6193 100644 --- a/Doc/c-api/init.rst +++ b/Doc/c-api/init.rst @@ -1531,6 +1531,43 @@ All of the following functions must be called after :c:func:`Py_Initialize`. .. versionadded:: 3.11 +.. c:function:: int PyUnstable_ThreadState_SetStackProtection(PyThreadState *tstate, void *stack_start_addr, size_t stack_size) + + Set the stack protection start address and stack protection size + of a Python thread state. + + On success, return ``0``. + On failure, set an exception and return ``-1``. + + CPython implements :ref:`recursion control ` for C code by raising + :py:exc:`RecursionError` when it notices that the machine execution stack is close + to overflow. See for example the :c:func:`Py_EnterRecursiveCall` function. + For this, it needs to know the location of the current thread's stack, which it + normally gets from the operating system. + When the stack is changed, for example using context switching techniques like the + Boost library's ``boost::context``, you must call + :c:func:`~PyUnstable_ThreadState_SetStackProtection` to inform CPython of the change. + + Call :c:func:`~PyUnstable_ThreadState_SetStackProtection` either before + or after changing the stack. + Do not call any other Python C API between the call and the stack + change. + + See :c:func:`PyUnstable_ThreadState_ResetStackProtection` for undoing this operation. + + .. versionadded:: next + + +.. c:function:: void PyUnstable_ThreadState_ResetStackProtection(PyThreadState *tstate) + + Reset the stack protection start address and stack protection size + of a Python thread state to the operating system defaults. + + See :c:func:`PyUnstable_ThreadState_SetStackProtection` for an explanation. + + .. versionadded:: next + + .. c:function:: PyInterpreterState* PyInterpreterState_Get(void) Get the current interpreter. diff --git a/Include/cpython/pystate.h b/Include/cpython/pystate.h index e7d80f2694baf2..f428396411c5e5 100644 --- a/Include/cpython/pystate.h +++ b/Include/cpython/pystate.h @@ -243,6 +243,18 @@ PyAPI_FUNC(int) PyGILState_Check(void); */ PyAPI_FUNC(PyObject*) _PyThread_CurrentFrames(void); +// Set the stack protection start address and stack protection size +// of a Python thread state +PyAPI_FUNC(int) PyUnstable_ThreadState_SetStackProtection( + PyThreadState *tstate, + void *stack_start_addr, // Stack start address + size_t stack_size); // Stack size (in bytes) + +// Reset the stack protection start address and stack protection size +// of a Python thread state +PyAPI_FUNC(void) PyUnstable_ThreadState_ResetStackProtection( + PyThreadState *tstate); + /* Routines for advanced debuggers, requested by David Beazley. Don't use unless you know what you are doing! */ PyAPI_FUNC(PyInterpreterState *) PyInterpreterState_Main(void); diff --git a/Include/internal/pycore_pythonrun.h b/Include/internal/pycore_pythonrun.h index c2832098ddb3e7..b232429c4d09c3 100644 --- a/Include/internal/pycore_pythonrun.h +++ b/Include/internal/pycore_pythonrun.h @@ -54,6 +54,12 @@ extern const char* _Py_SourceAsString( # define _PyOS_STACK_MARGIN_SHIFT (_PyOS_LOG2_STACK_MARGIN + 2) #endif +#ifdef _Py_THREAD_SANITIZER +# define _PyOS_MIN_STACK_SIZE (_PyOS_STACK_MARGIN_BYTES * 6) +#else +# define _PyOS_MIN_STACK_SIZE (_PyOS_STACK_MARGIN_BYTES * 3) +#endif + #ifdef __cplusplus } diff --git a/Include/internal/pycore_tstate.h b/Include/internal/pycore_tstate.h index bad968428c73a1..e0b77cc3e85af0 100644 --- a/Include/internal/pycore_tstate.h +++ b/Include/internal/pycore_tstate.h @@ -37,6 +37,10 @@ typedef struct _PyThreadStateImpl { uintptr_t c_stack_soft_limit; uintptr_t c_stack_hard_limit; + // PyUnstable_ThreadState_ResetStackProtection() values + uintptr_t c_stack_init_base; + uintptr_t c_stack_init_top; + PyObject *asyncio_running_loop; // Strong reference PyObject *asyncio_running_task; // Strong reference diff --git a/Misc/NEWS.d/next/C_API/2025-10-06-22-17-47.gh-issue-139653.6-1MOd.rst b/Misc/NEWS.d/next/C_API/2025-10-06-22-17-47.gh-issue-139653.6-1MOd.rst new file mode 100644 index 00000000000000..cd3d5262fa0f3a --- /dev/null +++ b/Misc/NEWS.d/next/C_API/2025-10-06-22-17-47.gh-issue-139653.6-1MOd.rst @@ -0,0 +1,4 @@ +Add :c:func:`PyUnstable_ThreadState_SetStackProtection` and +:c:func:`PyUnstable_ThreadState_ResetStackProtection` functions to set the +stack protection base address and stack protection size of a Python thread +state. Patch by Victor Stinner. diff --git a/Modules/_testinternalcapi.c b/Modules/_testinternalcapi.c index 5d877b5655b89c..ce11a81211e7e6 100644 --- a/Modules/_testinternalcapi.c +++ b/Modules/_testinternalcapi.c @@ -2408,6 +2408,58 @@ set_vectorcall_nop(PyObject *self, PyObject *func) Py_RETURN_NONE; } + +static void +check_threadstate_set_stack_protection(PyThreadState *tstate, + void *start, size_t size) +{ + assert(PyUnstable_ThreadState_SetStackProtection(tstate, start, size) == 0); + assert(!PyErr_Occurred()); + + _PyThreadStateImpl *ts = (_PyThreadStateImpl *)tstate; + assert(ts->c_stack_top == (uintptr_t)start + size); + assert(ts->c_stack_hard_limit <= ts->c_stack_soft_limit); + assert(ts->c_stack_soft_limit < ts->c_stack_top); +} + + +static PyObject * +test_threadstate_set_stack_protection(PyObject *self, PyObject *Py_UNUSED(args)) +{ + PyThreadState *tstate = PyThreadState_GET(); + _PyThreadStateImpl *ts = (_PyThreadStateImpl *)tstate; + assert(!PyErr_Occurred()); + + uintptr_t init_base = ts->c_stack_init_base; + size_t init_top = ts->c_stack_init_top; + + // Test the minimum stack size + size_t size = _PyOS_MIN_STACK_SIZE; + void *start = (void*)(_Py_get_machine_stack_pointer() - size); + check_threadstate_set_stack_protection(tstate, start, size); + + // Test a larger size + size = 7654321; + assert(size > _PyOS_MIN_STACK_SIZE); + start = (void*)(_Py_get_machine_stack_pointer() - size); + check_threadstate_set_stack_protection(tstate, start, size); + + // Test invalid size (too small) + size = 5; + start = (void*)(_Py_get_machine_stack_pointer() - size); + assert(PyUnstable_ThreadState_SetStackProtection(tstate, start, size) == -1); + assert(PyErr_ExceptionMatches(PyExc_ValueError)); + PyErr_Clear(); + + // Test PyUnstable_ThreadState_ResetStackProtection() + PyUnstable_ThreadState_ResetStackProtection(tstate); + assert(ts->c_stack_init_base == init_base); + assert(ts->c_stack_init_top == init_top); + + Py_RETURN_NONE; +} + + static PyMethodDef module_functions[] = { {"get_configs", get_configs, METH_NOARGS}, {"get_recursion_depth", get_recursion_depth, METH_NOARGS}, @@ -2516,6 +2568,8 @@ static PyMethodDef module_functions[] = { {"emscripten_set_up_async_input_device", emscripten_set_up_async_input_device, METH_NOARGS}, #endif {"set_vectorcall_nop", set_vectorcall_nop, METH_O}, + {"test_threadstate_set_stack_protection", + test_threadstate_set_stack_protection, METH_NOARGS}, {NULL, NULL} /* sentinel */ }; diff --git a/Python/ceval.c b/Python/ceval.c index c01105321a4667..fe4c053bf21954 100644 --- a/Python/ceval.c +++ b/Python/ceval.c @@ -425,7 +425,7 @@ int pthread_attr_destroy(pthread_attr_t *a) #endif static void -hardware_stack_limits(uintptr_t *top, uintptr_t *base) +hardware_stack_limits(uintptr_t *base, uintptr_t *top) { #ifdef WIN32 ULONG_PTR low, high; @@ -468,23 +468,86 @@ hardware_stack_limits(uintptr_t *top, uintptr_t *base) #endif } -void -_Py_InitializeRecursionLimits(PyThreadState *tstate) +static void +tstate_set_stack(PyThreadState *tstate, + uintptr_t base, uintptr_t top) { - uintptr_t top; - uintptr_t base; - hardware_stack_limits(&top, &base); + assert(base < top); + assert((top - base) >= _PyOS_MIN_STACK_SIZE); + #ifdef _Py_THREAD_SANITIZER // Thread sanitizer crashes if we use more than half the stack. uintptr_t stacksize = top - base; - base += stacksize/2; + base += stacksize / 2; #endif _PyThreadStateImpl *_tstate = (_PyThreadStateImpl *)tstate; _tstate->c_stack_top = top; _tstate->c_stack_hard_limit = base + _PyOS_STACK_MARGIN_BYTES; _tstate->c_stack_soft_limit = base + _PyOS_STACK_MARGIN_BYTES * 2; + +#ifndef NDEBUG + // Sanity checks + _PyThreadStateImpl *ts = (_PyThreadStateImpl *)tstate; + assert(ts->c_stack_hard_limit <= ts->c_stack_soft_limit); + assert(ts->c_stack_soft_limit < ts->c_stack_top); +#endif +} + + +void +_Py_InitializeRecursionLimits(PyThreadState *tstate) +{ + uintptr_t base, top; + hardware_stack_limits(&base, &top); + assert(top != 0); + + tstate_set_stack(tstate, base, top); + _PyThreadStateImpl *ts = (_PyThreadStateImpl *)tstate; + ts->c_stack_init_base = base; + ts->c_stack_init_top = top; + + // Test the stack pointer +#if !defined(NDEBUG) && !defined(__wasi__) + uintptr_t here_addr = _Py_get_machine_stack_pointer(); + assert(ts->c_stack_soft_limit < here_addr); + assert(here_addr < ts->c_stack_top); +#endif +} + + +int +PyUnstable_ThreadState_SetStackProtection(PyThreadState *tstate, + void *stack_start_addr, size_t stack_size) +{ + if (stack_size < _PyOS_MIN_STACK_SIZE) { + PyErr_Format(PyExc_ValueError, + "stack_size must be at least %zu bytes", + _PyOS_MIN_STACK_SIZE); + return -1; + } + + uintptr_t base = (uintptr_t)stack_start_addr; + uintptr_t top = base + stack_size; + tstate_set_stack(tstate, base, top); + return 0; } + +void +PyUnstable_ThreadState_ResetStackProtection(PyThreadState *tstate) +{ + _PyThreadStateImpl *ts = (_PyThreadStateImpl *)tstate; + if (ts->c_stack_init_top != 0) { + tstate_set_stack(tstate, + ts->c_stack_init_base, + ts->c_stack_init_top); + return; + } + + _Py_InitializeRecursionLimits(tstate); +} + + /* The function _Py_EnterRecursiveCallTstate() only calls _Py_CheckRecursiveCall() if the recursion_depth reaches recursion_limit. */ int diff --git a/Python/pystate.c b/Python/pystate.c index 06f997fb5ad5be..6781920b9eec66 100644 --- a/Python/pystate.c +++ b/Python/pystate.c @@ -1583,6 +1583,9 @@ init_threadstate(_PyThreadStateImpl *_tstate, _tstate->c_stack_top = 0; _tstate->c_stack_hard_limit = 0; + _tstate->c_stack_init_base = 0; + _tstate->c_stack_init_top = 0; + _tstate->asyncio_running_loop = NULL; _tstate->asyncio_running_task = NULL; From 5d2c92c5df79357298dddefe7578db30672debd8 Mon Sep 17 00:00:00 2001 From: Victor Stinner Date: Fri, 14 Nov 2025 15:56:37 +0100 Subject: [PATCH 4/8] gh-139653: Remove assertions in _Py_InitializeRecursionLimits() (GH-141551) These checks were invalid and failed randomly on FreeBSD and Alpine Linux. --- Python/ceval.c | 7 ------- 1 file changed, 7 deletions(-) diff --git a/Python/ceval.c b/Python/ceval.c index fe4c053bf21954..a4c163ed933d0c 100644 --- a/Python/ceval.c +++ b/Python/ceval.c @@ -505,13 +505,6 @@ _Py_InitializeRecursionLimits(PyThreadState *tstate) _PyThreadStateImpl *ts = (_PyThreadStateImpl *)tstate; ts->c_stack_init_base = base; ts->c_stack_init_top = top; - - // Test the stack pointer -#if !defined(NDEBUG) && !defined(__wasi__) - uintptr_t here_addr = _Py_get_machine_stack_pointer(); - assert(ts->c_stack_soft_limit < here_addr); - assert(here_addr < ts->c_stack_top); -#endif } From fa01bf8e75b798f466049e8ff1e89cadf36ab497 Mon Sep 17 00:00:00 2001 From: Petr Viktorin Date: Mon, 17 Nov 2025 13:50:27 +0100 Subject: [PATCH 5/8] Add What's New & compatibility warnings --- Doc/c-api/init.rst | 20 ++++++++++++++++++++ Doc/whatsnew/3.14.rst | 10 ++++++++++ 2 files changed, 30 insertions(+) diff --git a/Doc/c-api/init.rst b/Doc/c-api/init.rst index 639c9ea4fb6193..ba6a5dfe4dc004 100644 --- a/Doc/c-api/init.rst +++ b/Doc/c-api/init.rst @@ -1557,6 +1557,16 @@ All of the following functions must be called after :c:func:`Py_Initialize`. .. versionadded:: next + .. warning:: + + This function was added in a bugfix release, and + extensions that use it will be incompatible with Python 3.14.0. + Most packaging tools for Python are not able to handle this + incompatibility automatically, and will need. + When using PyPA standards (wheels and source distributions), + specify ``Requires-Python: != 3.14.0.*`` in + `core metadata `_. + .. c:function:: void PyUnstable_ThreadState_ResetStackProtection(PyThreadState *tstate) @@ -1567,6 +1577,16 @@ All of the following functions must be called after :c:func:`Py_Initialize`. .. versionadded:: next + .. warning:: + + This function was added in a bugfix release, and + extensions that use it will be incompatible with Python 3.14.0. + Most packaging tools for Python are not able to handle this + incompatibility automatically, and will need. + When using PyPA standards (wheels and source distributions), + specify ``Requires-Python: != 3.14.0.*`` in + `core metadata `_. + .. c:function:: PyInterpreterState* PyInterpreterState_Get(void) diff --git a/Doc/whatsnew/3.14.rst b/Doc/whatsnew/3.14.rst index bc4e34fa338b3d..67159b1599bef5 100644 --- a/Doc/whatsnew/3.14.rst +++ b/Doc/whatsnew/3.14.rst @@ -3435,3 +3435,13 @@ Changes in the C API functions on Python 3.13 and older. .. _pythoncapi-compat project: https://github.com/python/pythoncapi-compat/ + + +Notable changes in 3.14.1 +========================= + +* Add :c:func:`PyUnstable_ThreadState_SetStackProtection` and + :c:func:`PyUnstable_ThreadState_ResetStackProtection` functions to set + the stack protection base address and stack protection size of a Python + thread state. + (Contributed by Victor Stinner in :gh:`139653`.) From 24858cfe6d94848b44097483064226b73ecb1e5b Mon Sep 17 00:00:00 2001 From: Petr Viktorin Date: Mon, 17 Nov 2025 14:35:48 +0100 Subject: [PATCH 6/8] Put new fields at the end of _PyThreadStateImpl --- Include/internal/pycore_tstate.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Include/internal/pycore_tstate.h b/Include/internal/pycore_tstate.h index e0b77cc3e85af0..c3ac52bd76613e 100644 --- a/Include/internal/pycore_tstate.h +++ b/Include/internal/pycore_tstate.h @@ -37,10 +37,6 @@ typedef struct _PyThreadStateImpl { uintptr_t c_stack_soft_limit; uintptr_t c_stack_hard_limit; - // PyUnstable_ThreadState_ResetStackProtection() values - uintptr_t c_stack_init_base; - uintptr_t c_stack_init_top; - PyObject *asyncio_running_loop; // Strong reference PyObject *asyncio_running_task; // Strong reference @@ -80,6 +76,10 @@ typedef struct _PyThreadStateImpl { Py_ssize_t reftotal; // this thread's total refcount operations #endif + // PyUnstable_ThreadState_ResetStackProtection() values + uintptr_t c_stack_init_base; + uintptr_t c_stack_init_top; + } _PyThreadStateImpl; #ifdef __cplusplus From ecbf10e09b983847745266c359f0954c10ad56e8 Mon Sep 17 00:00:00 2001 From: Petr Viktorin Date: Mon, 17 Nov 2025 14:49:48 +0100 Subject: [PATCH 7/8] Regenerate the ABI dump --- Doc/data/python3.14.abi | 18729 +++++++++++++++++++------------------- 1 file changed, 9408 insertions(+), 9321 deletions(-) diff --git a/Doc/data/python3.14.abi b/Doc/data/python3.14.abi index e2cb3cbe30da47..372c35f3713e2b 100644 --- a/Doc/data/python3.14.abi +++ b/Doc/data/python3.14.abi @@ -128,8 +128,10 @@ + + @@ -364,6 +366,7 @@ + @@ -532,6 +535,7 @@ + @@ -1015,6 +1019,8 @@ + + @@ -1553,6 +1559,7 @@ + @@ -1807,7 +1814,7 @@ - + @@ -1881,19 +1888,25 @@ - - - - + + + + + + + + + + - + - - - + + + @@ -1943,27 +1956,27 @@ - - - - - - - + + + + + + + - + - + - + @@ -1975,15 +1988,15 @@ - + - - + + - + @@ -1995,14 +2008,14 @@ - - + + - + @@ -2039,9 +2052,9 @@ - - - + + + @@ -2051,51 +2064,51 @@ - + - + - + - + - + - + - - + + - - - - + + + + - - - + + + - + @@ -2105,32 +2118,32 @@ - + - - + + - - - - - + + + + + - + - - + + - + @@ -2156,7 +2169,7 @@ - + @@ -2173,15 +2186,15 @@ - - - + + + - - + + @@ -2202,38 +2215,38 @@ - - + + - + - + - - - - - - - - + + - + + - - - + + + + + + + + - + - + @@ -2241,12 +2254,12 @@ - + - - + + @@ -2255,8 +2268,8 @@ - - + + @@ -2265,17 +2278,17 @@ - + - - - - - + + + + + - - + + @@ -2291,92 +2304,92 @@ - - - + + + - - + + - - + + - - - + + + - - - + + + - - + + - + - - + + - - + + - - + + - - + + - - + + - - - - + + + + - - + + - + - + - + - + - + - + - - + + @@ -2384,58 +2397,58 @@ - + - + - - - + + + - + - - + + - + - + - + - + - + - + - + - + - + - + - - + + - + @@ -2443,22 +2456,22 @@ - + - + - + - + - + - + @@ -2470,155 +2483,155 @@ - + - + - + - + - + - + - + - + - + - + - - - - - - - - + + + + + + + + - + - + - + - - - + + + - + - + - + - + - - - - - + + + + + - + - + - + - + - + - + - - + + - - - - - - - - - - - - - - + + + + + + + + - - - - - + + + + + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2638,68 +2651,68 @@ - + - + - + - + - + - + - + - - + + - + - - + + - - + + - - - + + + - - + + - + @@ -2708,92 +2721,92 @@ - + - + - - + + - - - + + + - - - + + + - + - + - + - + - - + + - - - + + + - + - - - - - + + + + + - - - - + + + + - - + + - - + + - + - + - + @@ -2805,117 +2818,117 @@ - - + + - - - + + + - - - + + + - + - + - - - - - - + + + + + + - + - - - - + + + + - + - + - - + + - - + + - - + + - - + + - + - - + + - + - + - + - + - + - + - + - + @@ -2932,8 +2945,8 @@ - - + + @@ -2961,24 +2974,24 @@ - + - - + + - + - - - - + + + + @@ -2988,37 +3001,37 @@ - + - + - - + + - - + + - - + + - - + + @@ -3043,19 +3056,19 @@ - - + + - - + + - + @@ -3065,109 +3078,109 @@ - + - + - + - - + + - - + + - + - - + + - + - + - + - + - + - + - - + + - + - + - - + + - + - - - + + + - - - + + + - - - + + + - - - + + + - + - - + + @@ -3191,10 +3204,10 @@ - - - - + + + + @@ -3212,16 +3225,16 @@ - + - + - - + + @@ -3237,12 +3250,12 @@ - + - - - - + + + + @@ -3253,30 +3266,30 @@ - - + + - - + + - + - + - - - - + + + + - + @@ -3289,241 +3302,241 @@ - + - + - + - - + + - - + + - + - + - + - - + + - + - + - - + + - - + + - + - + - + - + - - + + - - + + - - - + + + - + - - + + - + - - + + - + - + - + - + - + - - + + - - + + - + - - - + + + - + - - + + - - + + - - + + - - + + - - + + - - + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + @@ -3542,33 +3555,33 @@ - + - + - + - + - + - + - + - + - - - - + + + + @@ -3576,107 +3589,107 @@ - + - - - - - + + + + + - - - - - + + + + + - - + + - + - + - + - - - - - - - - - + + + + + + + + + - - + + - + - + - - + + - + - + - + - + - + - + - - + + - - + + - - - + + + @@ -3687,26 +3700,26 @@ - + - - + + - + - - + + - - - + + + @@ -3715,64 +3728,61 @@ - - + + - + - + - + - - - - - - - - + + + + + - + - + - + - - - + + + - - - + + + - - + + - - + + - + @@ -3787,22 +3797,22 @@ - + - - + + - - - - - + + + + + @@ -3816,15 +3826,15 @@ - + - - + + - + @@ -3842,7 +3852,7 @@ - + @@ -3852,57 +3862,57 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -3917,14 +3927,14 @@ - + - + @@ -3936,23 +3946,23 @@ - - + + - + - + - + - - - - + + + + @@ -3999,75 +4009,75 @@ - + - - - + + + - + - - - - + + + + - + - - + + - + - - + + - - + + - + - - + + - + - + - - + + - - - - + + + + - - - + + + - - + + - - + + @@ -4077,12 +4087,12 @@ - + - + @@ -4105,103 +4115,106 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + + + + - + - - + + - - + + - - + + - - + + - - + + - - + + @@ -4215,33 +4228,33 @@ - + - + - - + + - + - + - + - + - + - + @@ -4252,7 +4265,7 @@ - + @@ -4298,7 +4311,7 @@ - + @@ -4348,21 +4361,21 @@ - - + + - + - + - + - + @@ -4404,22 +4417,22 @@ - + - + - + - + @@ -4456,7 +4469,7 @@ - + @@ -4474,11 +4487,6 @@ - - - - - @@ -4569,13 +4577,13 @@ - + - + @@ -4583,9 +4591,9 @@ - + - + @@ -4598,13 +4606,13 @@ - + - + @@ -4615,12 +4623,12 @@ - + - + @@ -5018,9 +5026,9 @@ - + - + @@ -5064,17 +5072,18 @@ - + - - - + + + + - + @@ -5121,31 +5130,31 @@ - + - + - + - + - + @@ -5230,16 +5239,20 @@ - + - + + + + + @@ -5252,7 +5265,7 @@ - + @@ -5271,7 +5284,7 @@ - + @@ -5284,13 +5297,13 @@ - + - - + + @@ -5317,7 +5330,7 @@ - + @@ -5329,14 +5342,14 @@ - + - + - + @@ -5387,16 +5400,16 @@ - - - - + + + + - + - - + + @@ -5413,7 +5426,7 @@ - + @@ -5427,65 +5440,65 @@ - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - + - - - - - - - - - - - - - - + + + + + + + + + + + + + + - + - - + + - + @@ -5505,11 +5518,11 @@ - + - - + + @@ -5521,26 +5534,26 @@ - + - + - + - + - - + + - + @@ -5554,29 +5567,29 @@ - - + + - - - + + + - - - + + + - - + + - - + + @@ -5589,7 +5602,7 @@ - + @@ -5597,94 +5610,94 @@ - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - + + + - - - + + + - - + + - - - + + + - - - + + + - - + + - - + + - - - - - + + + + + - - - - - + + + + + - - - - + + + + - - - + + + - - - - - - + + + + + + - + @@ -5692,23 +5705,23 @@ - + - + - + - - + + - + - + @@ -5718,16 +5731,16 @@ - - - + + + - + - + @@ -5739,7 +5752,7 @@ - + @@ -5756,11 +5769,11 @@ - + - + @@ -5787,13 +5800,13 @@ - + - + @@ -5859,7 +5872,7 @@ - + @@ -5883,25 +5896,25 @@ - + - + - + - + - + @@ -5912,7 +5925,7 @@ - + @@ -5920,15 +5933,15 @@ - + - + - + @@ -5938,26 +5951,26 @@ - + - + - - + + - + - + @@ -5994,7 +6007,7 @@ - + @@ -6012,7 +6025,7 @@ - + @@ -6041,24 +6054,24 @@ - - + + - - + + - + - + - + - + @@ -6069,221 +6082,221 @@ - + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - + - + - - + + - + - - + + - + - + - + - + - + - + - + - + - + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - + - + - + - - - - - - - - - + + + + + + + + + - + @@ -6295,26 +6308,26 @@ - - + + - + - - + + - - + + - + - + @@ -6322,7 +6335,7 @@ - + @@ -6330,18 +6343,18 @@ - + - + - + @@ -6381,12 +6394,12 @@ - - - + + + - + @@ -6394,7 +6407,7 @@ - + @@ -6418,7 +6431,7 @@ - + @@ -6438,142 +6451,142 @@ - + - + - - - + + + - - - + + + - - - - - - - + + + + + + + - - - - + + + + - - - - + + + + - - + + - - + + - - + + - - - + + + - - - - - - - - + + + + + + + + - - - + + + - - - - + + + + - - - - - - + + + + + + - - - + + + - - + + - - + + - - + + - - - - + + + + - + - + - + - + - + - + - + - + - - + + @@ -6620,7 +6633,7 @@ - + @@ -6644,16 +6657,16 @@ - + - + - + - + @@ -6662,15 +6675,15 @@ - + - + - - - + + + @@ -6678,26 +6691,26 @@ - + - - + + - + - + - + @@ -6709,38 +6722,38 @@ - + - + - + - - - + + + - - + + - + - + - + - + @@ -6752,13 +6765,13 @@ - - + + - + @@ -6766,132 +6779,132 @@ - - - + + + - - + + - - + + - - + + - - + + - - - + + + - - - + + + - - + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - + + - - + + - + - + - + - + - + - - + + @@ -6902,12 +6915,12 @@ - + - - + + @@ -6946,7 +6959,7 @@ - + @@ -6956,12 +6969,6 @@ - - - - - - @@ -6970,28 +6977,28 @@ - + - + - + - + - - + + @@ -7009,72 +7016,72 @@ - - - + + + - + - + - + - + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - - + + + @@ -7107,7 +7114,7 @@ - + @@ -7125,197 +7132,197 @@ - + - - + + - - - + + + - - - - + + + + - - - - - + + + + + - - - + + + - - - - + + + + - - - - - + + + + + - - - - + + + + - - - - - + + + + + - - - - - + + + + + - - - - + + + + - - - - - + + + + + - - + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - - + + + + + - - - - + + + + - - + + - - - + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - + + - - - + + + - - - + + + - - + + - - + + - - - - - - + + + + + + - + - + @@ -7324,8 +7331,8 @@ - - + + @@ -7353,22 +7360,22 @@ - + - + - + - + @@ -7387,7 +7394,7 @@ - + @@ -7402,7 +7409,7 @@ - + @@ -7482,7 +7489,7 @@ - + @@ -7650,8 +7657,8 @@ - - + + @@ -7663,15 +7670,15 @@ - + - + - + @@ -7707,23 +7714,23 @@ - + - + - + - + - - + + @@ -7736,7 +7743,7 @@ - + @@ -7744,8 +7751,8 @@ - - + + @@ -7753,47 +7760,47 @@ - + - - - - - + + + + + - + - + - + - + - - + + - + - + - + @@ -7803,36 +7810,36 @@ - + - + - + - + - + - + - + - + - + @@ -7842,7 +7849,7 @@ - + @@ -7860,44 +7867,44 @@ - - + + - + - - - + + + - + - + - - - + + + - - + + - - - + + + - - + + - + - + @@ -7907,41 +7914,41 @@ - - + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - + @@ -7967,8 +7974,8 @@ - - + + @@ -7996,31 +8003,31 @@ - - - + + + - + - - + + - + - + - - + + @@ -8044,69 +8051,69 @@ - + - - - - - - + + + + + + - - - + + + - - - + + + - - + + - - + + - - - + + + - - + + - - - + + + - - - + + + - - + + - - + + - - + + - - + + - - + + @@ -8117,20 +8124,20 @@ - + - + - + - + @@ -8144,8 +8151,8 @@ - - + + @@ -8175,8 +8182,8 @@ - - + + @@ -8207,7 +8214,7 @@ - + @@ -8222,19 +8229,19 @@ - - + + - + - + @@ -8260,16 +8267,16 @@ - + - - - + + + - + @@ -8281,30 +8288,30 @@ - + - + - + - + - + - + - + - + @@ -8316,37 +8323,37 @@ - + - + - + - + - + - + - - - - - - - + + + + + + + - - + + @@ -8359,33 +8366,33 @@ - + - - + + - - - - + + + + - - - + + + - - + + - - - - + + + + @@ -8396,14 +8403,14 @@ - + - + @@ -8412,57 +8419,57 @@ - - + + - + - - + + - - - - + + + + - - + + - - + + - - - - + + + + - - - - + + + + - - + + - + - + - + @@ -8474,37 +8481,37 @@ - + - + - + - + - + - + - + - - + + - + - + - + @@ -8513,10 +8520,10 @@ - + - + @@ -8528,7 +8535,7 @@ - + @@ -8556,31 +8563,31 @@ - - + + - + - + - + - + @@ -8588,7 +8595,7 @@ - + @@ -8631,7 +8638,7 @@ - + @@ -8642,74 +8649,74 @@ - - - + + + - + - + - + - + - + - - + + - + - + - + - + - - - - - - - - + + + + + + - + + - - - - - + + + + + + - + - + - + - + - + @@ -8728,7 +8735,7 @@ - + @@ -8736,12 +8743,12 @@ - + - + @@ -8749,7 +8756,7 @@ - + @@ -8772,220 +8779,220 @@ - - + + - - + + - - - - - + + + + + - - - - + + + + - - - - + + + + - - - + + + - - + + - - - + + + - - - + + + - - - + + + - - - - + + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - - + + + + - - + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - + - - + + - - + + - - + + - - + + - - + + - - + + - - - + + + - - - + + + - - - + + + - - - + + + - - + + - - - + + + - - + + - - - - - + + + + + - - + + - - + + @@ -8997,7 +9004,7 @@ - + @@ -9013,7 +9020,7 @@ - + @@ -9021,19 +9028,19 @@ - + - + - + @@ -9045,12 +9052,12 @@ - + - + - + @@ -9059,18 +9066,18 @@ - - + + - + - + - + @@ -9082,27 +9089,27 @@ - + - + - + - + - + - - - - - - + + + + + + @@ -9110,17 +9117,17 @@ - + - - - + + + - + @@ -9131,7 +9138,7 @@ - + @@ -9165,22 +9172,22 @@ - + - - + + - - - + + + - + @@ -9192,24 +9199,24 @@ - + - + - + - + @@ -9231,13 +9238,13 @@ - + - + - + @@ -9259,24 +9266,24 @@ - - + + - + - + - + - + - + @@ -9285,32 +9292,32 @@ - - - + + + - - - - + + + + - - + + - + - - + + - + @@ -9318,20 +9325,20 @@ - + - + - + - + - + @@ -9360,35 +9367,35 @@ - + - - + + - + - + - + - + - + @@ -9403,7 +9410,7 @@ - + @@ -9416,16 +9423,16 @@ - - + + - + - + @@ -9435,25 +9442,25 @@ - - + + - - - - + + + + - + - + @@ -9478,10 +9485,10 @@ - + - + @@ -9489,7 +9496,7 @@ - + @@ -9579,12 +9586,12 @@ - + - + @@ -9622,16 +9629,16 @@ - - + + - + - + @@ -9652,682 +9659,682 @@ - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - - - - - - + + + + + + + - + - + - + - + - + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - - - - - + + + + + + - + - + - + - - + + - + - + - + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - + - + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - + - + - + - - + + - + - + - - + + - + - + - + - + - + - + - + - + - - + + - + - + - + - + - + - + - + - - + + - - - + + + - - - + + + - - - - - - + + + + + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - + - - + + - - - - - - - - - - + + + + + + + + + + - + - - - - - + + + + + - + - + - + - - - + + + - + - - + + - - + + - - + + - + - + - - + + - - + + - - - + + + - - - + + + - + @@ -10339,59 +10346,59 @@ - + - - - + + + - + - + - + - + - + - - + + - - + + - - + + - - + + - - + + - + @@ -10399,42 +10406,42 @@ - - + + - - + + - + - + - - + + - - - + + + - + - + - - + + @@ -10448,43 +10455,57 @@ - + + + + + + + + + + + - + - - + + - + - - + + - + - + + + + + - - - - + + + + - - - + + + @@ -10504,9 +10525,9 @@ - + - + @@ -10518,8 +10539,8 @@ - - + + @@ -10530,7 +10551,7 @@ - + @@ -10539,21 +10560,21 @@ - - + + - + - + - - + + - + @@ -10565,28 +10586,28 @@ - + - + - + - - - - + + + + - + @@ -10594,12 +10615,12 @@ - + - + @@ -10622,7 +10643,7 @@ - + @@ -10644,16 +10665,16 @@ - + - + - - + + @@ -10664,17 +10685,17 @@ - + - + - - - + + + - + @@ -10684,11 +10705,11 @@ - + - + @@ -10696,21 +10717,21 @@ - + - + - + - + @@ -10726,17 +10747,17 @@ - - - + + + - + - + @@ -10746,42 +10767,42 @@ - - - + + + - + - + - + - + - + - + - + - + @@ -10793,25 +10814,25 @@ - + - + - + - + - - - - + + + + @@ -10829,7 +10850,7 @@ - + @@ -10837,64 +10858,64 @@ - + - + - - - + + + - - - + + + - - + + - - + + - - + + - + - - + + - - + + - + - + - - + + - + @@ -10921,7 +10942,7 @@ - + @@ -10945,7 +10966,7 @@ - + @@ -10955,10 +10976,10 @@ - + - + @@ -10981,136 +11002,136 @@ - + - - + + - - + + - - - + + + - - - + + + - - - - + + + + - - + + - - + + - - - - - + + + + + - - - - + + + + - - + + - - + + - - + + - - - - + + + + - - + + - - - + + + - - - + + + - - - - + + + + - - - - + + + + - - + + - - - + + + - - - + + + - - - + + + - + - - + + - - - - - + + + + + - + @@ -11118,36 +11139,36 @@ - - + + - + - - + + - - + + - - + + - - + + - + - + - + @@ -11159,10 +11180,10 @@ - - - - + + + + @@ -11184,45 +11205,45 @@ - + - + - + - + - + - + - + - + - + - + - - + + @@ -11243,58 +11264,58 @@ - + - + - + - + - + - - - - - + + + + + - + - - + + - - - + + + - - - + + + - + - + - + @@ -11313,57 +11334,52 @@ - - - - - - - + + - + - + - + - - + + - - + + - - + + - - + + - + - + - + @@ -11378,467 +11394,467 @@ - - - - + + + + - - - + + + - - - + + + - - - - - - + + + + + + - - - + + + - - - + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - - - + + + + + + - - - + + + - - - + + + - - - - + + + + - - + + - - + + - - - - + + + + - - - - + + + + - - - - + + + + - - - + + + - - + + - - - - + + + + - - - - + + + + - - - + + + - - - + + + - - - + + + - - - + + + - - + + - - + + - - + + - - - - + + + + - - - - + + + + - - - - - + + + + + - - - - - + + + + + - - - - - - + + + + + + - - - - + + + + - - + + - - - - - + + + + + - - - - - - + + + + + + - - - - + + + + - - + + - - - - + + + + - - + + - - - - + + + + - - + + - - + + - - - - - + + + + + - - + + - - - + + + - - - - + + + + - - - - - + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - + + + + - - - - - + + + + + - - - + + + - - - + + + - - - + + + - - - - + + + + - - - - + + + + - - - + + + - - - + + + - - - + + + - - - - - + + + + + - - - - + + + + - - - + + + - - - + + + - - - - + + + + - - - + + + - - - + + + - - - - - + + + + + - - - - - + + + + + - - - - + + + + - - - - - - + + + + + + - - - - + + + + - - - + + + - - + + - - - + + + - - + + - - + + - + - - + + - - - + + + - - + + @@ -11859,9 +11875,9 @@ - + - + @@ -11870,25 +11886,25 @@ - + - + - + - + - - + + - + @@ -11919,36 +11935,36 @@ - - - - - - + + + - + - + - + - + - + - - + + - - + + - - + + + + + @@ -11956,11 +11972,11 @@ - + - - + + @@ -11968,20 +11984,20 @@ - + - - - - - - - - - - - + + + + + + + + + + + @@ -11989,11 +12005,11 @@ - + - - + + @@ -12001,11 +12017,11 @@ - + - - + + @@ -12013,11 +12029,11 @@ - + - - + + @@ -12025,11 +12041,11 @@ - + - - + + @@ -12037,11 +12053,11 @@ - + - - + + @@ -12049,11 +12065,11 @@ - + - - + + @@ -12061,11 +12077,11 @@ - + - - + + @@ -12073,67 +12089,67 @@ - + - - - + + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + @@ -12163,12 +12179,12 @@ - + - + - + @@ -12183,286 +12199,286 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - + - + - + @@ -12477,28 +12493,28 @@ - + - + - + - + - + - + - + - + - + @@ -12513,27 +12529,27 @@ - + - + - + - + - + - + - + - - + + @@ -12543,12 +12559,12 @@ - + - + - + @@ -12563,117 +12579,117 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - + - + - + - + - + - + - + - - + + - + - + - + @@ -12688,58 +12704,58 @@ - + - + - + - + - + - + - + - + - + - + - + - - - + - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + @@ -12747,267 +12763,267 @@ - + - + - + - + - + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - - - + + + + - - - - - + + + + + - - + + - - - - - + + + + + - - + + - - - - - - + + + + + + - - + + - - + + - - + + - - - + + + - - + + - + - + - - + + - - + + - + - - + + - + - - + + - + - - + + - - - + + + - - + + - - - + + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - - - - - - + + + + + + + - - + + - - + + - - + + - - + + - - - + + + @@ -13023,29 +13039,29 @@ - + - + - - + + - + - - + + - + - + @@ -13056,7 +13072,7 @@ - + @@ -13068,25 +13084,25 @@ - - - + + + - + - - + + - + - + @@ -13094,24 +13110,24 @@ - + - + - + - - - + + + @@ -13119,9 +13135,9 @@ - - - + + + @@ -13129,82 +13145,82 @@ - - - - + + + + - + - + - + - + - + - + - + - - - + + + - + - + - + - + - - + + - + - + - - - - + + + + - + - + - + @@ -13212,9 +13228,9 @@ - - - + + + @@ -13226,1170 +13242,1180 @@ - - + + - + - + - - + + - + - + - - + + - + - + - - + + - + - + - - + + - + - + - - + + - + - + - + - - + + - + - - + + - + - - + + - + - - - + + + - - - - + + - - + + - - - + + + + + - + - - - + + + - - - + + + - - - - + + + + - + - - + + - + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + + + - - - + - - + + + + - - - + - - + + + + - - - - + + + + - - - - + + - - - + + + - - + + - - - + + + - - + + - - + + - - + + - - + + - - + + - - - - + + + + - - + + - - - - + + + + - - + + - - + + - - + + - + - - + + - + - - + + - + - - + + - + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - - + + + - - + + - - + + - - + + - - + + - - + + - - - + + + - - + + - - + + - - + + - + - - + + - - + + - - + + - - + + - - + + - - - + + + - - + + - - + + - - + + - + - - + + - + - - + + - + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + + + - - - - + + - - + + - - + + - - - - + + + + - + + - - - + + - + - - + + - + - - + + - + - - + + - - - + + + - - + + - - - - + + + + - - + + - + - - + + - - + + - - + + - + - - + + - - - + + + - - + + - - + + - - + + - - + + - - + + - + - + - + - + - + - + - + - - + + - - + + - - + + - - + + - + - + - + - + - + - + - - + + - - + + - - + + - - + + - - + + - + - - - + + + - + - + - + - - + + - - + + - + - - + - + + - - - + + + - - - - + + + + - - - - + + + + - - - + + + - - - - + + + + - + - + - - + + - - - + + + - - - - + + + + - - - + + + - - - + + + + + - - - + - - - - + + + + - - - + + + - - - + + + - - - - + + + + - - - + + + - - - + + + - - - + - + + + - - - - + + + + - - - - - + + + + + - - - - - - - - + + + + + + + + - - + + - - - - - + + + + + - - - - - + + + + + - - - - - - + + + + + + - - + + - - - - - - + + + + + + - - + + - - - + + + - - - - + + + + - - - - + + + + - - + + - + - - - + + + - - - + + + - - - + + + - - + + - - - + + + - - - + + + - - - + + + - - - + + + - - + + - - - - + + + + + + + + + - - - - + + + + - - - - - + + + + - - - + + + + + + + + + - - - + + + - - - - - + + + + + - - - - + + + + - - - - - - - + + - - + + - + - - - + + + + - - - - - + + + - - - - + + + + + + + + + + - - + + - - - - + + + + - - - + + + - - - - - - - + + + - - - + + - - + + + + + + + - + @@ -14397,207 +14423,207 @@ - - + + - - + + - - + + - - + + - + - - - + + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - - + + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - - + + + - - + + - - + + - - + + - - + + - + - - + + - - + + - + - - - - + + + + - + - + - + - + - + - + - + - + - - + + - + - + - + - + - - + + - + - + - + @@ -14606,10 +14632,10 @@ - + - + @@ -14621,190 +14647,190 @@ - + - - - + + + - - + + - - - + + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - - - - + + + + + - - + + - - + + - - + + - - - - + + + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - + - - + + - - + + - - + + - - + + - - + + - - + + - - - - - + + + + + - - + + - + - + - + - + - - + + @@ -14818,8 +14844,8 @@ - - + + @@ -14827,11 +14853,11 @@ - + - - + + @@ -14878,7 +14904,7 @@ - + @@ -14902,16 +14928,16 @@ - + - + - + - + @@ -14920,36 +14946,36 @@ - + - + - - + + - - - + + + - + - + - - - + + + - - - - + + + + @@ -14957,10 +14983,10 @@ - + - + @@ -14972,8 +14998,8 @@ - - + + @@ -14981,12 +15007,12 @@ - - - - + + + + - + @@ -15034,32 +15060,32 @@ - + - + - - - + + + - - - + + + - + - + @@ -15067,8 +15093,8 @@ - - + + @@ -15100,8 +15126,8 @@ - - + + @@ -15148,34 +15174,34 @@ - + - + - + - + - + - + - + - + @@ -15217,13 +15243,13 @@ - + - + - + @@ -15247,58 +15273,58 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -15310,43 +15336,43 @@ - - + + - + - - - + + + - + - + - - + + - + - + - + - + - - + + - + @@ -15355,7 +15381,7 @@ - + @@ -15373,191 +15399,191 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - + - + - + - + - + - + - + - + - + - + - - + + - + - + - + - - - + + + - + - + - + - + - - + + - + - + - - + + @@ -15571,49 +15597,49 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -15622,31 +15648,31 @@ - + - + - + - + - + - + - + - + @@ -15655,28 +15681,28 @@ - + - + - + - + - + - + - + @@ -15688,53 +15714,53 @@ - + - + - + - + - + - + - + - - - + + + - - - + + + - + - + - + - - + + - + @@ -15755,78 +15781,78 @@ - + - - - + + + - + - + - + - + - + - - - + + + - + - + - - + + - + - - + + - + - + - + - + - - + + - + - + - + - + - + @@ -15853,13 +15879,13 @@ - + - + - + @@ -15892,7 +15918,7 @@ - + @@ -15907,13 +15933,13 @@ - + - + - + @@ -15922,13 +15948,13 @@ - + - + @@ -15937,121 +15963,121 @@ - + - + - + - + - + - + - + - + - + - + - - + + - + - - + + - + - + - - + + - + - + - + - + - + - + - + - + - + - - + + - + - + - - - - + + + + - + - + - + - + @@ -16068,10 +16094,10 @@ - - - - + + + + @@ -16079,26 +16105,26 @@ - + - - - - + + + + - - - + + + - - - + + + @@ -16113,20 +16139,20 @@ - - - + + + - - - - - - + + + + + + @@ -16134,11 +16160,11 @@ - + - - + + @@ -16146,11 +16172,11 @@ - + - - + + @@ -16158,11 +16184,11 @@ - + - - + + @@ -16170,12 +16196,12 @@ - + - - - + + + @@ -16206,12 +16232,12 @@ - + - + - + @@ -16226,349 +16252,349 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -16583,12 +16609,12 @@ - + - + - + @@ -16603,9 +16629,9 @@ - + - + @@ -17349,60 +17375,60 @@ - + - + - - - - - + + + + + - + - + - + - + - - - - + + + + - + - + - - - + + + - + - - + + - + - + - + @@ -17413,13 +17439,13 @@ - - + + - + - + @@ -17428,14 +17454,14 @@ - + - + - - + + @@ -17443,415 +17469,415 @@ - + - + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - + - + - + - + @@ -17860,8 +17886,8 @@ - - + + @@ -17878,30 +17904,30 @@ - + - + - + - + - + - + - + - + - + @@ -17915,13 +17941,13 @@ - + - + @@ -17929,22 +17955,22 @@ - + - + - + - + @@ -17953,82 +17979,82 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -18037,2757 +18063,2757 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - + - - + + - + - + - + - + - - - - - - - + + + + + + + - + - + - - + + - + - + - + - + - + - + - + - + - + - + - + - - + + - + - - + + - + - + - - + + - + - + - + - + - + - + - + - + - - + + - + - + - + - + - + - + - + - + - + @@ -20796,44 +20822,44 @@ - - + + - - + + - + - + - + - + - + - + - + - + - + @@ -20842,79 +20868,79 @@ - + - + - + - + - + - + - + - - + + - + - + - + - + - + - + - - + + - + - + - + - + - - + + - + @@ -20923,7 +20949,7 @@ - + @@ -20934,7 +20960,7 @@ - + @@ -20948,16 +20974,16 @@ - + - + - + - + @@ -20981,29 +21007,29 @@ - + - + - + - + - + - + - + @@ -21026,29 +21052,29 @@ - + - + - + - + - + - + @@ -21062,50 +21088,50 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - + @@ -21120,71 +21146,71 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -21193,12 +21219,12 @@ - + - + - + @@ -21221,47 +21247,47 @@ - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -21272,28 +21298,28 @@ - + - + - + - + - + - - + + @@ -21304,35 +21330,35 @@ - - + + - + - + - + - + - + - + - + - + @@ -21340,18 +21366,18 @@ - + - + - + - + - + @@ -21365,8 +21391,8 @@ - - + + @@ -21377,7 +21403,7 @@ - + @@ -21401,299 +21427,299 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -21705,202 +21731,202 @@ - + - + - + - + - + - + - + - + - + - + - + - + - - + + - + - + - + - - + + - + - - + + - + - + - + - + - + - - - + + + - + - + - + - + - + - + - + - + - + - + - + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - + - + - + - + - + - - + + - + @@ -21909,7 +21935,7 @@ - + @@ -21917,240 +21943,240 @@ - + - + - + - + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -22168,161 +22194,161 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -22337,7 +22363,7 @@ - + @@ -22345,52 +22371,52 @@ - + - + - + - + - - + + - + - + - + - + - + - + - - + + - + - - + + - + - + @@ -22399,28 +22425,28 @@ - - + + - + - + - - + + - + - - + + - + @@ -22429,98 +22455,98 @@ - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -22529,33 +22555,39 @@ - + - + - + + + + + + + - - - + + + - + - + - - - + + + - + @@ -22564,80 +22596,80 @@ - + - + - + - + - + - + - + - + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + - + @@ -22655,7 +22687,7 @@ - + @@ -22667,87 +22699,87 @@ - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - + - + - + - - + + - + - - - + + + - + - + - + - - + + - + - + - + - - + + - + - + @@ -22756,111 +22788,111 @@ - + - + - + - - - - - - - + + + + + + + - + - + - + - + - + - + - + - + - - + + - + - + - + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - + + + @@ -22874,44 +22906,44 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -22919,139 +22951,139 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - + - + - - - + + + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -23060,312 +23092,312 @@ - + - + - + - + - + - + - + - + - + - + - + - + - - - - - - + + + + + + - - + + - + - + - + - + - + - + - + - + - + - - + + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + @@ -23388,14 +23420,14 @@ - + - - + + @@ -23403,28 +23435,28 @@ - - + + - + - + - + - + - + - - + + @@ -23438,13 +23470,13 @@ - - + + - + - + @@ -23456,10 +23488,10 @@ - + - + @@ -23471,7 +23503,7 @@ - + @@ -23495,10 +23527,10 @@ - + - + @@ -23510,183 +23542,183 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + + + - - + + - + - - - - - - + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - + + + + + + + + + - - - + + + + + - - - - - - - - - - - - + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + - + @@ -23697,7 +23729,7 @@ - + @@ -23706,7 +23738,7 @@ - + @@ -23723,36 +23755,36 @@ - + - - + + - - + + - - + + - - + + - - - + + + - + @@ -23762,12 +23794,12 @@ - + - + @@ -23786,7 +23818,7 @@ - + @@ -23830,30 +23862,30 @@ - - + + - - - + + + - - - + + + - + - + - + @@ -23884,48 +23916,48 @@ - + - + - - + + - + - + - + - - + + - - + + - - + + - - + + - + @@ -23933,74 +23965,68 @@ - + - + - + - + - - + + - - + + - - - + + + - + - + - + - + - - - - - - - + + - @@ -24008,74 +24034,74 @@ - + - + - + + - + - + - - + + + + + + + - + - + - - + + - - - - - - - + + + - - - + + - @@ -24083,176 +24109,182 @@ - + - - + + - - + + - - + + - - + + - - + + - - + + - + - - + - + + + + - - - - + - + + + + - - + - - + + - - - + - - + + + - - - - + + + - - + + + + + + + + + - - - - - + - - + + - - - + + - + + - - - - + + + - - - + + - - - - + + + - + + + + + - - + - - - + + - - - - + + + - - - - + + + + + + + + + + @@ -24266,8 +24298,14 @@ + + + + + + - + @@ -24291,6 +24329,11 @@ + + + + + @@ -24298,11 +24341,11 @@ - + - + @@ -24330,7 +24373,7 @@ - + @@ -24339,7 +24382,7 @@ - + @@ -24356,21 +24399,21 @@ - + - - + + - + - - + + @@ -24388,9 +24431,9 @@ - - - + + + @@ -24402,20 +24445,20 @@ - - + + - + - + - + @@ -24427,12 +24470,12 @@ - + - + - - + + @@ -24455,79 +24498,79 @@ - + - + - + - + - - + + - + - - - - + + + + - + - + - + - + - + - - + + - - + + - - + + - - + + - - + + @@ -24535,32 +24578,33 @@ - - - - + + + + - - + + - - + + + - - + + - + - + @@ -24568,13 +24612,13 @@ - + - - - + + + @@ -24582,16 +24626,16 @@ - - + - + + - + @@ -24621,7 +24665,7 @@ - + @@ -24641,7 +24685,7 @@ - + @@ -24654,24 +24698,24 @@ - + - + - - + + - - + + - - + + @@ -24684,7 +24728,7 @@ - + @@ -24695,8 +24739,8 @@ - - + + @@ -24705,31 +24749,31 @@ - - - - - - - + + + + + + + - - - - - - - + + + + + + + - + - + @@ -24779,7 +24823,7 @@ - + @@ -24790,8 +24834,8 @@ - - + + @@ -24799,10 +24843,10 @@ - + - + @@ -24811,13 +24855,13 @@ - - + + - + - + @@ -24829,7 +24873,7 @@ - + @@ -24838,11 +24882,11 @@ - + - - + + @@ -24856,70 +24900,70 @@ - - - - - + + + + + - + - - + + - + - + - + - + - + - + - - + + - + - + - + - + @@ -24933,17 +24977,8 @@ - - - - - - - - - - + @@ -24968,7 +25003,7 @@ - + @@ -24976,14 +25011,14 @@ - + - + @@ -24996,43 +25031,43 @@ - + - + - + - + - - + + - + - + - - + + - + - + - + @@ -25041,7 +25076,7 @@ - + @@ -25049,7 +25084,7 @@ - + @@ -25058,11 +25093,18 @@ + + + + + + + - + @@ -25074,7 +25116,7 @@ - + @@ -25083,7 +25125,7 @@ - + @@ -25098,8 +25140,8 @@ - - + + @@ -25108,91 +25150,83 @@ - - - + + + - - - - + + + + - + - - + + - + - + - - + + - + - + - + - - + + - + - - + + - + - + - + - - - + + + - + - + - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + @@ -25212,14 +25246,14 @@ - + - + @@ -25232,194 +25266,206 @@ - - + + - - - + + + - - + + + + - - - - - - - - - + + + + + - - - - + + + + + + + + + + + + + + + + + + - - - + + + - - - + + + - + - + - - - - + + + + - - - + + + - - - + + + - - - - + + + + - + - - - - + + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - + - + - - + + - - - - + + + + - - - + + + - - + + - - - - + + + + - + - - + + - + - - + + - + - - + + - - + + - - - - + + + + - - - + + + @@ -25436,7 +25482,7 @@ - + @@ -25447,7 +25493,7 @@ - + @@ -25463,11 +25509,11 @@ - + - + @@ -25481,7 +25527,7 @@ - + @@ -25489,30 +25535,30 @@ - + - + - + - - + + - + + - - - - + + + @@ -25522,315 +25568,325 @@ - - + + + + + + + + + + + + - - - - + + + + - - - - - - + + + + + + - - + + - - - + + + - - - - + + + + - - - + + + - - - + + + - - - - - - - - - + + + + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - + + + + - - + + - - + + - - - + + + - - - + + + - - - + + + - - - + + + - - + + - + - + - + - + - - + + - - + + - - - - - - + + + + + + - - - - + + + + - - - + + + - - - + + + - - - - + + + + - - - - + + + + - - - - - + + + + + - - - - + + + + - - - - + + + + - - + + - - + + - - - - - + + + + + - - - + + + - - - - + + + + - - - + + + - + - + - - - - - - - - - - - - + + + + + + + + + + + + - + - + - - + + - + - + - + - + - + - - + + - + - + - + - + - + - - + + - - - + + + @@ -25846,46 +25902,46 @@ - + - + - - + + - + - + - - + + - + - + - + @@ -25898,7 +25954,7 @@ - + @@ -25910,8 +25966,8 @@ - - + + @@ -25975,21 +26031,21 @@ - - + + - + - + - + - + @@ -26001,79 +26057,82 @@ - + - + + + + - - + + - - + + - - + + - - + + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - - - + + + - - - + + + @@ -26088,85 +26147,85 @@ - + - + - + - + - + - + - - + + - + - + - + - + - - + + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - - + + @@ -26175,34 +26234,34 @@ - - - + + + - - + + - + - - + + - + - + @@ -26220,12 +26279,12 @@ - + - + - + @@ -26249,7 +26308,7 @@ - + @@ -26258,345 +26317,345 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + - + - - - - - - - + + + + + + + - - - - + + + + - - - + + + - - - + + + - + - + - - + + - - + + - - - + + + - - + + - - + + - - + + - - + + - - + + - - + + - - - + + + - - + + - - + + - - + + - + - - + + - - + + - - + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - - + + + - - - - - + + + + + - - - - + + + + - - - + + + - - + + - - + + - - + + - + - + - - - + + + - - - + + + - + - + - + - + - - + + - + - + - - - - - - + + + + + + - + - + - + - + - - - + + + - - - + + + - - + + - - - - + + + + - + @@ -26614,13 +26673,13 @@ - + - + - + @@ -26632,58 +26691,59 @@ - + - + - - - - - + + + + + - + - - + + + - - + + - - - + + + - - - + + + - - - - - + + + + + - + - + @@ -26692,44 +26752,44 @@ - - + + - - + + - - - + + + - + - + - + - - + + - - + + - + @@ -26742,98 +26802,98 @@ - + - - + + - + - + - + - + - - - - - - + + + + + + - - + + - - - - - + + + + + - - - - - + + + + + - + - + - + - + - + - + - + - - + + - + - + - + - + @@ -26847,7 +26907,7 @@ - + @@ -26874,56 +26934,67 @@ - - - - - + + + + - - + + + - - + + + + + + + + + + + + + - - - - - + + - - + + + - - + + + - - - + + - - + + + + - - - - + + + + - - + + - + @@ -26946,9 +27017,9 @@ - - - + + + @@ -26956,10 +27027,10 @@ - - + + - + @@ -26968,7 +27039,7 @@ - + @@ -26982,9 +27053,9 @@ - - - + + + @@ -26996,10 +27067,10 @@ - - - - + + + + @@ -27007,13 +27078,13 @@ - + - - + + - + @@ -27022,68 +27093,68 @@ - + - + - + - + - + - + - + - + - + - - - - - - + + + + + - - - + + + + - + - - - + + + - + - - - - + + + + - + - - + + @@ -27094,48 +27165,48 @@ - + - - + + - + - - + + - + - + - + - + - + - + @@ -27152,305 +27223,305 @@ - + - + - + - - + + - + - + - - + + - - + + - + - + - - - + + + - + - - - + + + - + - - + + - + - + - + - + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - - + + - - + + - - + + - - + + - - - - - + + + + + - - - - + + + + - - - + + + - - - - - + + + + + - - - + + + - - + + - - - - - - + + + + + + - - - - + + + + - + - + - + - - + + - + - + - + - + - + - + - + - + - + - + - + - - - - + + + + - + - + - + - + - + - + @@ -27458,14 +27529,7 @@ - - - - - - - - + @@ -27479,7 +27543,7 @@ - + @@ -27529,16 +27593,16 @@ - + - + - + @@ -27579,7 +27643,7 @@ - + @@ -27588,38 +27652,38 @@ - + - + - + - + - + - - - - - + + + + + - - - - + + + + - - - - + + + + @@ -27627,33 +27691,33 @@ - - - + + + - - - + + + - - - - + + + + - - + + - - - - - + + + + + @@ -27662,35 +27726,35 @@ - - - + + + - + - + - + - + - + - + @@ -27709,97 +27773,97 @@ - - - - + + + + - - - - + + + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -27808,7 +27872,7 @@ - + @@ -27823,10 +27887,10 @@ - + - + @@ -27834,48 +27898,48 @@ - + - + - - + + - - - - + + + + - - + + - - - - + + + + - + - + - + - + @@ -27884,7 +27948,7 @@ - + @@ -27892,45 +27956,45 @@ - - - - - - - - - + + + + + + + + + - + - + - + - + - - + + - + - + - + - + @@ -27938,7 +28002,7 @@ - + @@ -27960,124 +28024,141 @@ - - - + + + + + + + + + + + + + + + + + + + + - + - + - + - + - - - + + + - - + + - - + + - - - + + + - + - + - - + + - - - + + + - - - + + + - - - + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - - + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - + + + + @@ -28090,11 +28171,11 @@ - + - - + + @@ -28106,66 +28187,66 @@ - - + + - - + + - - + + - - + + - - - + + + - - - + + + - - - + + + - + - - - - - + + + + + - - + + - - - + + + - - + + @@ -28182,7 +28263,7 @@ - + @@ -28191,33 +28272,33 @@ - + - + - + - + - + - + - + - - + + @@ -28226,106 +28307,101 @@ - - - - + + + + - - - + - - - - - - - - + + + + + - + - + - + - + - + - - - + + + - - + + - - + + - - + + - - + + - + - - - + + + - - - - + + + + - - + + - + - + - - - + + + @@ -28349,22 +28425,22 @@ - + - + - + - + - + @@ -28373,16 +28449,16 @@ - + - + - + @@ -28438,7 +28514,7 @@ - + @@ -28447,19 +28523,19 @@ - + - + - - + + - + - + @@ -28474,48 +28550,48 @@ - - + + - + - + - + - + - + - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + - + @@ -28537,44 +28613,44 @@ - + - - + + - + - + - + - + - + - + - + - + @@ -28583,24 +28659,24 @@ - - + + - - - + + + - + - - + + @@ -28609,67 +28685,67 @@ - + - + - - - + + + - + - + - + - + - + - + - + - - + + - - + + - + - - + + - + - - - + + + @@ -28688,13 +28764,13 @@ - + - - + + - + @@ -28711,199 +28787,199 @@ - - + + - + - - - + + + - - - - + + + + - - + + - + - - - + + + - - + + - - + + - - - - - + + + + + - - - - + + + + - - - + + + - - + + - - + + - - - - - + + + + + - - - - - + + + + + - - + + - - - + + + - - - - - + + + + + - - - - - - + + + + + + - - - + + + - + - - + + - - + + - - - + + + - - - + + + - - - + + + - - - - + + + + - - - - + + + + - - - - - + + + + + - - - + + + - - - - + + + + - - - - + + + + - - - - - + + + + + - - - - + + + + - - + + - - + + - - - + + + - + - - - + + + @@ -28911,219 +28987,219 @@ - + - + - + - - - - - - - - - + + + + + + + + + - + - - - - + + + + - - - - + + + + - - - - - + + + + + - - - - - + + + + + - - - - - - + + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - - + + + + + - + - + - + - - + + - - + + - + - - + + - + - - - + + + - + - - + + - + - - - - - + + + + + - + - + - - + + @@ -29136,27 +29212,27 @@ - + - + - + - + - + @@ -29169,21 +29245,21 @@ - - + + - - + + - - + + @@ -29192,278 +29268,282 @@ - + - + - + - + - + - - + + - + - + - - - + + + - + - - + + - + - + - - - - - - + + + + + + - + - - - - - + + + + + - - - + + + - + - - + + - + - + - + - - - + + + - - + + - + - + - + - - + + - + - + - + - + - + - + - + - - + + - - + + - + - - - + + + + + + + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - - - - - - + + + + + + + - + - - - - + + + + - - - - + + + + - - - - + + + + - - + + - - - + + + - - + + - - + + - + - + @@ -29473,12 +29553,12 @@ - + - + @@ -29499,158 +29579,158 @@ - + - + - - + + - + - + - + - - - - - - + + + + + + - - + + - - + + - + - + - + - + - + - + - + - + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - + - + - + - + - + - + - + - + - + - - + + - + - + - + - - + + - - + + - - + + @@ -29661,277 +29741,277 @@ - - + + - + - + - + - + - + - + - + - + - + - + - - + + - - - + + + - + - + - - + + - - + + - - - - + + + + - - + + - - + + - + - + - + - + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - - - - + + + + + - + - - + + - + - + - + - + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - + - - + + - + - + - + - + - + - - + + - - + + - - + + - + - - + + - - + + - + - - + + - + - - + + - + - - + + - - + + - + - + - + - - + + @@ -29942,121 +30022,121 @@ - + - - + + - + - - + + - + - + - + - + - + - + - + - + - - + + - + - + - + - - - + + + - + - + - + - - + + - + - + - - + + - + - - - + + + - - + + - - + + - + @@ -30072,57 +30152,57 @@ - - + + - + - + - - + + - + - - + + - + - + - + - + - + - + @@ -30131,166 +30211,170 @@ - + - - + + - - + + - + + + + + - + - + - + - + - + - - + + - + - - + + - - - + + + - - + + - - + + - - + + - - + + - - + + - - - + + + - - - - + + + + - - - - + + + + - - + + - - - + + + - - - - + + + + - - + + - - - - + + + + - - - + + + - - - + + + - + - + - + - + - + - - + + - + - + - - + + - + - - + + - + @@ -30300,8 +30384,8 @@ - - + + @@ -30311,75 +30395,72 @@ - + - + - + - - + + - + - + - + - + - + - - + + - - + + - + - + - + - + - - - - + @@ -30392,23 +30473,23 @@ - - + + - + - - + + - - - + + + @@ -30420,146 +30501,145 @@ - - - - - + + + + + - - - + + + - - + + - + - + - - + + - - + + - - - + + + - - + + - - + + - - - + + + - - - + + + - - - - + + + + - - - - - - + + + + + - - + + - - - + + + - + - - + + - + - + - + - + - - + + - - + + - + - - + + - - + + - - + + - - + + - - + + - - + + - + @@ -30568,12 +30648,12 @@ - + - - + + @@ -30585,109 +30665,112 @@ - + - + - + - - + + - - + + - - + + + + + - - + + - - - + + + - - - + + + - - + + - - + + - - + + - - + + - - - + + + - - - + + + - - + + - + - + - - + + - - - + + + - - - + + + - - + + - - + + - + - + - - - + + + - - - + + + @@ -30708,13 +30791,13 @@ - + - + @@ -30722,37 +30805,37 @@ - - - + + + - + - - - - + + + + - + - - + + - - + + - - + + @@ -30763,37 +30846,37 @@ - + - + - + - + - + - + - + - + - + - + @@ -30803,101 +30886,101 @@ - + - + - - - + + + - - - - + + + + - - - - + + + + - - - - - - + + + + + + - - - - - - - + + + + + + + - - - - - - - + + + + + + + - - - + + + - - - - + + + + - - - - - + + + + + - - + + - - - - + + + + - - - - - + + + + + - - - + + + - - - + + + @@ -30913,11 +30996,11 @@ - + - + @@ -30946,20 +31029,20 @@ - + - + - - + + @@ -30973,7 +31056,7 @@ - + @@ -30987,100 +31070,96 @@ - + - - + + - - + + - + - + - + - + - + - + - - - - - + - - - + + + - + - + - + - + - + - - + + - - + + - + - + - + - + - + @@ -31094,167 +31173,167 @@ - - + + - + - + - + - + - - + + - + - + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - - - - - + + + + + + - - + + - - + + - - + + - + - - + + @@ -31265,9 +31344,9 @@ - + - + @@ -31287,9 +31366,9 @@ - + - + @@ -31305,80 +31384,80 @@ - + - - - + + + - - + + - - + + - + - + - + - + - + - + - - + + - + - + - - + + - + - - + + - + @@ -31390,19 +31469,19 @@ - - - + + + - + - + - + @@ -31413,26 +31492,26 @@ - - + + - + - + - - + + - - + + @@ -31448,9 +31527,9 @@ - + - + @@ -31465,19 +31544,19 @@ - + - + - - + + @@ -31486,31 +31565,36 @@ - + - + - + - + + + + + + - + - - + + @@ -31521,9 +31605,9 @@ - - - + + + @@ -31532,26 +31616,29 @@ - - + + + + + - - - + + + - - + + - - + + From 7580763a871b4ab292c270cdd9cb5a0dca010c77 Mon Sep 17 00:00:00 2001 From: Petr Viktorin Date: Tue, 25 Nov 2025 13:49:30 +0100 Subject: [PATCH 8/8] =?UTF-8?q?=E2=80=A6=20will=20need=20explicit=20confiu?= =?UTF-8?q?ration?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Doc/c-api/init.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Doc/c-api/init.rst b/Doc/c-api/init.rst index d0cf31902cd118..573dd05c812534 100644 --- a/Doc/c-api/init.rst +++ b/Doc/c-api/init.rst @@ -1562,7 +1562,7 @@ All of the following functions must be called after :c:func:`Py_Initialize`. This function was added in a bugfix release, and extensions that use it will be incompatible with Python 3.14.0. Most packaging tools for Python are not able to handle this - incompatibility automatically, and will need. + incompatibility automatically, and will need explicit configuration. When using PyPA standards (wheels and source distributions), specify ``Requires-Python: != 3.14.0.*`` in `core metadata `_. @@ -1582,7 +1582,7 @@ All of the following functions must be called after :c:func:`Py_Initialize`. This function was added in a bugfix release, and extensions that use it will be incompatible with Python 3.14.0. Most packaging tools for Python are not able to handle this - incompatibility automatically, and will need. + incompatibility automatically, and will need explicit configuration. When using PyPA standards (wheels and source distributions), specify ``Requires-Python: != 3.14.0.*`` in `core metadata `_.