Jaspy es una VM de Python escrita completamente desde cero en JavaScript con algunas características únicas. Jaspy admite múltiples hilos, viene con un depurador integrado que ofrece depuración remota y proporciona una arquitectura flexible basada en el preprocesador. La velocidad no es explícitamente un objetivo principal de este proyecto. Jaspy tiene como objetivo ilustrar cómo se podría hacer la programación web en el lado del cliente explorando nuevas formas.
¡Jaspy viene con un servidor de desarrollo integrado y un depurador interactivo!
Primero instale las dependencias, si aún no están instaladas:
pip3 install --user -r requirements.txt
pip3 install --user ptpython pygmentsClonar el repositorio y construir el intérprete:
git clone --recursive https://github.com/koehlma/jaspy.git ; cd jaspy
python3 build.py # build the interpreterCambie al directorio de ejemplo e inicie el servidor en modo interactivo:
cd example
PYTHONPATH=../ python3 -m jaspy.cli --interactiveVisite http: // localhost: 8080/hello.html en su navegador y haga clic en Ejecutar:
Ya hay muchos otros enfoques de Python-to JavaScript:
La mayoría de ellos son más rápidos que Jaspy, pero ninguna de ellas ofrece las características únicas de Jaspy, que son el intérprete totalmente suspendible con soporte de subprocesos, el depurador integrado y la arquitectura flexible basada en el preprocesador.
¡Solo para tener una impresión de lo lento que es realmente Jaspy!
| Pystones/segundo | |
|---|---|
| Jaspy (depurador habilitado, hilos habilitado) | 195 |
| Jaspy (depurador desactivado, enhebrado habilitado) | 199 |
| Jaspy (depurador desactivado, enhebrado deshabilitado) | 206 |
| Brython | 4184 |
| Pypy.js (frío) | 41425 |
| Pypy.js (cálido) | 847457 |
Sin embargo, este es un punto de referencia algo injusto porque no se está produciendo manipulación DOM o cualquier otra cosa específica del navegador. Sorprendentemente, enhebramiento y depuración presenta casi ninguna sobrecarga.
Este proyecto todavía está en un estado alfa. Las API son inestables, no se han probado y no están listas para el uso productivo. Algunas de las características enumeradas anteriormente aún no se han implementado.
Comencé este proyecto en mi descanso del semestre y ahora, cuando comenzó el nuevo semestre, tengo mucho menos tiempo libre. Por lo tanto, puede tomar un tiempo hasta que pueda invertir mucho más tiempo en ello. Sin embargo, agradezco todo tipo de contribuciones.
Si te gustan las ideas de Jaspy, siéntete libre de unirte, hay muchas cosas que hacer:
No dude en contribuir o preguntar si hay algo poco claro sobre el código o el proceso de contribución en general.
| Libs: | dependencias de terceros |
|---|---|
| Módulos: | módulos nativos de JavaScript agrupados |
| SRC: | Archivos fuente de JavaScript (es necesario preprocesar) |
| Jaspy: | Python Server, convertidor y depurador remoto |
Muchas gracias al proyecto Brython por la inspiración para muchas partes del código de las clases construidas. Muchas gracias también al libro "500 líneas o menos", que es un buen punto de partida si desea saber cómo funciona el intérprete.