mirror of
https://github.com/python/cpython.git
synced 2024-11-28 12:31:14 +08:00
gh-105111: remove deprecated macros Py_TRASHCAN_SAFE_BEGIN and Py_TRASHCAN_SAFE_END (#105112)
This commit is contained in:
parent
0430e97097
commit
fbc9d0dbb2
@ -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
|
||||
=============
|
||||
|
@ -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);
|
||||
|
||||
|
@ -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``.
|
Loading…
Reference in New Issue
Block a user