Menü
Developer

Dropbox stellt Python-Implementierung Pyston vor

Ob sich Pythons Leistungsfähigkeit mit ähnlichen Methoden verbessern lässt wie jene, die schon in JavaScript-Projekten erfolgreich waren, will Dropbox nun anhand einer Neuimplementierung der Sprache testen.

vorlesen Drucken Kommentare lesen 14 Beiträge

Um in Zukunft durch die Nutzung von Python in Hinblick auf Leistung weniger eingeschränkt zu sein, arbeitet Dropbox derzeit an einer neuen Implementierung der Sprache. Inspiriert von der Wirkung, die in JavaScript-Projekten wie der V8-Engine durch das Verwenden von JIT-Techniken erzielt wurden, sollen letztere auch in dem Pyston genannten Projekt zum Einsatz kommen. Ob dieses Vorgehen Vorteile birgt, muss sich noch herausstellen. Zunächst einmal hat Dropbox die Pyston-Quellen nun auf GitHub unter der Apache-2-Lizenz freigegeben, sodass auch andere Mitglieder der Python-Community ihr Wissen einbringen können.

In der Bekanntmachung des Projekts geht Entwickler Kevin Modzelewski auf die Gründe für eine weitere Neuimplementierung ein, gibt es doch beispielsweise mit PyPy und Jython schon andere, die sich mit ähnlichen Problemen beschäftigt haben. Seiner Meinung nach sind die interessantesten Techniken inkompatibel mit allen bekannten Umsetzungen, weshalb es keine gute Alternative zum Neuanfang existiere.

Eine Veränderung, die das Projekt erproben will, ist das Umstellen von Tracing JITs auf Methoden-JITs. Während erstere davon ausgehen, dass Programme die meiste Zeit in Schleifen verbringen und deshalb versuchen, die Operationen entsprechender Schleifen als Sequenz zu Optimieren und in Maschinencode umzuwandeln, konzentrieren sich zweitere auf häufig verwendete Methoden. Darüber hinaus soll geprüft werden, ob der Einsatz einer Garbage Collection für Stack und Speicher der Erweiterungsmodule Gewinne bringt. Ähnlich wie die Umsetzung von Parallelität auf Thread-Ebene ist die Realisierung dieses Konzepts bislang nur eine Idee.

Grundlegend nutzt Pyston wohl Python-Code, übersetzt ihn in das Zwischenformat der LLVM, die dort integrierte Optimierungseinheit bearbeitet den so bearbeiteten Code entsprechend und übergibt ihn der LLVM JIT Engine, die wiederum Maschinencode erstellt. Um Probleme zu umgehen, die LLVM beim Interpretieren haben könnte, stellt Pyston Vermutungen über die zu erwartenden Typen von Variablen und Objekten an, die es zur Laufzeit überprüft. Je nachdem, ob die Voraussage stimmt oder nicht, wird eine Abfolge von Operationen durchlaufen, wobei weniger Zeit nötig ist, wenn sie richtig war. Projekte wie PyPy waren schon vor Längerem vom Einsatz der LLVM-Compilerinfrastruktur abgekommen.

Pyston läuft derzeit auf x86_64-Plattformen und wurde nur auf Ubuntu getestet. Bisher unterstützt es nicht alle Funktionen von Python (angezielt wird Python 2.7), weshalb es sich noch nicht aussagekräftig mit anderen Projekten vergleichen lässt. Erste interne Tests platzieren es wohl zwischen CPython und PyPy, wobei allerdings die genannten Einschränkungen zu bedenken sind. Ziele und Ist-Zustand lassen sich auf der GitHub-Seite des Projekts nachlesen. Ein wenig mehr zur technischen Umsetzung findet sich in einem zusätzlichen Blogeintrag von Kevin Modzelewski. (jul)