| Release: | |release| |
|---|---|
| Date: | |today| |
This article explains the new features in Python 3.10, compared to 3.9.
For full details, see the :ref:`changelog <changelog>`.
Note
Prerelease users should be aware that this document is currently in draft form. It will be updated substantially as Python 3.10 moves towards release, so it's worth checking back even after reading earlier versions.
- Builtin and extension functions that take integer arguments no longer accept :class:`~decimal.Decimal`s, :class:`~fractions.Fraction`s and other objects that can be converted to integers only with a loss (e.g. that have the :meth:`~object.__int__` method but do not have the :meth:`~object.__index__` method). (Contributed by Serhiy Storchaka in :issue:`37999`.)
- None yet.
Added :func:`tracemalloc.reset_peak` to set the peak size of traced memory blocks to the current size, to measure the peak of specific pieces of code. (Contributed by Huon Wilson in :issue:`40630`.)
This section lists previously described changes and other bugfixes that may require changes to your code.
- Since :c:func:`Py_TYPE()` is changed to the inline static function,
Py_TYPE(obj) = new_typemust be replaced withPy_SET_TYPE(obj, new_type): see :c:func:`Py_SET_TYPE()` (available since Python 3.9). (Contributed by Dong-hee Na in :issue:`39573`.)