@@ -2706,6 +2706,33 @@ Changes in the C API
2706
2706
Calling this function is redundant now that:c:func: `PyFrame_GetLocals `
2707
2707
returns a write-through proxy for:term: `optimized scopes <optimized scope> `.
2708
2708
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
+
2709
2736
Regression Test Changes
2710
2737
=======================
2711
2738