@@ -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
0 commit comments