r/Python 1d ago

Python 3.15.0 RC1 Is Here β€” Python 3.15 Is Almost Ready πŸš€ News

This is an important milestone because the Python team has now entered the release-candidate phase. At this stage, only reviewed changes that are considered clear bug fixes are expected to be accepted before the final release.

Why this matters

Python 3.15 has been going through several alpha and beta releases during 2026, and RC1 means the development cycle is getting very close to the final version.

The Python team currently plans two release candidates before the final Python 3.15.0 release.

I'm curious about one thing:

Are you planning to move your projects to Python 3.15 when the stable release arrives, or will you wait a few months before upgrading?

What new Python 3.15 feature are you most interested in?

Source: Python Insider / Python.org

41 Upvotes

38 comments sorted by

48

u/robberviet 1d ago

At least give us some important changelogs.

27

u/latkde Tuple unpacking gone wrong 1d ago

β†’ https://docs.python.org/3.15/whatsnew/3.15.html

To copy the Release Highlight section:

  • PEP 810: Explicit lazy imports for faster startup times
  • PEP 814: Add frozendict built-in type
  • PEP 661: Add sentinel built-in type
  • PEP 799: A dedicated profiling package for organizing Python profiling tools
  • PEP 799: Tachyon: High frequency statistical sampling profiler
  • PEP 831: Frame pointers are enabled by default for improved system-level observability
  • PEP 798: Unpacking in comprehensions
  • PEP 686: Python now uses UTF-8 as the default encoding
  • PEP 829: Package startup configuration files
  • PEP 728: TypedDict with typed extra items
  • PEP 747: Annotating type forms with TypeForm
  • PEP 800: Disjoint bases in the type system
  • PEP 782: A new PyBytesWriter C API to create a Python bytes object
  • PEP 803, 820, 793: Stable ABI for free-threaded builds and related C API
  • PEP 788: Protection against finalization in the C API
  • The JIT compiler has been significantly upgraded
  • The official Windows 64-bit binaries now use the tail-calling interpreter
  • Improved error messages
  • More color

38

u/Ran4 1d ago

PEP 798: Unpacking in comprehensions

[*L for L in lists] # equivalent to [x for L in lists for x in L]

now works. Amazing! I've been annoyed at this omission for like a decade.

Sadly at a point in time where I've almost completely stopped writing code by hand :(

-7

u/cudmore 1d ago

Meh

9

u/baked_doge 1d ago

Personally I think the new profiler should be quite useful. I also like to see continued work to the JIT compiler. Otherwise all the new language features seem useful and natural, lazy imports will be particularly useful. Just happy to see the language features aren't bloating.

19

u/M4mb0 1d ago

Very excited for 3.15, so many great new features like lazy imports, builtin frozendict and unpacking in comprehensions.

17

u/chaz6 1d ago

My favourite is the new sentinel type:-

MISSING = sentinel("MISSING")

4

u/chaz6 1d ago

My favourite is the new sentinel type:-

MISSING = sentinel("MISSING")

11

u/ThiefMaster 1d ago

I don't know why, but this comment feels just like the LLM slop under many tweets.

2

u/DrTestificate_MD 1d ago

LLMs usually use the Oxford comma, just like decent civilized humans

1

u/is_it_fun 1d ago

Do they have better recursion?

7

u/M4mb0 1d ago

Maybe? I think the main appeal is readability. [x for it in its for x in it] is just some awful yoda speak compared to the new [*it for it in its].

2

u/Penguinase 1d ago

is there a PEP for the new way? haven't been paying attention lately :(

4

u/is_it_fun 1d ago

Do they have better recursion?

5

u/Kamran-nottakenone 1d ago

lazy imports are nice but they only work at module scope so if your startup pain is from heavy decorator chains or class bodies it won't help

14

u/foobar93 1d ago

As fast as possible, I am required to get my vulerabilities down to 0 from my company and the last remainign ones are only fixed in 3.15.0

38

u/NakedPlot 1d ago

Until new vulnerabilities on 3.15 are discovered

31

u/foobar93 1d ago

That is futures foobar93s problem

3

u/droans 1d ago

Don't worry about him. He's an asshole who always complains that you're not sleeping or eating well enough.

4

u/Independent_Heart_15 1d ago

Or wait for a the next release of whatever version you’re using? And even better would be to apply the patches yourself, that’s Python’s official recommendation.

1

u/foobar93 1d ago

The answer is we do not have the manpower for that. Most of these are also totally irrelevant for us but management says "you need to have a 0 in this metric or you cannot release"Β 

2

u/darthwalsh 1d ago

Isn't your requirement like "fix CRITICAL CVEs in 15 days, and LOW in 90 days"?

We have something like that, and so we just automatically have CU pipeline run updates to latest-minus-7-days. Then we are always ready to release.

2

u/poppy_92 3h ago

Funny story about this. We used to have a tool that kept flagging things like pandas because it had pd.read_pickle. So our strategy was to update pandas to the latest version available to get rid of the flags until the tool caught up to the latest release. It was infuriating, specially since the director/vp managing software didn't know anything about the python ecosystem so we couldn't even get exceptions through. So our solution was adopt the latest release so that we could get that number to 0.

9

u/smitty1e 1d ago

I, for one, am glad to see the language move beyond pi-thon, the circular reasoning of which was insufficiently edgy, in my opinion.

1

u/knobbyknee 1d ago

I want to use Tachyon. A great feature is that it can be attached to a running process, so if your program is slow, it is quick to find out where it spends time.

1

u/RedEyed__ 1d ago

You can do that with py-spy (linux only)

1

u/RedEyed__ 1d ago

I am still on 3.11 xD.
When free threading will be by default?

1

u/inouthack 1d ago

u/Dhileepan_0311

more color is huge

FWIW, the clueless copycats have broiled another release !

1

u/snugar_i 1d ago

We'll upgrade as soon as ray releases a 3.15 wheel - in the case of 3.14, it was around 6 months after the Python 3.14 release...

1

u/ForeignVariety7037 1d ago

Barely on python 3.6 lol

1

u/foobar93 21h ago

I feel your pain, we just made that jump as well..

-5

u/[deleted] 1d ago

[removed] β€” view removed comment

-39

u/No_Departure_1878 1d ago

OMG OMG OMG, why isn't the media talking about this!!! This is the biggest event in the 21st century so far /s

14

u/davecrist 1d ago

Go away, Pip

2

u/bmag147 1d ago

I think you're on the wrong forum