Cython: Fünf Jahre Entwicklungszeit für Version 3.0, mehr im Pure-Python-Modus

Das auf das Zusammenspiel von Python und C ausgelegte Cython erweitert in Version 3.0 den Pure-Python-Modus und führt jüngere Python-Features ein.

In Pocket speichern vorlesen Druckansicht
Schlange, Python, Paradies

(Bild: Michael Schwarzenberger, gemeinfrei (Creative Commons CC0))

Lesezeit: 4 Min.
Inhaltsverzeichnis

Das Warten auf die erste Hauptversion von Cython hat ein Ende: Nach fünf Jahren Entwicklungszeit ist Cython 3.0 erschienen. Die Programmiersprache bekommt im aktuellen Release einige syntaktische Neuerungen der jüngsten Python-Releases und verbessert den Pure-Mython-Modus.

Außerdem verabschiedet es sich von Python 2.6, wenn auch noch nicht endgültig von der 2er-Reihe. Die Python Software Foundation hatte den Support für Python 2.x bereits im Dezember 2019 eingestellt.

Die Verantwortlichen hatten den Sprung über die 1.0-Marke lange gescheut. Cython war erstmals 2007 erschienen und erst 2018 kündigte das Team mit dem Release von Version 0.29 an, dass im Anschluss Version 3.0 folgen werde.

Dass gleich eine 3 vor dem Punkt steht, hat zwei Gründe. Zum einen waren laut dem Team viele 0.x-Versionen bereits seinerzeit schon im produktiven Einsatz und daher als 1.x-Releases zu werten und zum anderen soll die Zahl die Anbindung an Python 3.x verdeutlichen. Während der Arbeit an Cython 3.0 sind Python 3.8 bis 3.11 erschienen.

Die wichtigsten Bugfixes und einige Features hat das Cython-Team bereits während der Entwicklung als Backport in Version 0.29.x eingearbeitet.

Cython ist kompatibel zu Python und für das Zusammenspiel mit C optimiert. Die Sprache ist zum einen darauf ausgelegt, C-Extensions für Python zu erstellen. Zum anderen soll das Übersetzen performanten Code erzeugen. Cython kompiliert den Code nicht nach Assembler, sondern transpiliert ihn nach C. Im Kern setzt es dazu auf Pyrex.

Die Cython-Sprache bietet eine spezielle Syntax, die Python-Code mit C-Typ-Deklarationen vermischt. Sie bietet statische Typisierung für die nahtlose Interaktion mit C-Funktionen und kann mit C++-Klassen zusammenarbeiten.

Dabei versteht Cython sich als Superset von Python: Fast jeder Python-Code ist valider Cython-Code. Um die jüngsten Python-Features nutzen zu können, bietet Cython den Pure-Python-Modus. Der damit erstellte Sourcecode lässt sich auch im Python-Interpreter ausführen. Er bietet weniger Zusatzfunktionen, aber einige grundlegende Ergänzungen wie statische Typisierung.

Version 3.0 erweitert den Pure-Python-Modus deutlich, sodass es laut dem Changelog nun möglich sei, alle Cython-Features in regulärer Python-Syntax zu verwenden.

Außerdem setzt Cython 3.0 einige Python Enhancement Proposals (PEP) der letzten Jahre um. Dazu gehören die in Python 3.8 eingeführten Assignment Expressions (PEP 572), um Python-Ausdrücke über NAME := expr einer Variable zuzuweisen. In demselben Python-Release kamen die Positional-only Parameters (PEP 570), bei denen die Position die Zuweisung an die Parameter bestimmt und keine namentliche Festlegung erlaubt ist.

Daneben halten auch ältere Python-Features Einzug, die Cython bisher nicht kannte. So dürfen Identifier wie Klassen- oder Funktionsnamen neuerdings Nicht-ASCII-Zeichen verwenden, was Python bereits seit Version 3.0 erlaubt (PEP 3131).

Cython 3.0 setzt standardmäßig auf Python-3-Syntax, bietet aber die Einstellung language_level=2 für Legacy-Code in Python 2.

Weitere Informationen zu Cython 3.0 unter anderem zum Zusammenspiel mit NumPy lassen sich dem Changelog entnehmen. Ein Leitfaden hilft bei der Migration von Cython 0.29 auf das aktuelle Release.

(rme)