Compiler: Cython 0.28 bietet langerwartete neue Features

Der Compiler Cython (für Python und dessen C-Erweiterung Cython) steht aktuell in der Version 0.28 zur Verfügung. Zu den neuen Features zählen unter anderem die von den Nutzern lang erwarteten Read-Only Memory Views.

In Pocket speichern vorlesen Druckansicht 3 Kommentare lesen
Bringt langerwartete neue Features: Cython 0.28
Lesezeit: 3 Min.
Von
  • Frank-Michael Schlede

In einem aktuellen Blogeintrag hat Cython Core Developer Stefan Behnel die Verfügbarkeit der Version 0.28 des Cython-Compilers bekanntgegeben. Der Entwickler bezeichnet diese neue Version als einen großen Schritt in der Entwicklung dieses Compilers.

Neben neuen Features und Verbesserungen beziehungsweise Optimierungen haben die Macher hinter dem Compiler für Python und dessen C-Erweiterung Cython unter anderem die Integration aktueller Python-Features (einschließlich die der kommenden Version 3.7) verbessert. Die Integration mit dem Pythran-Compiler für Ausdrücke aus der Programmbibliothek NumPy wurde ebenfalls erweitert.

Bild: Python Software Foundation (PSF)

Als die Änderung dieser Version, die wohl von vielen Nutzern am längsten nachgefragt wurde, bezeichnet Behnel die nun zur Verfügung stehende Unterstützung für Read-Only Memory Views. Entwickler können nun einen solchen Memory View recht einfach als const beziehungsweise const double [:,:] deklarieren. Dann wird Cython dafür einen Read-Only Puffer anfordern. Dadurch werden – so Behnel weiter – Interaktionen mit Bytes Objects und anderen Providern von nicht beschreibbaren Puffern möglich.

Eine zweite wichtige Änderung, die wohl ebenso häufig nachgefragt und gewünscht wurde, ist die Unterstützung für C-Code, der unverändert in die generierten Dateien übernommen wird. Der Hintergrund dazu: Einige Programmkonstrukte können nur im unveränderten C-Code verfasst werden, wenn sie von Cython genutzt werden sollen.

Dazu zählen ganz besonders C-Hacks und -Makros aber auch einige Anpassungen an C-Spezifika, die von externen Bibliotheken eingesetzt werden. Bis jetzt mussten die Cython-Nutzer deshalb einen externen C-Header erstellen, um diese Dinge zu implementieren. Anschließend mussten sie dann noch einen cdef extern from... Block verwenden, um den Code in Cython zu integrieren. Cython 0.28 erlaubt nun docstrings für diese cdef extern Blocks (sowohl mit als auch ohne einen spezifischen Namen für die Header-Datei), die dann beliebigen C/C++-Code beinhalten können.

Allerdings warnt der Cython-Entwickler an dieser Stelle, dass dieses Feature absolut nur für Experten geeignet sei, da der C-Code völlig unverändert übernommen wird und Cython so keinerlei Möglichkeit besitzt, ihn zu überprüfen oder gar in Hinblick auf die Sicherheit zu untersuchen. Entwickler können dieses Feature also nur auf eigenes Risiko einsetzen.

Weitere Einzelheiten zu den Verbesserungen und Erweiterungen in Cython 0.28 finden Entwickler in dem sehr ausführlichen "What's new"-Blogeintrag oder auf der Cython Website, wo auch Links zum Download von Cython bereitstehen. (fms)