diff options
author | Irit Katriel <1055913+iritkatriel@users.noreply.github.com> | 2023-05-31 14:44:11 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-05-31 14:44:11 (GMT) |
commit | fbc9d0dbb22549bac2706f61f3ab631239d357b4 (patch) | |
tree | 05c7b90671fa33c4b9aadb1b1f991c9150abd336 | |
parent | 0430e97097a8f852aea21669e7f4203d028114f9 (diff) | |
download | cpython-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.rst | 34 | ||||
-rw-r--r-- | Include/cpython/object.h | 13 | ||||
-rw-r--r-- | Misc/NEWS.d/next/Core and Builtins/2023-05-30-20-30-57.gh-issue-105111.atn0_6.rst | 3 |
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``. |