Python 3.14.0 beta 1 is here!

Only one day late, welcome to the first beta!

https://www.python.org/downloads/release/python-3140b1/

This is a beta preview of Python 3.14

Python 3.14 is still in development. This release, 3.14.0b1, is the first of four planned beta releases.

Beta release previews are intended to give the wider community the opportunity to test new features and bug fixes and to prepare their projects to support the new feature release.

We strongly encourage maintainers of third-party Python projects to test with 3.14 during the beta phase and report issues found to the Python bug tracker as soon as possible. While the release is planned to be feature-complete entering the beta phase, it is possible that features may be modified or, in rare cases, deleted up until the start of the release candidate phase (Tuesday 2025-07-22). Our goal is to have no ABI changes after beta 4 and as few code changes as possible after the first release candidate. To achieve that, it will be extremely important to get as much exposure for 3.14 as possible during the beta phase.

Please keep in mind that this is a preview release and its use is not recommended for production environments.

Major new features of the 3.14 series, compared to 3.13

Some of the major new features and changes in Python 3.14 are:

New features

  • PEP 649: The evaluation of type annotations is now deferred, improving the semantics of using annotations.
  • PEP 750: Template string literals (t-strings) for custom string processing, using the familiar syntax of f-strings.
  • PEP 784: A new module compression.zstd providing support for the Zstandard compression algorithm.
  • PEP 758: except and except* expressions may now omit the brackets.
  • Syntax highlighting in PyREPL, and support for color in unittest, argparse, json and calendar CLIs.
  • PEP 768: A zero-overhead external debugger interface for CPython.
  • UUID versions 6-8 are now supported by the uuid module, and generation of versions 3-5 and 8 are up to 40% faster.
  • PEP 765: Disallow return/break/continue that exit a finally block.
  • PEP 741: An improved C API for configuring Python.
  • A new type of interpreter. For certain newer compilers, this interpreter provides significantly better performance. Opt-in for now, requires building from source.
  • Improved error messages.
  • Builtin implementation of HMAC with formally verified code from the HACL* project.

(Hey, fellow core developer, if a feature you find important is missing from this list, let Hugo know.)

For more details on the changes to Python 3.14, see What’s new in Python 3.14. The next pre-release of Python 3.14 will be 3.14.0b2, scheduled for 2025-05-27.

Build changes

  • PEP 761: Python 3.14 and onwards no longer provides PGP signatures for release artifacts. Instead, Sigstore is recommended for verifiers.
  • Official macOS and Windows release binaries include an experimental JIT compiler.

Incompatible changes, removals and new deprecations

Python install manager

The installer we offer for Windows is being replaced by our new install manager, which can be installed from the Windows Store or our FTP page. See our documentation for more information. The JSON file available for download contains the list of all the installable packages available as part of this release, including file URLs and hashes, but is not required to install the latest release. The traditional installer will remain available throughout the 3.14 and 3.15 releases.

More resources

Note

During the release process, we discovered a test that only failed when run sequentially and only when run after a certain number of other tests. This appears to be a problem with the test itself, and we will make it more robust for beta 2. For details, see python/cpython#133532.

And now for something completely different

The mathematical constant pi is represented by the Greek letter Ļ€ and represents the ratio of a circle’s circumference to its diameter. The first person to use Ļ€ as a symbol for this ratio was Welsh self-taught mathematician William Jones in 1706. He was a farmer’s son born in Llanfihangel Tre’r Beirdd on Angelsy (Ynys MĆ“n) in 1675 and only received a basic education at a local charity school. However, the owner of his parents’ farm noticed his mathematical ability and arranged for him to move to London to work in a bank.

By age 20, he served at sea in the Royal Navy, teaching sailors mathematics and helping with the ship’s navigation. On return to London seven years later, he became a maths teacher in coffee houses and a private tutor. In 1706, Jones published Synopsis Palmariorum Matheseos which used the symbol Ļ€ for the ratio of a circle’s circumference to diameter (hunt for it on pages 243 and 263 or here). Jones was also the first person to realise Ļ€ is an irrational number, meaning it can be written as decimal number that goes on forever, but cannot be written as a fraction of two integers.

But why Ļ€? It’s thought Jones used the Greek letter Ļ€ because it’s the first letter in perimetron or perimeter. Jones was the first to use Ļ€ as our familiar ratio but wasn’t the first to use it in as part of the ratio. William Oughtred, in his 1631 Clavis Mathematicae (The Key of Mathematics), used Ļ€/Ī“ to represent what we now call pi. His Ļ€ was the circumference, not the ratio of circumference to diameter. James Gregory, in his 1668 Geometriae Pars Universalis (The Universal Part of Geometry) used Ļ€/ρ instead, where ρ is the radius, making the ratio 6.28… or Ļ„. After Jones, Leonhard Euler had used Ļ€ for 6.28…, and also p for 3.14…, before settling on and popularising Ļ€ for the famous ratio.

