Das Startup Exaloop hat den Code des Projekts Codon veröffentlicht, das einen Compiler für die Programmiersprache Python entwickelt, der in der Lage ist, reinen Maschinencode zu generieren, der nicht an die Python-Laufzeit gebunden ist. Der Compiler wird von den Autoren der Python-ähnlichen Sprache Seq entwickelt und als Fortsetzung dieser betrachtet. Zudem bietet das Projekt eine eigene Laufzeitumgebung für ausführbare Dateien sowie eine Funktionsbibliothek an, die die Bibliotheksaufrufe der Programmiersprache Python ersetzt. Der Quellcode des Compilers, der Laufzeitumgebung und der Standardbibliothek ist unter Verwendung der Programmiersprachen C++ (unter Einbeziehung von Entwicklungen aus LLVM) und Python geschrieben und wird unter der Lizenz BSL (Business Source License) verbreitet.
Die BSL-Lizenz wurde von den Mitbegründern von MySQL als Alternative zum Open-Core-Modell vorgeschlagen. Der Kern der BSL ist, dass der Code für erweiterte Funktionen zunächst zur Bearbeitung verfügbar ist, aber für eine bestimmte Zeit nur unter zusätzlichen Bedingungen kostenlos verwendet werden kann, deren Umgehung den Erwerb einer kommerziellen Lizenz erfordert. Die zusätzlichen Lizenzbedingungen des Projekts Codo sehen vor, dass der Code nach 3 Jahren (am 1. November 2025) auf die Lizenz Apache 2.0 übertragen wird. Bis zu diesem Zeitpunkt erlaubt die Lizenz die Kopie, Verbreitung und Modifikation, sofern sie nicht für kommerzielle Zwecke verwendet wird.
Die Leistung der ausgegebenen ausführbaren Dateien wird als nahezu vergleichbar mit Programmen angesehen, die in C geschrieben sind. Im Vergleich zur Verwendung von CPython wird der Leistungszuwachs bei der Kompilierung mit Codon auf das 10- bis 100-Fache für die einsträngige Ausführung geschätzt. Darüber hinaus unterstützt Codon im Gegensatz zu Python die Möglichkeit der Mehrfachausführung, was zu einem noch größeren Leistungssteigerung führt. Codon ermöglicht es auch, die Kompilierung auf der Ebene einzelner Funktionen durchzuführen, um die kompilierte Darstellung in bestehenden Python-Projekten zu verwenden.
Codon ist mit einer modularen Architektur aufgebaut, die es ermöglicht, die Funktionalität über Plugins zu erweitern. Damit können neue Bibliotheken hinzugefügt, Compiler-Optimierungen implementiert und sogar zusätzliche Syntax unterstützt werden. Beispielsweise entwickeln mehrere Plugins parallel Anwendungen in der Bioinformatik und Finanzmathematik. Für das Speichermanagement wird der Garbage Collector Boehm verwendet.
Der Compiler unterstützt einen Großteil der Python-Syntax, jedoch bringt die Kompilierung in Maschinencode einige Einschränkungen mit sich, die die Verwendung von Codon als transparente Alternative zu CPython erschweren. So verwendet Codon beispielsweise für Ganzzahlen einen 64-Bit Datentyp, während in CPython die Dimensionen von Ganzzahlen nicht begrenzt sind. Um die Kompatibilität mit Codon für größere Codebasen zu gewährleisten, sind möglicherweise Änderungen im Code erforderlich. In der Regel entstehen Komplikationen durch die fehlende Implementierung bestimmter Python-Module in Codon und die Unmöglichkeit, einige dynamische Eigenschaften der Sprache zu nutzen. Bei jeder solchen Inkompatibilität gibt der Compiler eine detaillierte Fehlermeldung aus, die Informationen bereitstellt, wie die aufgetretenen Probleme umgangen werden können.

Quelle: opennet.ru
