mirror of
https://github.com/python/cpython.git
synced 2025-11-02 19:12:55 +00:00
bpo-39573: Porting to Python 3.10: Py_SET_SIZE() macro (GH-20610)
In What's New in Python 3.10, propose Py_SET_SIZE(), Py_SET_REFCNT() and Py_SET_TYPE() macros for backward compatibility with Python 3.9 and older.
This commit is contained in:
parent
6ed578f6db
commit
dc24b8a2ac
1 changed files with 21 additions and 3 deletions
|
|
@ -135,17 +135,35 @@ Porting to Python 3.10
|
||||||
|
|
||||||
* Since :c:func:`Py_TYPE()` is changed to the inline static function,
|
* Since :c:func:`Py_TYPE()` is changed to the inline static function,
|
||||||
``Py_TYPE(obj) = new_type`` must be replaced with ``Py_SET_TYPE(obj, new_type)``:
|
``Py_TYPE(obj) = new_type`` must be replaced with ``Py_SET_TYPE(obj, new_type)``:
|
||||||
see :c:func:`Py_SET_TYPE()` (available since Python 3.9).
|
see :c:func:`Py_SET_TYPE()` (available since Python 3.9). For backward
|
||||||
|
compatibility, this macro can be used::
|
||||||
|
|
||||||
|
#if PY_VERSION_HEX < 0x030900A4
|
||||||
|
# define Py_SET_TYPE(obj, type) ((Py_TYPE(obj) = (type)), (void)0)
|
||||||
|
#endif
|
||||||
|
|
||||||
(Contributed by Dong-hee Na in :issue:`39573`.)
|
(Contributed by Dong-hee Na in :issue:`39573`.)
|
||||||
|
|
||||||
* Since :c:func:`Py_REFCNT()` is changed to the inline static function,
|
* Since :c:func:`Py_REFCNT()` is changed to the inline static function,
|
||||||
``Py_REFCNT(obj) = new_refcnt`` must be replaced with ``Py_SET_REFCNT(obj, new_refcnt)``:
|
``Py_REFCNT(obj) = new_refcnt`` must be replaced with ``Py_SET_REFCNT(obj, new_refcnt)``:
|
||||||
see :c:func:`Py_SET_REFCNT()` (available since Python 3.9).
|
see :c:func:`Py_SET_REFCNT()` (available since Python 3.9). For backward
|
||||||
|
compatibility, this macro can be used::
|
||||||
|
|
||||||
|
#if PY_VERSION_HEX < 0x030900A4
|
||||||
|
# define Py_SET_REFCNT(obj, refcnt) ((Py_REFCNT(obj) = (refcnt)), (void)0)
|
||||||
|
#endif
|
||||||
|
|
||||||
(Contributed by Victor Stinner in :issue:`39573`.)
|
(Contributed by Victor Stinner in :issue:`39573`.)
|
||||||
|
|
||||||
* Since :c:func:`Py_SIZE()` is changed to the inline static function,
|
* Since :c:func:`Py_SIZE()` is changed to the inline static function,
|
||||||
``Py_SIZE(obj) = new_size`` must be replaced with ``Py_SET_SIZE(obj, new_size)``:
|
``Py_SIZE(obj) = new_size`` must be replaced with ``Py_SET_SIZE(obj, new_size)``:
|
||||||
see :c:func:`Py_SET_SIZE()` (available since Python 3.9).
|
see :c:func:`Py_SET_SIZE()` (available since Python 3.9). For backward
|
||||||
|
compatibility, this macro can be used::
|
||||||
|
|
||||||
|
#if PY_VERSION_HEX < 0x030900A4
|
||||||
|
# define Py_SET_SIZE(obj, size) ((Py_SIZE(obj) = (size)), (void)0)
|
||||||
|
#endif
|
||||||
|
|
||||||
(Contributed by Victor Stinner in :issue:`39573`.)
|
(Contributed by Victor Stinner in :issue:`39573`.)
|
||||||
|
|
||||||
* Calling :c:func:`PyDict_GetItem` without :term:`GIL` held had been allowed
|
* Calling :c:func:`PyDict_GetItem` without :term:`GIL` held had been allowed
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue