Jaspy ist eine Python -VM, die in JavaScript komplett von Grund auf neu geschrieben wurde. Jaspy unterstützt mehrere Threads, verfügt über einen integrierten Debugger, der ein Ferndebugging bietet und eine flexible Präprozessor -Architektur bietet. Geschwindigkeit ist explizit kein Hauptziel dieses Projekts. Jaspy zielt darauf ab, zu veranschaulichen, wie Webprogramme auf der Client -Seite durch Erforschen neuer Wege durchgeführt werden können.
Jaspy verfügt über einen integrierten Entwicklungsserver und einen interaktiven Debugger!
Installieren Sie zuerst die Abhängigkeiten, wenn sie nicht bereits installiert sind:
pip3 install --user -r requirements.txt
pip3 install --user ptpython pygmentsKlonen Sie das Repository und erstellen Sie den Dolmetscher:
git clone --recursive https://github.com/koehlma/jaspy.git ; cd jaspy
python3 build.py # build the interpreterWechseln Sie zum Beispielverzeichnis und starten Sie den Server im interaktiven Modus:
cd example
PYTHONPATH=../ python3 -m jaspy.cli --interactiveBesuchen Sie http: // localhost: 8080/hello.html in Ihrem Browser und klicken Sie auf Ausführen:
Es gibt bereits viele andere Python-to-JavaScript-Ansätze da draußen:
Die meisten von ihnen sind schneller als jaspy, aber keiner von ihnen bietet die einzigartigen Merkmale von Jaspy, die der vollständig suspendierbare Dolmetscher mit Threading -Unterstützung, dem integrierten Debugger und der flexiblen, präprozessorbasierten Architektur sind.
Nur um einen Eindruck zu bekommen, wie langsam Jaspy wirklich ist!
| Pystones/Sekunde | |
|---|---|
| JASPY (aktiviertes Debugger, aktiviertes Threading) | 195 |
| JASPY (Behinderte Debugger, aktiviertes Threading) | 199 |
| JASPY (Behinderte Debugger, Deaktiviertes Threading) | 206 |
| Brython | 4184 |
| Pypy.js (kalt) | 41425 |
| Pypy.js (warm) | 847457 |
Dies ist jedoch ein etwas unfairer Benchmark, da keine DOM -Manipulation oder ein anderer Browser -Spezifikum stattfindet. Überraschenderweise führt das Debugging fast keinen Overhead vor.
Dieses Projekt befindet sich noch in einem Alpha -Bundesstaat. Die APIs sind instabil, sie ist ungetestet und nicht bereit für den produktiven Gebrauch. Einige der oben aufgeführten Funktionen sind noch nicht implementiert.
Ich habe dieses Projekt in meiner Semesterpause begonnen und jetzt, als das neue Semester begann, habe ich viel weniger Freizeit. Daher kann es eine Weile dauern, bis ich viel mehr Zeit in sie investieren kann. Ich begrüße jedoch alle möglichen Beiträge.
Wenn Sie die Ideen von klagrischem Fühlen mögen, müssen Sie sich gerne anschließen, es gibt viele Dinge zu tun:
Zögern Sie nicht, einen Beitrag zu leisten oder zu fragen, ob der Code oder den Prozess des Beitrags im Allgemeinen etwas unklar ist.
| libs: | Abhängigkeiten von Drittanbietern |
|---|---|
| Module: | gebündelte native JavaScript -Module |
| SRC: | JavaScript -Quelldateien (müssen vorverarbeitet werden) |
| klagern: | Python Server, Konverter und Remote -Debugger |
Vielen Dank an das Brython-Projekt für die Inspiration für viele Teile des Code der integrierten Klasse. Vielen Dank auch an das Buch „500 Zeilen oder weniger“, was ein guter Ausgangspunkt ist, wenn Sie wissen möchten, wie der Dolmetscher funktioniert.