Login
Newsletter
Werbung

Mo, 7. April 2014, 11:07

Software::Entwicklung

Pyston: eine neue JIT-basierte Python-Implementation stellt sich vor

Der Cloud-Anbieter Dropbox sieht sich des öfteren vor Problemstellungen, die mit der im Unternehmen vorwiegend genutzten Sprache Python nur schwer zu lösen sind. Das jetzt initiierte Projekt Pyston soll Python leistungsmäßig in die Region von C++ heben.

Python Software Foundation

Technisch soll die neue Implementation von Python 2.7 durch die Verwendung von JIT-Kompilierung und LLVM unterstützt werden. Hierbei wollen die Entwickler im Gegensatz zu Projekten wie PyPy, Jython oder IronPython, die Tracing-JITs verwenden, den Ansatz der Methoden-JITs verfolgen. Beide Methoden sind zueinander inkompatibel, sodass Pyston ganz von vorne beginnen muss.

Während Tracing-JIT davon ausgeht, dass Programme den Großteil ihrer Zeit in Schleifen verbringen, und deshalb versucht, häufig ausgeführte Pfade in Schleifen zu identifizieren, übersetzen Methoden-JITs komplette Funktionen bzw. Methoden des Programms zur Laufzeit. Die Überlegenheit der Methoden-JITs ist allerdings nur für JavaScript belegt. Ob Python in gleicher Weise profitiert, will Pyston erst herausfinden. In einem weiteren neuen Ansatz wollen die Entwickler die Erweiterungsmodule mit einer konservativen Garbage-Collection kompatibel machen. Auch hier ist nicht bekannt, ob damit ein Performancegewinn zu erzielen ist.

Während Python-Interpreter wie das bei Google entwickelte und mittlerweile wieder eingestellte Unladen Swallow oder PyPy ihre Versuche mit LLVM aufgegeben haben, will Pyston auch hier einen neuen Versuch wagen. Der Code soll durch ein Frontend in die »LLVM Intermediate Representation« (IR) kompiliert werden, um anschließend von LLVM optimiert und durch die LLVM-JIT-Engine geschickt zu werden, die dann Maschinencode ausliefert. Um LLVM zu helfen, Python optimal zu interpretieren, soll »Type Speculation« eingesetzt werden. Hierbei werden Voraussagen über den jeweiligen Typ von Variablen und Objekten getroffen, die dann zur Laufzeit überprüft werden. Stimmt die Voraussage, tritt kein Zeitverlust auf, stimmt die Voraussage nicht, verzweigt der Compiler und versucht es erneut.

Das Projekt steht derzeit noch ganz am Anfang. Es lässt sich zwar ausführen, versteht aber bisher nur eine geringe Untermenge von Python. Beim derzeitigen Entwicklungsstand zeigen Benchmarks Pyston schneller als CPython und langsamer als PyPy. Der Entwickler schreibt diesen Vergleichen zum derzeitigen Zeitpunkt allerdings nur Projekt-interne Relevanz zu. Derzeit ist die Entwicklung auf Python 2.7 und die x86_64-Plattform beschränkt, was dem Anwendungsfall bei Dropbox entspricht. Weitere Plattformen sowie Unterstützung für Python 3.x sind für später geplant. Nicht unwichtig für den Erfolg des Projekts könnte sich die Tatsache erweisen, dass Dropbox seit rund 18 Monaten Python-Erfinder Guido van Rossum auf seiner Gehaltsliste hat. Das Projekt ist Open Source unter der Apache-2.0-Lizenz und wird auf GitHub gehostet. Dort und in einem Blog des Entwicklers finden sich weitere technische Einzelheiten.

Werbung
Pro-Linux
Pro-Linux @Facebook
Neue Nachrichten
Werbung