Zum Hauptinhalt Zur Navigation

Pypyjs: Python-Interpreter auf Javascript portiert

Es ist nur ein Experiment und soll es wahrscheinlich auch bleiben – dennoch zeigt die Javascript-Portierung des Python-Interpreters Pypy, was mit aktuellen Webtechniken möglich ist.
/ Sebastian Grüner
27 Kommentare News folgen (öffnet im neuen Fenster)
Pypy läuft dank einiger Anpassungen auch im Browser. (Bild: Pypy.org)
Pypy läuft dank einiger Anpassungen auch im Browser. Bild: Pypy.org

Viele Programmiersprachen sind deutlich besser geeignet als Python, um Webanwendungen zu erstellen. Dank einer Javascript-Portierung des in Python geschriebenen Python-Interpreters Pypy(öffnet im neuen Fenster) , lässt sich nun aber damit experimentieren. Eine tatsächliche Einsatzreife wird Pypyjs(öffnet im neuen Fenster) wohl zwar nicht erreichen, das scheint aber auch nicht das Ziel des Projekts zu sein.

Das wird auch aus der Eigenbeschreibung auf Github(öffnet im neuen Fenster) deutlich: "Pypy, kompiliert in Javascript, JIT-kompiliert (Python) nach Javascript zur Laufzeit, warum auch nicht" . Eine technisch etwas detailliertere Beschreibung zur Funktionsweise und dem Aufbau des Projekts bietet Pypyjs aber ebenfalls.

Demnach handelt es sich dabei um eine angepasste Version von Pypy mit einigen Erweiterungen. Diese umfassen etwa eine Build-Umgebung, die dafür sorgt, dass die Rpython-Toolchain(öffnet im neuen Fenster) aus Pypy auch mittels Emscripten kompilieren kann. Dazu kommt ein JIT-Backend, das Asm.js zur Laufzeit erzeugt. Ein Javascript-Modul für den dabei entstehenden Interpreter ermöglicht eine Interaktion mit der Javascript-Umgebung, welche als Host genutzt wird.

Außerdem gibt es einen Wrapper, der die kompilierte VM im Browser laden kann und den Zugriff auf diese über eine API erlaubt, sowie ein Skript, um verschiedene Python-Module über ein indiziertes Format ebenfalls laden zu können. Der relativ komplexe Code ist ziemlich groß, so dass das Laden im Browser einige Zeit benötigt. Mit einfachem Python-Code scheint der Interpreter aber keine Probleme zu haben.

Erstellt worden ist Pypyjs von dem Mozilla-Angestellten Ryan Kelly, den Status eines Hobbyprojekts wird es wohl aber nie verlassen.


Relevante Themen