@@ -2706,6 +2706,33 @@ Changes in the C API
27062706 Calling this function is redundant now that :c:func: `PyFrame_GetLocals `
27072707 returns a write-through proxy for :term: `optimized scopes <optimized scope> `.
27082708
2709+ * Python 3.13 removed many private functions. Some of them can be replaced using these
2710+ alternatives:
2711+
2712+ * ``_PyDict_Pop() ``: :c:func: `PyDict_Pop ` or :c:func: `PyDict_PopString `;
2713+ * ``_PyDict_GetItemWithError() ``: :c:func: `PyDict_GetItemRef `;
2714+ * ``_PyErr_WriteUnraisableMsg() ``: :c:func: `PyErr_FormatUnraisable `;
2715+ * ``_PyEval_SetTrace() ``: :c:func: `PyEval_SetTrace ` or :c:func: `PyEval_SetTraceAllThreads `;
2716+ * ``_PyList_Extend() ``: :c:func: `PyList_Extend `;
2717+ * ``_PyLong_AsInt() ``: :c:func: `PyLong_AsInt `;
2718+ * ``_PyMem_RawStrdup() ``: ``strdup() ``;
2719+ * ``_PyMem_Strdup() ``: ``strdup() ``;
2720+ * ``_PyObject_ClearManagedDict() ``: :c:func: `PyObject_ClearManagedDict `;
2721+ * ``_PyObject_VisitManagedDict() ``: :c:func: `PyObject_VisitManagedDict `;
2722+ * ``_PyThreadState_UncheckedGet() ``: :c:func: `PyThreadState_GetUnchecked() `;
2723+ * ``_PyTime_AsSecondsDouble() ``: :c:func: `PyTime_AsSecondsDouble `;
2724+ * ``_PyTime_GetMonotonicClock() ``: :c:func: `PyTime_Monotonic ` or :c:func: `PyTime_MonotonicRaw `;
2725+ * ``_PyTime_GetPerfCounter() ``: :c:func: `PyTime_PerfCounter ` or :c:func: `PyTime_PerfCounterRaw `;
2726+ * ``_PyTime_GetSystemClock() ``: :c:func: `PyTime_Time ` or :c:func: `PyTime_TimeRaw `;
2727+ * ``_PyTime_MAX ``: :c:var: `PyTime_MAX `;
2728+ * ``_PyTime_MIN ``: :c:var: `PyTime_MIN `;
2729+ * ``_PyTime_t ``: :c:type: `PyTime_t `;
2730+ * ``_Py_HashPointer() ``: :c:func: `Py_HashPointer `;
2731+ * ``_Py_IsFinalizing() ``: :c:func: `Py_IsFinalizing `.
2732+
2733+ The `pythoncapi-compat project `_ can be used to get most of these new
2734+ functions on Python 3.12 and older.
2735+
27092736Regression Test Changes
27102737=======================
27112738
0 commit comments