summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIrit Katriel <1055913+iritkatriel@users.noreply.github.com>2023-05-31 14:44:11 (GMT)
committerGitHub <noreply@github.com>2023-05-31 14:44:11 (GMT)
commitfbc9d0dbb22549bac2706f61f3ab631239d357b4 (patch)
tree05c7b90671fa33c4b9aadb1b1f991c9150abd336
parent0430e97097a8f852aea21669e7f4203d028114f9 (diff)
downloadcpython-fbc9d0dbb22549bac2706f61f3ab631239d357b4.zip
cpython-fbc9d0dbb22549bac2706f61f3ab631239d357b4.tar.gz
cpython-fbc9d0dbb22549bac2706f61f3ab631239d357b4.tar.bz2
gh-105111: remove deprecated macros Py_TRASHCAN_SAFE_BEGIN and Py_TRASHCAN_SAFE_END (#105112)
-rw-r--r--Doc/whatsnew/3.13.rst34
-rw-r--r--Include/cpython/object.h13
-rw-r--r--Misc/NEWS.d/next/Core and Builtins/2023-05-30-20-30-57.gh-issue-105111.atn0_6.rst3
3 files changed, 37 insertions, 13 deletions
diff --git a/Doc/whatsnew/3.13.rst b/Doc/whatsnew/3.13.rst
index 59c7f78..441b3ab 100644
--- a/Doc/whatsnew/3.13.rst
+++ b/Doc/whatsnew/3.13.rst
@@ -286,6 +286,11 @@ Removed
third-party Tix library which the module wrapped is unmaintained.
(Contributed by Zachary Ware in :gh:`75552`.)
+* Remove the old trashcan macros ``Py_TRASHCAN_SAFE_BEGIN`` and
+ ``Py_TRASHCAN_SAFE_END``. They should be replaced by the new macros
+ ``Py_TRASHCAN_BEGIN`` and ``Py_TRASHCAN_END``. The new macros were
+ added in Python 3.8 and the old macros were deprecated in Python 3.11.
+ (Contributed by Irit Katriel in :gh:`105111`.)
Porting to Python 3.13
@@ -294,6 +299,35 @@ Porting to Python 3.13
This section lists previously described changes and other bugfixes
that may require changes to your code.
+* The old trashcan macros ``Py_TRASHCAN_SAFE_BEGIN`` and ``Py_TRASHCAN_SAFE_END``
+ were removed. They should be replaced by the new macros ``Py_TRASHCAN_BEGIN``
+ and ``Py_TRASHCAN_END``.
+
+ A tp_dealloc function that has the old macros, such as::
+
+ static void
+ mytype_dealloc(mytype *p)
+ {
+ PyObject_GC_UnTrack(p);
+ Py_TRASHCAN_SAFE_BEGIN(p);
+ ...
+ Py_TRASHCAN_SAFE_END
+ }
+
+ should migrate to the new macros as follows::
+
+ static void
+ mytype_dealloc(mytype *p)
+ {
+ PyObject_GC_UnTrack(p);
+ Py_TRASHCAN_BEGIN(p, mytype_dealloc)
+ ...
+ Py_TRASHCAN_END
+ }
+
+ Note that ``Py_TRASHCAN_BEGIN`` has a second argument which
+ should be the deallocation function it is in.
+
Build Changes
=============
diff --git a/Include/cpython/object.h b/Include/cpython/object.h
index d8eff69..7d69231 100644
--- a/Include/cpython/object.h
+++ b/Include/cpython/object.h
@@ -539,19 +539,6 @@ PyAPI_FUNC(int) _PyTrash_cond(PyObject *op, destructor dealloc);
Py_TRASHCAN_BEGIN_CONDITION((op), \
_PyTrash_cond(_PyObject_CAST(op), (destructor)(dealloc)))
-/* The following two macros, Py_TRASHCAN_SAFE_BEGIN and
- * Py_TRASHCAN_SAFE_END, are deprecated since version 3.11 and
- * will be removed in the future.
- * Use Py_TRASHCAN_BEGIN and Py_TRASHCAN_END instead.
- */
-Py_DEPRECATED(3.11) typedef int UsingDeprecatedTrashcanMacro;
-#define Py_TRASHCAN_SAFE_BEGIN(op) \
- do { \
- UsingDeprecatedTrashcanMacro cond=1; \
- Py_TRASHCAN_BEGIN_CONDITION((op), cond);
-#define Py_TRASHCAN_SAFE_END(op) \
- Py_TRASHCAN_END; \
- } while(0);
PyAPI_FUNC(void *) PyObject_GetItemData(PyObject *obj);
diff --git a/Misc/NEWS.d/next/Core and Builtins/2023-05-30-20-30-57.gh-issue-105111.atn0_6.rst b/Misc/NEWS.d/next/Core and Builtins/2023-05-30-20-30-57.gh-issue-105111.atn0_6.rst
new file mode 100644
index 0000000..7f9c5cc
--- /dev/null
+++ b/Misc/NEWS.d/next/Core and Builtins/2023-05-30-20-30-57.gh-issue-105111.atn0_6.rst
@@ -0,0 +1,3 @@
+Remove the old trashcan macros
+``Py_TRASHCAN_SAFE_BEGIN`` and ``Py_TRASHCAN_SAFE_END``. They should be
+replaced by the new macros ``Py_TRASHCAN_BEGIN`` and ``Py_TRASHCAN_END``.