What's New in Python 3.15
Key topics
The Python community is buzzing about the latest updates in Python 3.15, with PEP 686 making UTF-8 mode default and sparking excitement among developers. As commenters dig into the new features, some are thrilled about the potential for improved performance with the JIT, while others poke fun at the idea of Python replacing Lisp, citing its lack of s-expressions and macros. Meanwhile, others are praising the new default UTF-8 encoding, noting it's a common issue they've encountered in code reviews. The discussion is lively, with some good-natured jabs at Python's limitations and others highlighting its strengths, like reflection and metaclasses.
Snapshot generated from the HN discussion
Discussion Activity
Very active discussionFirst comment
53m
Peak period
50
84-96h
Avg / period
8.6
Based on 60 loaded comments
Key moments
- 01Story posted
Dec 17, 2025 at 2:52 PM EST
24 days ago
Step 01 - 02First comment
Dec 17, 2025 at 3:45 PM EST
53m after posting
Step 02 - 03Peak activity
50 comments in 84-96h
Hottest window of the conversation
Step 03 - 04Latest activity
Dec 23, 2025 at 8:13 AM EST
18 days ago
Step 04
Generating AI Summary...
Analyzing up to 500 comments to identify key contributors and discussion patterns
Want the full context?
Jump to the original sources
Read the primary article or dive into the live Hacker News thread when you're ready.
https://peps.python.org/pep-0686/
-- https://www.norvig.com/python-lisp.html
Meanwhile Ruby has had MacRuby from Apple, later canceled, but the main developers went out creating RubyMotion.
Sun toyed with JRuby, it was even officially supported on Netbeans, then Red-Hat supported the project for a while. It was also one of the first dynamic languages on GraalVM, with TruffleRuby. GraalPy effort only came a couple of years later, and is still on baby steps.
As of 2025, the refernce implementation counts with YJIT, MJIT, TenderJIT, and MRuby 4 brings ZJIT to the party.
Exchanging Lisp for Python we went backwards in regards to performance in dynamic languages, in a distopian world where C, C++, Fortran libraries are "Python" libraries.
...Right.
Now the lack of machine code generation, and having to fall back on C, C++ and Fortran is bonkers.
There are the IDE integrations as well.
Pity is the lack of (compile ...) and (decompile ....), or similar.
Which by the way is available in Julia.
Parantheses in Lisp are visible, whitespaces in Python, not really.
Nice, not specifying the encoding is one of the most common issues I need to point out in code reviews.
[0] -- https://docs.python.org/3.15/whatsnew/3.15.html#improved-err...
On the other hand it's not like Python really cares about performance....
[heavy green check mark]
[red x] The latter form also has the genuine disadvantage that nothing ensures the two keys are the same. I've seen typos there somewhat often in code reviews.https://realpython.com/python-lbyl-vs-eafp/#errors-and-excep...
In Python, the VM raises a KeyboardInterrupt exception when the user hits ctrl+c in order to unwind the stack, run cleanup code and eventually exit the program.
Python is a quite heavy user of exceptions for control flow.
I really dislike this too, but that’s how it is.
Search is limited to 20 attributes and non-descriptors only to avoid arbitrary code execution.
I assume constructing AttributeErrors isn't highly performance sensitive.
Seems to have died the same death as Unladen Swallow, Pyston, etc:
https://discuss.python.org/t/community-stewardship-of-faster...
3.15 has some JIT upgrades that are in-progress. This has a non-exhaustive list of them https://docs.python.org/dev/whatsnew/3.15.html#upgraded-jit-...
Sigh. Why can't they just be the same in virtual environments.