Der Python-zu-C ++ - Compiler verspricht eine schnellere Ausführung

Je beliebter die Sprache ist, desto vielfältiger sind ihre Implementierungen. Python ist ein klassisches Beispiel, bei dem die meisten Ersetzungen für den Standardinterpreter geschrieben wurden, um die Ausführung der Sprache zu beschleunigen. Zu den neuesten und faszinierendsten gehört Nuika.

Nuika (Open Source auf GitHub) kompiliert Python zu C ++ - Code, der dann direkt ausgeführt oder als eigenständige Datei zur Weiterverteilung verpackt werden kann. Im Gegensatz zu einigen anderen Ersetzungen für vorhandene Python-Interpreter wird die vollständige Kompatibilität mit allen Sprachkonstrukten in Python 2.6, 2.7, 3.2 und 3.3 beansprucht.

Laut Kay Hayen, dem Projektleiter, wurde Nuitkas erster Meilenstein - die Parität der Merkmale mit der Sprache - bereits erreicht. Hayen präsentierte auf der EuroPython 2012-Konferenz eine Diskussion über Nuitka, und die Arbeiten begannen Ende des Jahres ernsthaft (basierend auf der GitHub-Commit-Historie).

Um seine Magie zu entfalten, benötigt Nuitka sowohl eine aktuelle Version des Python-Interpreters (2.x- oder 3.x-Zweig) als auch einen C ++ - Compiler. Microsoft Visual Studio, MinGW und Clang / LLVM werden für letztere sowohl in 32- als auch in 64-Bit-Editionen unterstützt. Cross-Compilation - beispielsweise von Linux zu Windows oder umgekehrt - wird jedoch nicht unterstützt. Für das Kompilieren einer ausführbaren 64-Bit-Datei unter Windows ist der Compiler von Microsoft erforderlich.

Ein weiterer Nachteil ist die Erstellung eigenständiger ausführbarer Dateien. Zu diesem Zweck enthält Nuitka die ausführbaren Dateien von CPython (in Windows eine Sammlung von DLLs und anderen Unterstützungsdateien) in der ausführbaren Datei. Folglich sind eigenständige Programme mit einem erheblichen Aufwand verbunden: Ein einfaches Befehlszeilenskript "Hello, world" für Python 2.7 erzeugt eine ausführbare 32-Bit-Windows-Datei mit 2,6 MB sowie 7,4 MB Unterstützungsdateien. (Eine GUI-Version desselben Programms wog 10 MB für die ausführbare Datei, insgesamt 20 MB.)

Dennoch ist das, was Nuitka bereits erreichen kann, beeindruckend, und Hayens Pläne für seine Zukunft sind ehrgeizig. Die nächsten Schritte bestehen darin, den von Nuitka generierten Code effizienter zu gestalten, einschließlich einer besseren Handhabung von Variablentypen und Optimierungen für den Kontrollfluss. Weiter draußen auf der Roadmap befinden sich noch ausgefeiltere und wertvollere Funktionen, z. B. die direkte Verbindung von Nuitka mit C-Code, der in Python über das Fremdfunktionssystem ctypes der Sprache verwendet wird.