Emma Smith und Kirill Podoprigora, zwei der Hauptentwickler von Python, haben einen vorläufigen Vorschlag (Pre-PEP) zur schrittweisen Integration der Programmiersprache Rust in den Code von CPython, der Referenzimplementierung von Python, veröffentlicht. Zunächst wird vorgeschlagen, Rust für optionale Module der Standardbibliothek zu verwenden, die im Verzeichnis Modules/ abgelegt werden. Langfristig könnte Rust bis zur Version Python 3.17 eine verpflichtende Abhängigkeit beim Bau von CPython werden.
Die Hauptgründe für die Einführung von Rust sind die Gewährleistung einer sicheren Speicherverwaltung, die Vermeidung von use-after-free-Fehlern und Buffer-Overflow-Problemen sowie die Vereinfachung der Entwicklung von thread-sicherem Code, was besonders relevant ist im Hinblick auf die offizielle Unterstützung der CPython-Bauweise ohne den Global Interpreter Lock (GIL), um Operationen auf Mehrkernsystemen zu parallelisieren (Projekt free-threaded Python). Rust bietet zudem hochentwickelte, aber leistungsfähige Datenstrukturen und ein umfassendes Metaprogrammierungssystem, einschließlich hygienischer Makros.
Implementierungsplan:
- Python 3.15 (Jahr 2026): Warnung bei fehlendem Rust in der Build-Umgebung.
- Python 3.16 (Jahr 2027): Ein Build ohne Rust ist nur mit dem Flag „—with-rust=no“ möglich.
- Python 3.17 (Jahr 2028): Rust könnte beim Bauen obligatorisch werden.
Für die Interaktion mit der C-API von CPython wird empfohlen, automatisch generierte Bindings über bindgen zu verwenden und nicht auf externe Abstraktionen wie PyO3 zurückzugreifen, um Verzögerungen beim API-Update zu vermeiden. Fragen zur Verwaltung von Abhängigkeiten, Cross-Compilation und Unterstützung seltener Plattformen sind momentan in der Diskussion.
Im veröffentlichten Vorschlag wird betont, dass alle Plattformen aus dem Dokument PEP 11 Rust mindestens auf Tier-2-Niveau unterstützen. Einige veraltete oder Nischen-Systeme (wie HPPA und RISC OS) werden nicht unterstützt, jedoch wird ihr Anteil im Python-Ökosystem als unerheblich angesehen.
Quelle: opennet.ru
