Jaspy est une machine virtuelle Python entièrement écrite à partir de zéro dans JavaScript avec des fonctionnalités uniques. Jaspy prend en charge plusieurs threads, est livré avec un débogueur intégré qui propose un débogage à distance et fournit une architecture basée sur le préprocesseur flexible. La vitesse n'est explicitement pas un objectif principal de ce projet. Jaspy vise à illustrer comment la programmation Web du côté client pourrait être effectuée en explorant de nouvelles façons.
Jaspy est livré avec un serveur de développement intégré et un débogueur interactif!
Installez d'abord les dépendances, si elles ne sont pas déjà installées:
pip3 install --user -r requirements.txt
pip3 install --user ptpython pygmentsClone le référentiel et construire l'interprète:
git clone --recursive https://github.com/koehlma/jaspy.git ; cd jaspy
python3 build.py # build the interpreterPassez à l'exemple de répertoire et démarrez le serveur en mode interactif:
cd example
PYTHONPATH=../ python3 -m jaspy.cli --interactiveVisitez http: // localhost: 8080 / hello.html dans votre navigateur et cliquez sur Exécuter:
Il existe déjà de nombreuses autres approches Python-to-Javascript:
La plupart d'entre eux sont plus rapides que Jaspy, mais aucun d'entre eux n'offre les caractéristiques uniques de Jaspy, qui sont l'interprète entièrement suspendu avec support de filetage, le débogueur intégré et l'architecture flexible basée sur le préprocesseur.
Juste pour avoir une impression à quel point Jaspy est lent!
| pystones / seconde | |
|---|---|
| Jaspy (débogueur activé, filetage activé) | 195 |
| Jaspy (débogueur handicapé, filetage activé) | 199 |
| Jaspy (débogueur handicapé, filetage handicapé) | 206 |
| Brython | 4184 |
| Pypy.js (froid) | 41425 |
| Pypy.js (chaud) | 847457 |
Cependant, c'est une référence quelque peu injuste car aucune manipulation DOM ou autre chose de spécifique du navigateur ne se passe. Étonnamment, le filetage et le débogage ne présentent presque pas de frais généraux.
Ce projet est toujours dans un état alpha. Les API sont instables, elle n'est pas testée et n'est pas prête pour une utilisation productive. Certaines des fonctionnalités énumérées ci-dessus ne sont pas encore implémentées.
J'ai commencé ce projet dans ma pause semestre et maintenant, comme le nouveau semestre a commencé, j'ai beaucoup moins de temps libre. Par conséquent, cela pourrait prendre un certain temps jusqu'à ce que je puisse y investir beaucoup plus de temps. Cependant, je salue beaucoup toutes sortes de contributions.
Si vous aimez les idées de Jaspy, n'hésitez pas à rejoindre, il y a beaucoup de choses à faire:
N'hésitez pas à contribuer ou à demander s'il y a quelque chose de clair sur le code ou le processus de contribution en général.
| Libs: | dépendances tierces |
|---|---|
| Modules: | modules JavaScript natifs groupés |
| SRC: | Fichiers source JavaScript (doit être prétraité) |
| Jaspy: | Serveur Python, convertisseur et débogueur distant |
Un grand merci au projet Brython pour l'inspiration pour de nombreuses parties du code des classes intégrées. Un grand merci également au livre «500 lignes ou moins», ce qui est un bon point de départ si vous voulez savoir comment fonctionne l'interprète.