Python Weekly #7: PEP 852 schlägt native C-Koroutinen vor, Mimalloc-Fix senkt Peak-RSS um 95 %, print() beschleunigt Durchsatz um bis zu 66 %

Python · Weekly #7

Python Weekly #7: PEP 852 schlägt native C-Koroutinen vor, Mimalloc-Fix senkt Peak-RSS um 95 %, print() beschleunigt Durchsatz um bis zu 66 %

PythonWochenausgabeAsynchrone ProgrammierungPerformance-Optimierung

Quellen:GitHub Releases + 官方博客 + HN

Willkommen zur 7. Ausgabe der Python-Kolumne im Tuanzi Tech Digest. In dieser Woche (02.11.2026 bis 09.11.2026) befindet sich das offizielle Python-Projekt nach den jüngsten Sicherheits-Releases in einer stabilen Betriebsphase. Währenddessen schlägt PEP 852 eine native asynchrone Koroutinen-Suite für die C-API vor; der CPython-Hauptzweig integrierte zahlreiche Optimierungen, darunter Zeichen-Caching für print(), eine Korrektur verzögerter mimalloc-Freigaben im Free-Threaded-Modus, eine Freelist für Traceback-Objekte sowie eine 64-Bit-Übertragsüberarbeitung bei der Division großer Zahlen; in der Community entbrannten tiefgehende Debatten über die Syntaxerweiterungen in PEP 823 / 824 und den integrierten Sampling-Profiler Tachyon. Hier ist unsere Übersicht der verifizierten technischen Fakten der vergangenen sieben Tage.

📦 Release-Updates

Status der stabilen Versionen und Sicherheits-Retrospektive der PSF

Die aktuelle offizielle stabile Hauptversion ist Python 3.15.2 (offizielles Veröffentlichungsdatum: 25. Okt. 2026, signiert von Release Manager Hugo van Kemenade). Die vorherige stabile Wartungsversion ist Python 3.14.10 (Veröffentlichungsdatum ebenfalls 25. Okt. 2026). Ein Abgleich der offiziellen Release-Seiten zeigt, dass in den vergangenen sieben Tagen keine neuen Wartungs-Patches erschienen sind. Zur architektonischen Entwicklung des 3.15-Hauptzweigs verweisen wir auf unseren Leitartikel: Python 3.15 im Detail; zur Vorgängerversion siehe Python 3.14 im Detail.

Am 5. November veröffentlichte die Python Software Foundation (PSF) im offiziellen Blog den Incident-Bericht How the Python ecosystem responded to the eMudhra intermediate compromise. Der Bericht dokumentiert die Koordinationsabläufe und technischen Schutzmaßnahmen des Sicherheitsteams bei der Abwehr kompromittierter CA-Zertifikate:

  1. Reaktionszeit und Ökosystem-Koordination: PSF-Sicherheitsentwickler Seth Larson koordinierte innerhalb von 48 Stunden Patches für certifi, CPython, pip, uv, sigstore, virtualenv, conda, pixi, manylinux und gh-action-pypi-publish, flankiert vom Neubau sämtlicher Basis-Container-Images der PyPI-Infrastruktur und der Build-Cluster.
  2. Mehrstufiges Zertifikatssperrmodell: Neben dem Hardcoding von SPKI-Hash-Sperrlisten direkt im C-Modul _ssl von fünf aktiven Wartungszweigen (inklusive Python 3.15.2 und 3.14.10) aktualisierte die Toolchain der Anwendungsebene das certifi-Paket für eine doppelte Isolation. So bleibt das System selbst dann vor Man-in-the-Middle-Angriffen geschützt, wenn die Zertifikatsspeicher des Host-Betriebssystems ungepatcht sind.

Übersicht der aktiv gepflegten offiziellen Zweige:

