Python 3.12.1 now available

Python 3.12.1 is now available.

This is the first maintenance release of Python 3.12

Python 3.12 is the newest major release of the Python programming language, and it contains many new features and optimizations. 3.12.1 is the latest maintenance release, containing more than 400 bugfixes, build improvements and documentation changes since 3.12.0.

Major new features of the 3.12 series, compared to 3.11

New features

Type annotations


  • The deprecated wstr and wstr_length members of the C implementation of unicode objects were removed, per PEP 623.
  • In the unittest module, a number of long deprecated methods and classes were removed. (They had been deprecated since Python 3.1 or 3.2).
  • The deprecated smtpd and distutils modules have been removed (see PEP 594 and PEP 632. The setuptools package continues to provide the distutils module.
  • A number of other old, broken and deprecated functions, classes and methods have been removed.
  • Invalid backslash escape sequences in strings now warn with SyntaxWarning instead of DeprecationWarning, making them more visible. (They will become syntax errors in the future.)
  • The internal representation of integers has changed in preparation for performance enhancements. (This should not affect most users as it is an internal detail, but it may cause problems for Cython-generated code.)

For more details on the changes to Python 3.12, see What’s new in Python 3.12.

More resources

We hope you enjoy the new releases!

Thanks to all of the many volunteers who help make Python Development and these releases possible! Please consider supporting our efforts by volunteering yourself or through organization contributions to the Python Software Foundation .

Your release team,
Thomas Wouters @thomas
Ned Deily @nad
Steve Dower @steve.dower
Łukasz Langa @ambv


Would it be reasonable to include a link to the changelog for the specific release? Right now I have to click the docs link at the end of the announcement, then click “What’s new in 3.12”, then click “full changelog” because that page is still the feature list, then scroll past the “Next” top section to get to the release number’s changes (although currently “Next” is this release, docs are probably still rebuilding).


If you mean or then likely yes, but as you’ve noted the docs haven’t rebuilt yet.

Unfortunately the docs build on a daily schedule. You can see the timestamp of the last build at the bottom of the page. The last one was at 12:24 UTC yesterday, the next might be around the same time, which means that for around 12 hours the link would still be showing “Next” instead of “3.12.1”.

So linking to #python-3-12-1-final might result in people asking why the docs aren’t ready.

Ideally, I’d like to move the HTML docs to Read the Docs, so they’d be ready shortly after each push, but that’s some way off. There’s some efforts to improve the docs builds, it was so that the full matrix of 6 versions x 13 languages = 78 builds took more than 24 hours!

And actually, the last comment says the cron is now hourly, not daily, so I’m not sure why we’ve not had any new builds in ~19 hours. I’ll follow up there.


You don’t need any of that. There are per-release docs:

In my release notes I usually link the change log to that. This way it always stays relevant, even after new versions are released.


Files · main · python-devs / ci-images · GitLab updated.


3.12.1 also contains a medium-severity security fix (CVE-2023-6507) for a regression to the subprocess module’s extra_groups parameter on POSIX systems introduced in 3.12.0. Full advisory was published to


Anthony Sottile and I updated deadsnakes to now include 3.13.0a3, 3.12.1, and 3.11.7.


WASI build at Release CPython 3.12.1 w/ WASI SDK 20 · brettcannon/cpython-wasi-build · GitHub


The Fedora updates are available in updates-testing as usual.