Jaspy é uma VM Python escrita inteiramente do zero em JavaScript com alguns recursos exclusivos. Jaspy suporta vários threads, vem com um depurador integrado que oferece depuração remota e fornece uma arquitetura flexível baseada em pré -processador. A velocidade não é explicitamente um objetivo principal deste projeto. Jaspy pretende ilustrar como a programação da Web no lado do cliente pode ser feita explorando novas maneiras.
Jaspy vem com um servidor de desenvolvimento integrado e depurador interativo!
Primeiro instale as dependências, se elas ainda não estiverem instaladas:
pip3 install --user -r requirements.txt
pip3 install --user ptpython pygmentsClone o repositório e construa o intérprete:
git clone --recursive https://github.com/koehlma/jaspy.git ; cd jaspy
python3 build.py # build the interpreterMude para o diretório de exemplo e inicie o servidor no modo interativo:
cd example
PYTHONPATH=../ python3 -m jaspy.cli --interactiveVisite http: // localhost: 8080/hello.html no seu navegador e clique em Run:
Já existem muitas outras abordagens de python-to-javascript por aí:
A maioria deles é mais rápida que Jaspy, mas nenhum deles oferece os recursos exclusivos de Jaspy, que são o intérprete totalmente suspensível com suporte de encadeamento, o depurador integrado e a arquitetura flexível e baseada em pré -processador.
Só para ter uma impressão de quão lento Jaspy realmente é!
| Pystones/segundo | |
|---|---|
| Jaspy (depurador ativado, encadeamento ativado) | 195 |
| Jaspy (depurador desativado, encadeamento ativado) | 199 |
| Jaspy (depurador desativado, encadeamento desativado) | 206 |
| Brithon | 4184 |
| Pypy.js (frio) | 41425 |
| Pypy.js (quente) | 847457 |
No entanto, este é um benchmark um tanto injusto, porque nenhuma manipulação de DOM ou qualquer outra coisa específica do navegador está acontecendo. Surpreendentemente Threading and Debugging apresenta quase nenhuma sobrecarga.
Este projeto ainda está em um estado alfa. As APIs são instáveis, não testadas e não estão prontas para uso produtivo. Alguns dos recursos listados acima ainda não foram implementados.
Comecei este projeto no meu semestre e agora, quando o novo semestre começou, tenho muito menos tempo livre. Portanto, pode demorar um pouco até que eu possa investir muito mais tempo. No entanto, agradeço todos os tipos de contribuições.
Se você gosta das idéias de Jaspy, sinta -se à vontade para participar, há muitas coisas a fazer:
Não hesite em contribuir ou perguntar se não há algo claro sobre o código ou o processo de contribuição em geral.
| Libs: | dependências de terceiros |
|---|---|
| Módulos: | Módulos JavaScript nativos de pacote |
| SRC: | Arquivos de origem JavaScript (precisam ser pré -processados) |
| Jaspy: | Servidor python, conversor e depurador remoto |
Muito obrigado ao projeto Brython pela inspiração para muitas partes do código das classes construídas. Muito obrigado também ao livro “500 linhas ou menos”, o que é um bom ponto de partida se você quiser saber como o intérprete funciona.