VersionszweigOffizielles VeröffentlichungsdatumZweigkategorie und BereitstellungStatus und technische Eckdaten
Python 3.15.225. Okt. 2026Aktuelle stabile Hauptversion (Bugfix, Binärpakete)Integrierte _ssl-SPKI-Sperre, stabiler Betrieb, keine offenen Release-Blocker
Python 3.14.1025. Okt. 2026Vorheriger stabiler Zweig (Bugfix, Binärpakete)Synchronisierte Zertifikatssperrliste, garantiert Abwärtskompatibilität und Stabilität
Python 3.13.1825. Okt. 2026Sicherheits-Support (Nur Quelltext)Portiert ausschließlich kritische CVE-Patches und Sperren der Zwischenzertifikate
Python 3.12.1625. Okt. 2026Sicherheits-Support (Nur Quelltext)Beseitigt Übertragungsrisiken durch veraltete Zertifikatsspeicher des Betriebssystems
Python 3.11.1825. Okt. 2026Sicherheits-Support (Nur Quelltext)Sichert die grundlegende Netzwerkschicht in bestehenden Legacy-Umgebungen ab

📝 Tiefgang

PEP 852 schlägt native asynchrone Koroutinen-Suite für C-API vor (PR #5217)

  • Was passiert ist: Am 2. November reichte CPython-Core-Entwickler Peter Bierma den Entwurf für PEP 852 ein. Der Vorschlag sieht vor, in Python 3.16 unter Python.h ein dediziertes asynchrones Toolkit namens PyAsync mit nativen Funktionen wie PyAsync_New, PyAsync_AddAwait, PyAsync_SetResult und PyAsync_Cancel einzuführen.
  • Warum es wichtig ist: CPython fehlte auf Ebene der C-Schnittstelle bisher ein standardisierter Mechanismus zum Definieren und Steuern von Koroutinen. Wollten Entwickler nativer C-Erweiterungen asynchrone Logik umsetzen, mussten sie entweder Python-Wrapper-Funktionen nutzen oder vollständige Generator-Zustandsautomaten von Hand konstruieren (dies war auch der Hauptgrund, warum der mypyc-Compiler async-Syntax lange Zeit nicht vollständig unterstützen konnte). PEP 852 kapselt den Koroutinen-Lebenszyklus in opaken PyAsync-Objekten, sodass native Erweiterungen Callbacks direkt an den Event-Loop übergeben können, ohne komplexe Zustandsautomaten manuell verwalten zu müssen.
  • Wer betroffen ist: Maintainer nativer C/C++-Erweiterungen, Python-Compiler-Projekte (wie mypyc, Cython und PyO3) sowie Entwickler hochperformanter asynchroner Netzwerkbibliotheken.

CPython-Master überarbeitet print(): Methoden-Bindung und Zeichen-Caching beschleunigen Ausführung um 20 % bis 66 % (gh-160725 / PR #160727)

  • Was passiert ist: Am 8. November wurde PR #160727 in den CPython-Hauptzweig gemergt. Bisher suchte und instanziierte print() für jedes Positionsargument, Trennzeichen und Zeilenende wiederholt das gebundene Methodenobjekt file.write. Zudem wurden Standardtrennzeichen sep=" " und end="\n" über PyFile_WriteString() ausgegeben, was bei jedem Aufruf strlen() und UTF-8-Prüfungen auslöste. Die Neuentwicklung bindet die Methode write nur noch einmal pro Aufruf und übergibt die vom Interpreter gecachten Einzelzeichen-Strings direkt.
  • Warum es wichtig ist: pyperf-Benchmarks belegen eine geometrisch gemittelte Beschleunigung von 1,20x über Standard-Aufrufe hinweg. Bei mehreren Argumenten ist der Gewinn besonders hoch: print('a', 1, 2.5) reduzierte die Ausführungszeit von 996 ns auf 687 ns (1,45x schneller, 31 % weniger CPU-Instruktionen); print(*range(10)) sank von 2,86 µs auf 1,73 µs (1,66x schneller, 39 % weniger CPU-Instruktionen); gewöhnliche Einzelargument-Aufrufe verbesserten sich um den Faktor 1,25x bis 1,31x.
  • Wer betroffen ist: Batch-Verarbeitungen, CLI-Tools und Skripte mit intensivem Logging auf die Standardausgabe.

Korrektur verzögerter mimalloc-Freigaben im Free-Threaded-Modus: Peak-RSS sinkt um über 95 % (gh-161420 / PR #161533)

  • Was passiert ist: Am 7. November wurde PR #161533 in den CPython-Hauptzweig gemergt. Nach dem Update auf mimalloc 2.5.2 war die interne Funktion _mi_malloc_generic() so abgeändert worden, dass thread-übergreifende verzögerte Freigaben (delayed frees) nur noch alle 100 Allokationen abgearbeitet wurden. Dadurch stauten sich Freigabeblöcke von über 64 KiB auf den Heaps anderer Threads an. Dieser PR stellt das sofortige Verarbeiten verzögerter Freigaben bei jeder Allokation wieder her.
  • Warum es wichtig ist: In GIL-freien (free-threaded) Multi-Thread-Szenarien brach der maximale Speicherverbrauch (Peak RSS) unter Linux von 9.500–11.000 MiB auf 420–540 MiB ein. Unter macOS fiel der Peak-Speicher von 5.900–8.000 MiB auf 410–500 MiB und unter Windows von 8.000–8.200 MiB auf 430–450 MiB. Der Fix beseitigt eine drastische künstliche Speicheraufblähung bei nebenläufiger Ausführung ohne GIL.
  • Wer betroffen ist: Systemingenieure, die Free-Threaded Python 3.15+ für datenintensive Multi-Thread-Dienste evaluieren oder in Produktion einsetzen.

Traceback-Freelist und 64-Bit-Übertragsüberarbeitung bei Division großer Zahlen (gh-161242 / gh-160872)

  • Was passiert ist: Der CPython-Hauptzweig hat zwei fundamentale Optimierungen auf Datenebene abgeschlossen: PR #161243 führt eine dedizierte Freelist für traceback-Objekte von Ausnahmestacks ein; PR #161156 stellt die interne Entlehnungsvariable zhi in der Schleife des Knuth-Algorithmus D auf 64-Bit-stwodigits um und eliminiert überflüssige Typkonvertierungen von 32 auf 64 Bit.
  • Warum es wichtig ist: Der Overhead bei der Allokation von Exceptions sinkt merklich: Der Benchmark für raise ValueError beschleunigt sich um den Faktor 1,09x (von 454 ns auf 418 ns), und typische Duck-Typing-Prüfungen sowie Dictionary-Lookups in realen Bibliotheken gewinnen 2 % bis 6 % an Tempo. Die Division großer Zahlen erzielte auf AArch64 (NVIDIA Grace / Neoverse V) eine geometrisch gemittelte Beschleunigung von 1,42x (wobei div 500/70 um 2,23x zulegte) und unter x86_64 von 1,21x.
  • Wer betroffen ist: Entwickler wissenschaftlicher Berechnungen, Kryptographie-Bibliotheken und Datenverarbeitungssysteme mit defensiver Ausnahmebehandlung.

🔥 Community-Diskussionen

PEP 823 und 824 dem Steering Council vorgelegt: Ausdruckskraft versus Parser-Komplexität (Discourse 117+ / 74+ Kommentare)

Die von Marc Mueller verfassten und von Guido van Rossum unterstützten Initiativen PEP 823 (None-sichere Zugriffsoperatoren ?., ?[]) und PEP 824 (None-Coalescing-Operatoren ??, ??=) wurden nach Überarbeitung der Rangfolgen und Fehlermeldungen Anfang November offiziell dem Python Steering Council zur Entscheidung vorgelegt. Die entsprechenden Diskussionsstränge auf Discourse verzeichnen über 117 bzw. 74 Beiträge.

Die Kontroverse gliedert sich in drei zentrale Dimensionen:

  1. Reduzierung defensiven Codes und Codestil: Befürworter betonen, dass tief verschachtelte Dictionaries und optionale Felder bisher umständliche if-Kaskaden oder Walrus-Ausdrücke erzwingen; ?? prüfe strikt auf None und verhindere, dass or gültige Falsy-Werte wie 0, "" oder False versehentlich überschreibt. Kritiker warnen hingegen davor, dass verkettete Zugriffsoperatoren unsaubere Datenmodellierung fördern und Pythons Prinzip expliziten Designs verwässern.
  2. Kollisionen mit interaktiven Terminals: Shells wie IPython nutzen nachgestellte Fragezeichen (? und ??) seit langem zur Anzeige von Dokumentation und Quelltext. Die Einführung von ?. und ?? erfordert vom Lexer eine strikte Unterscheidung zwischen Zeilenende-Befehlen und zusammengesetzten Operatoren bei interaktiven Eingaben.
  3. Rangfolge der Operatoren: PEP 824 stuft die Priorität von ?? niedriger ein als or und and (angelehnt an C#, JS und PHP statt an Swift/Kotlin, wo der Operator zwischen binären und Vergleichsoperatoren steht). Skeptiker befürchten, dass implizites Kurzschließen unbeabsichtigte Seiteneffekte in verschachtelten Funktionsaufrufen maskieren könnte.

Integrierter Sampling-Profiler Tachyon entfacht Grundsatzdebatte: Standardbibliothek vs. spezialisierte Werkzeuge (HN 50351453 / PR #161445)

Austin-Autor Gabriele Tornetta veröffentlichte den Essay The State of Python Profiling in 2026, in dem er die Profiling-Landschaft nach der Aufnahme des integrierten Sampling-Profilers Tachyon in Python 3.15 analysiert. CPython mergte am 5. November PR #161445, um Austin, py-spy, Pyflame und weiteren Open-Source-Pionieren offiziell in Dokumentation und Release Notes zu danken.

Die Debatte über Werkzeugwahl und Laufzeitüberwachung konzentriert sich auf folgende Punkte:

  1. Out-of-the-Box-Verfügbarkeit vs. Hochfrequenz-Sampling: Tachyon integriert statistisches Sampling mit einer Standardrate von 1.000 Hz direkt in die Standardbibliothek, was nicht-invasive Messungen in Produktionsumgebungen ohne externe Abhängigkeiten ermöglicht. Für Analysen im Mikrosekundenbereich unterstützen spezialisierte Werkzeuge wie Austin jedoch bis zu 10.000 Hz, native C-Stack-Traces und vollständige asyncio-Task-Topologien.
  2. Ablösung deterministischer Traces durch Sampling: Historische Benchmarks des Scalene-Teams zeigen, dass deterministisches Tracing mit cProfile Laufzeiten um bis zu 73 % aufblähen und kurze Funktionen verzerren kann, während externe Sampling-Profiler die CPU-Last zuverlässig unter 2 % halten. Die Community sieht Sampling als Standard für Produktionsmessungen an und fordert eine engere Standardisierung mit offenen Formaten wie pprof und speedscope.

🔭 Vorschau auf nächste Woche

  1. Erste Stellungnahme des Steering Councils zu PEP 823 / 824: Das Gremium wird voraussichtlich eine erste Einschätzung zur Notwendigkeit der Syntaxerweiterungen und zur Kompatibilität mit interaktiven Entwicklerwerkzeugen abgeben.
  2. Community-Architekturprüfung für PEP 852 C-API-Koroutinen: Das Kernentwicklungsteam wird auf Discourse die Architektur des PyAsync-Zustandsautomaten und dessen Anbindung an bestehende Task-Scheduler diskutieren.