Enjoy the new release

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 organisation contributions to the Python Software Foundation.

Regards from Helsinki as the leaves begin to appear on the trees,

Your release team,
Hugo van Kemenade @hugovk
Ned Deily @nad
Steve Dower @steve.dower
Łukasz Langa @ambv

32 Likes

It’s mentioned in the notes above, but Windows users can also download the current release of the Python install manager from python.org or from the Windows Store (the latter won’t have the latest update for a few hours, but can still install 3.14.0b1 if you py install --update 3.14 after it installs a7).

All feedback welcome and encouraged! We want this to be a smooth experience, so while the first few people to try it out may have a rough time (sorry!), your feedback is absolutely critical. Installers need to be tested at scale - controlled environments never show up all the actual issues that occur. Bugs, issues, or questions can come to https://github.com/python/pymanager


Edited to add: all runtimes back to ~3.5 can be installed already, and 3.11 onwards are ā€œcompleteā€ installs. And existing installs will be detected, but can’t be managed/updated/etc.

8 Likes

CI images are ready.

1 Like

Is it deliberate that getting the new manager from python.org requires knowing the secret link you posted above? I intend to try it, but I’m a little put off by the fact that it’s not shown on the download page.

Also, how do the Store download and the python.org download interact? Specifically, if I grab the version from the store, can I then upgrade it from python.org if (as seems likely) updates appear there before getting to the store?

1 Like

Just because we’re a little slower updating the web site than the FTP page. Some of those updates are done, but I’m (pessimistically) expecting we’ll roll them back as soon as we test it. So the FTP page for now.

I believe so, but at worst, you’ll have to uninstall one to install the other. Installed runtimes are not affected by this (though you lose the py command while it’s uninstalled).

Also, the updates will be ~1 day apart, and hopefully there won’t ever be any urgent need to update in order to maintain functionality. These are not tied to Python releases at all, it just happens to be a convenient time to do releases (since the old installer has started warning people that it’s deprecated).

Cool, thanks. One other question - do both versions auto-update? And if so, do they update from a common location, or do they update from the source you got the original from?

I know this is likely irrelevant - call me an obsessive early adopter if you must :slightly_smiling_face:

1 Like

I’m 99% sure they’ll only update from the same source it was obtained from, but I’ve seen one reference suggesting that a Store install can auto update from python.org (it knows the URL to find updates, so it’s theoretically possible, but the way the installs work it strikes me as probably more work than it’s worth). The python.org install (also known as ā€œthe sideloaded MSIXā€) won’t switch to the Store install.

It just seems like you want to know how it works so you can help maintain it, and I’m okay with that! :upside_down_face:

2 Likes

Where is that JSON file? I don’t see a link to it.

WASI build at Release CPython 3.14.0b1 w/ WASI SDK 24 Ā· brettcannon/cpython-wasi-build Ā· GitHub .

ā€œBelowā€ is meant for the https://www.python.org/downloads/release/python-3140b1/ page so I’ll update it, but I don’t see the JSON file there, let’s ask @steve.dower.

Hugo has updated it to be a direct link, and I’m updating the release scripts to upload it automatically in future.

FTR, it’s at https://www.python.org/ftp/python/3.14.0/windows-3.14.0b1.json, and while it’s semi-human readable, it’s also usable as py install --source <that URL> 3 if you really want to only install that exact version (though the default feed will work just as well).

Mainly it’s there so we can release something that can be used to check all the packages, rather than adding all 12 new entries to the download list, none of which should be used directly.

1 Like

33 posts were split to a new topic: Feedback on beta of new Windows pymanager

In case anyone’s curious, I checked this and you do, in fact, have to uninstall the other variant first:

Just something to be aware of :smile:


For anyone interested, from what I can tell, there are some scenarios where you could end up with both being installed side-by-side, but they are edge cases:

  • 2 separate Windows users installing the install manager from different sources
    • This is ā€œside-by-sideā€ because technically they are both put in a common location for the entire machine, but one user doesn’t actually have both installed in this case
  • The advanced scenario of installing MSIX for all users through Add-AppxProvisionedPackage
    • This makes Windows provision the package such that any user logging into the system will have the MSIX installed but, if they already had a different variant installed, it won’t be removed
    • This seems like Windows wanting to provision the MSIX as requested through administrator configuration, but also not breaking whatever any user already has installed. While both variants are installed, neither can be updated. As soon as either of the variants is uninstalled, it cannot be installed again. Users by default have the power to uninstall whatever is provisioned by the administrator, so they can uninstall the system-provisioned package unless a separate policy to disallow this was set for that package.
1 Like

Unfortunately, one of those edge cases is something the Visual Studio team was considering using, so I might dig a bit further and see if I can figure this out.

Thanks for finding these cases!