Was ist neu in Python 3.15? Vom Textadventure über FrozenDict bis zu Djangos CalVer
Hosts and Guests
Nach längerer Pause melden sich Jochen, Dominik und Johannes zurück. Weil noch einige Aufnahmen unveröffentlicht sind, wissen sie selbst nicht genau, die wievielte Folge das eigentlich ist. Vielleicht wird es Zeit für Kalender-Versionierung? Anlass der Folge ist das frisch erschienene Python 3.15, dessen Neuerungen ausführlich besprochen werden.
Die Neuerungen in Python 3.15
- „What's New“ als Textadventure: per uvx startbar, mit Textual gebaut und inklusive Karte. Dazu ein Exkurs zu NetHack, Zork und dem goldenen Zeitalter der Textadventures.
- Sentinel-Werte (PEP 661): ein eingebautes, benennbares und typprüfbares Sentinel für Fälle, in denen
Noneein gültiger Wert ist. - Tachyon: ein statistischer Sampling-Profiler in der Standardbibliothek, der sich ohne Code-Änderungen an laufende Prozesse wie Django oder Celery hängen kann.
- UTF-8 als Default-Encoding beim Lesen von Dateien, und warum alle dachten, das sei längst so.
- Unpacking in Comprehensions mit dem Stern-Operator: kürzer, aber auch lesbarer?
- Lazy Imports für große Codebasen und langsam ladende Bibliotheken wie NumPy oder Pandas.
- FrozenDict: endlich ein eingebautes, unveränderliches Dictionary, mehr als zwölf Jahre nach dem ersten Vorschlag von Victor Stinner.
- .pth-Dateien: Entry-Point-Angaben statt Import-Zeilen, vermutlich als Antwort auf Supply-Chain-Angriffe.
- Experimenteller JIT-Compiler mit etwa 7–8 % mehr Performance auf Standard-Benchmarks.
- Bessere Fehlermeldungen (
appendstattpush) und mehr Farben. - Typing: TypedDict, Protocols und das rätselhafte TypeForm, dazu ty und Pyrefly als Alternativen zu mypy.
- Free-Threading im macOS-Installer, und warum der GIL-Vorwurf an Python überbewertet ist.
Außerdem in dieser Folge
- EVE Online migriert von Stackless Python 2 auf Python 3.
- Wie wichtig sind neue Python-Versionen noch? python-podcast.de läuft bereits auf 3.15, getestet und deployt hat das Upgrade ein Agent.
- Versionierung: Django wechselt zu Calendar Versioning. Was spricht für CalVer, was für fortlaufende Release-Nummern?
- Andere Sprachen dank KI: Jochen schreibt mit Agenten Rust und Swift, Johannes kommt beim Rust-Lernen nie über das erste Kapitel hinaus.
- Große Datenbanken und große Zahlen: 2 TB PostgreSQL, die Menge an LLM-Trainingsdaten, Busy Beaver und TREE(3).
Picks
- Johannes: interne TLS-Zertifikate mit mkcert, Easy-RSA und Smallstep step-ca
- Dominik: Trafilatura, um bereinigten Text oder JSON aus einer URL zu extrahieren
- Jochen: herdr, ein Terminal-Multiplexer für Coding-Agents, der viele parallel laufende CLI-Agents danach sortiert, ob sie gerade Input brauchen
Fragen, Feedback oder Lust auf ein Hörertreffen? Schreibt uns eine E-Mail!
Shownotes
Unsere E-Mail für Fragen, Anregungen & Kommentare: hallo@python-podcast.de
Jochen, Dominik und Johannes sind zurück und gehen die Neuerungen in Python 3.15 durch: Sentinels, der Sampling-Profiler Tachyon, FrozenDict, Lazy Imports, JIT und Free-Threading. Außerdem geht es um CalVer, Rust und Swift mit KI-Agenten und sehr große Zahlen. Zum Schluss gibt es Picks rund um interne TLS-Zertifikate.
Links
Python 3.15
- What's New in Python 3.15 - offizielle Übersicht aller Neuerungen
- uv / uvx - damit startet man das „What's New“-Textadventure
- Textual - TUI-Framework, mit dem das Textadventure gebaut ist
- PEP 661 – Sentinel Values - eingebaute, benennbare und typprüfbare Sentinels
- PEP 799 – Profiling-Paket - bringt den statistischen Profiler Tachyon in die Standardbibliothek
- PEP 686 – UTF-8 Mode als Default - Dateien werden standardmäßig als UTF-8 gelesen statt nach System-Locale
- PEP 798 – Unpacking in Comprehensions - verschachtelte Listen mit
*flach machen - PEP 810 – Explicit Lazy Imports - der echte Import passiert erst beim ersten Zugriff
- PEP 814 – frozendict - eingebautes, unveränderliches Dictionary
- PEP 416 – frozendict (2012) - Victor Stinners erster Vorschlag von vor über zwölf Jahren
- site-Modul und .pth-Dateien - der Mechanismus, den Python jetzt entschärft
- PEP 744 – JIT Compilation - Hintergrund zum experimentellen JIT
- PEP 703 – Free-Threading - Python ohne GIL
- PyPy - alternative Python-Implementierung mit JIT
Typing
- Python Typing Docs - TypedDict, Protocols & Co.
- PEP 747 – TypeForm - die „höhere Magie“, die niemand in der Runde versteht
- PEP 544 – Protocols - strukturelles Subtyping, z. B. für Django-Code
- mypy - Johannes nutzt es noch aus Gewohnheit
- ty - Type-Checker von Astral
- Pyrefly - Type-Checker von Meta
Exkurse
- NetHack - Jochens Textadventure-Referenz
- Zork - der Klassiker unter den Textadventures
- EVE Online: The Move to Python 3 Begins - läuft seit 2003 auf Stackless Python 2 und wird jetzt auf Python 3 migriert
- Stackless Python - der Python-Fork hinter EVE Online
- HexaHunt - Farben anhand ihres Hex-Codes erraten, passend zum Exkurs über Farben in Fehlermeldungen
- Celery - ein Beispiel für laufende Prozesse, an die sich Tachyon hängen kann
- NumPy und pandas - Bibliotheken mit langsamen Imports
- Python Discourse - hier entstehen die langen Diskussionen um neue Features
Versionierung
- Django - wechselt per DEP zu Calendar Versioning
- CalVer - Calendar Versioning erklärt
- SemVer - das Gegenmodell
- Ubuntu Releases - Versionsnummer = Release-Datum
Sprachen, Daten und große Zahlen
- Rust - schreibt Jochen inzwischen viel mit KI-Agenten
- The Rust Book - Johannes kommt nie über das erste Kapitel hinaus
- Swift - für native Apps im Apple-Ökosystem
- PostgreSQL - 2 TB sind noch lange nicht groß
- Fleißiger Biber (Busy Beaver) - ab BB(6) unbekannt
- bbchallenge.org - gemeinschaftliche Busy-Beaver-Forschung
- Grahams Zahl - kleiner als BB(10)
- Kruskals Baumsatz / TREE(3) - passt nicht ins Universum
Picks
- mkcert - lokale CA für die Entwicklung (Johannes)
- Easy-RSA - etwas besser verwaltbare, aber händische CA (Johannes)
- Smallstep step-ca - selbst betriebene, ACME-kompatible CA (Johannes)
- Certbot - funktioniert auch mit step-ca
- Let's Encrypt - reicht nicht bis in die interne Infrastruktur
- Trafilatura (Pick von Dominik) - extrahiert bereinigten Text oder JSON aus einer URL
- herdr (Pick von Jochen) - Terminal-Multiplexer für viele parallel laufende CLI-Coding-Agents
- tmux und Zellij - die Vergleichsgrößen dazu
Themen
- Begrüßung nach langer Pause: Ist das Folge 70, 71 oder 72?
- Python 3.15: Textadventure, Sentinels, Tachyon, UTF-8, Unpacking, Lazy Imports, FrozenDict, .pth-Dateien, JIT, Fehlermeldungen, Typing, Free-Threading
- Wie wichtig sind neue Python-Versionen noch?
- CalVer vs. fortlaufende Release-Nummern
- Rust und Swift dank KI-Agenten
- Große Datenbanken und große Zahlen
- Picks und Abschluss