diff options
author | Victor Stinner <vstinner@python.org> | 2020-06-04 20:10:43 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-06-04 20:10:43 (GMT) |
commit | dc24b8a2ac32114313bae519db3ccc21fe45c982 (patch) | |
tree | 467c4b3fa442e4e8ac8b81c7ffaaaee24f73822f | |
parent | 6ed578f6dbffdec94f62cc2e36d626fc195678d7 (diff) | |
download | cpython-dc24b8a2ac32114313bae519db3ccc21fe45c982.zip cpython-dc24b8a2ac32114313bae519db3ccc21fe45c982.tar.gz cpython-dc24b8a2ac32114313bae519db3ccc21fe45c982.tar.bz2 |
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.
-rw-r--r-- | Doc/whatsnew/3.10.rst | 24 |
1 files changed, 21 insertions, 3 deletions
diff --git a/Doc/whatsnew/3.10.rst b/Doc/whatsnew/3.10.rst index 0b65647..1234b2e 100644 --- a/Doc/whatsnew/3.10.rst +++ b/Doc/whatsnew/3.10.rst @@ -135,17 +135,35 @@ Porting to Python 3.10 * 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)``: - 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`.) * 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)``: - 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`.) * 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)``: - 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`.) * Calling :c:func:`PyDict_GetItem` without :term:`GIL` held had been allowed |