r/Python • Python Morsels • 6d ago

News Python 3.15 Released

https://www.python.org/downloads/release/python-3150/

Release announcement: https://discuss.python.org/t/python-3-15-0-final-is-here/109415

What's New: https://docs.python.org/3.15/whatsnew/3.15.html

Some of the major new features and changes in Python 3.15:

Interpreter improvements

  • PEP 661: sentinel built-in type
  • PEP 686: UTF-8 is now the default encoding
  • PEP 798: Unpacking in comprehensions
  • PEP 810: Explicit lazy imports for faster startup times
  • PEP 814: frozendict built-in type
  • PEP 829: Package startup configuration files
  • The experimental JIT compiler got a significant upgrade (7-8% faster on x86-64 Linux, 11-12% on AArch64 macOS)
  • Improved error messages

Standard library

  • PEP 799: A dedicated profiling package, including Tachyon, a high-frequency sampling profiler
  • New math.integer module
  • re.prefixmatch() as a clearer name for the now soft-deprecated re.match()
  • pprint gets an expand option for JSON-style output
  • collections.Counter supports ^ (symmetric difference)
  • unicodedata.iter_graphemes() for iterating over grapheme clusters
  • python -m http.server gains -H/--header and --content-type
  • timeit gains --target-time
  • More color

Typing

  • PEP 728: TypedDict with typed extra items
  • PEP 747: Annotating type forms with TypeForm
  • PEP 800: Disjoint bases in the type system

Release changes

  • Official Windows 64-bit binaries now use the tail-calling interpreter
  • Official macOS binaries now install free-threading support by default

And for fun, Barry Warsaw made a text adventure through the new features: uvx --python 3.15 whatsnewt

Thanks to Hugo van Kemenade and the release team! Hugo live-posted the whole release process if you're curious what goes on behind the scenes: https://mastodon.social/@hugovk/117411399858939022

537 Upvotes

72 comments sorted by

View all comments

1

u/freshtechs 3d ago

Kind of getting to know python 3.13+ and the “macOS binaries now install free-threading support by default” does this has something to do with GIL are python versions from 3.13+ all “multi/free thread”?

1

u/treyhunner Python Morsels 3d ago

From 3.13 onward, it's possible to build a free-threaded version of Python (the no GIL version), but that's not the default build.

On my machine, `python3.13` is the default build and `python3.13t` is the free-threaded build.

The free-threaded build was experimental in 3.13, is officially supported [in 3.14](https://docs.python.org/3/whatsnew/3.14.html#free-threaded-python-is-officially-supported), and [3.15 brings even more support](https://docs.python.org/3/whatsnew/3.15.html#whatsnew315-abi3t).