
(Note: This page is updated every now and then, according to new Python releases and other interesting details. Last updated: 2026-10-11)
Even though I’ve used Python programming language on-and-off since about year 2000, I only started paying more attention to specific Python versions around 2016 when I gradually started using Python more seriously in devops. When dealing with different runtime environments it is crucial to know which features are available in which Python versions. This page lists the most important features and changes in Python versions for me, to be constantly updated when need arises.
This list below is merely a short sample of all the important or interesting changes in the Python versions. Be sure to check the linked full “What’s New” pages when planning your own workflows and deployments.
Note that I haven’t included any performance improvements in this list since it’s expected that newer Python releases are faster than previous ones anyway, as drafted out by Mark Shannon in Faster CPython plan.
Python 3.15 (released on 2026-10-09)
- What’s New In Python 3.15
- Explicit lazy imports (PEP 810)
sentinelobjects (PEP 661)frozendictbuilt-in type (PEP 814)tomllibmodule now supports TOML 1.1.0- Uses UTF-8 as the default encoding, independent of the system’s environment (PEP 686)
- Unpacking in comprehensions (PEP 798)
suggest_on_errorparameter ofargparse.ArgumentParserdefaults toTrue, enabling suggestions for mistyped argument choices and subparser names- New
expandparameter onpprint.pprint() - Soft deprecated
re.match()andre.Pattern.match()APIs: usere.prefixmatch()andre.Pattern.prefixmatch()instead - The undocumented keyword argument syntax for creating
NamedTupleclasses (for example,Point = NamedTuple("Point", x=int, y=int)) is no longer supported - Removed deprecated
pathlib.PurePath.is_reserved()
Python 3.14 (released on 2025-10-07)
- What’s New In Python 3.14
- Python 3.14 is available packaged in Ubuntu 26.04 LTS (resolute)
- Python 3.14 is currently the latest Python version generally available in AWS Lambda (see Lambda runtimes) and in Azure Functions (see Azure Functions runtime versions overview)
- Template strings (t-strings) (PEP 750)
- Allow
exceptandexcept*without parentheses (PEP 758) uuid.uuid6(),uuid.uuid7(),uuid.uuid8()compressionpackage andcompression.zstdmodule
Python 3.13 (released on 2024-10-07)
- What’s New In Python 3.13
- Python 3.13 is the packaged Python in Debian 13 Trixie
- Added
deprecatedargument inargparse.ArgumentParser.add_argument() base64.z85encode()and.z85decode()ipaddress.IPv4Address.ipv6_mappedpropertypathlib.Path.from_uri()- Improved resolution of
time.monotonic()andtime.time()on Windows - Soft deprecated
getoptandoptparsemodules - Deprecated positional arguments
maxsplit,countandflagsinre.split(),re.sub()andre.subn(), they will become keyword-only - Deprecated
pathlib.PurePath.is_reserved()(to be removed in Python 3.15) - Removed “dead batteries“
Python 3.12 (released on 2023-10-02)
- What’s New In Python 3.12
- Python 3.12 is available packaged in Ubuntu 24.04 LTS (noble)
itertools.batched()pathlib.Path.walk()- Removed
distutilsmodule - Removed many deprecated
unittest.TestCasemethod aliases - Removed some deprecated
configparsernames - Deprecated
datetime.datetime.utcnow()anddatetime.datetime.utcfromtimestamp() - Deprecated
sqlite3default adapters and converters
Python 3.11 (released on 2022-10-24, end of life expected on 2027-10)
- What’s New In Python 3.11
- Python 3.11 is the packaged Python in Debian 12 Bookworm
- Exception groups and
except* - Exceptions can have added notes
- TOML configuration file parser:
tomllibmodule asyncio.TaskGrouptyping.Self,typing.LiteralStringenum.StrEnum,enum.show_flag_values()- Deprecated a few legacy modules (to be removed in Python 3.13)
- Deprecated
typing.Text(removal schedule not yet specified)
Python 3.10 (released on 2021-10-04, end of life since 2026-10-01)
- What’s New In Python 3.10
- Python 3.10 is available packaged in Ubuntu 22.04 LTS (jammy)
- Allow writing union types as
X | Y - Structural pattern matching (
match–casestatements) typing.TypeAliassocket.timeoutis now an alias ofTimeoutErrorbisectmodule functions now havekeyparameter- Deprecated
distutilsmodule (to be removed in Python 3.12)
Python 3.9 (released on 2020-10-05, end of life since 2025-10-31)
- What’s New In Python 3.9
- Python 3.9 is the packaged Python in Debian 11 Bullseye
- Python 3.9 is available packaged in Ubuntu 20.04 LTS (focal)
- Dictionary merge and update operators (
|and|=) - Using built-in types (like
dictandlist) in type hinting zoneinfomodulestr.removeprefix()andstr.removesuffix()ipaddress.IPv6Addresssupports IPv6 scoped addresses
Python 3.8 (released on 2019-10-14, end of life since 2024-10-07)
- What’s New In Python 3.8
- Python 3.8 is available packaged in Ubuntu 20.04 LTS (focal)
- Walrus operator (
:=, assignment expressions) - Positional-only parameters
typing.Final,typing.final,typing.Literal
Python 3.7 (released on 2018-06-27, end of life since 2023-06-27)
- What’s New In Python 3.7
- Python 3.7 is the packaged Python in Debian 10 Buster
- Python 3.7 was available packaged in Ubuntu 18.04 LTS (bionic)
- Dictionary item ordering is preserved
dataclassesmoduleipaddress.IPv4Network.subnet_of(),.supernet_of()(and the same foripaddress.IPv6Network)
Python 3.6 (released on 2016-12-23, end of life since 2021-12-23)
- What’s New In Python 3.6
- Python 3.6 was available packaged in Ubuntu 18.04 LTS (bionic)
- f-strings (formatted string literals)
- Underscores in numeric literals (for grouping digits)
secretsmoduleenum.auto
See also:
- What’s New In Python (for even older Python versions)
- Status of Python Versions
- Python in Debian