PyPy
PyPy é uma implementação alternativa da linguagem Python[1] a CPython, que é a implementação padrão de Python. PyPy frequentemente roda mais rápido que que CPython, por usar uma JIT (Just In Time), enquanto CPython é interpretada. A maior parte do código Python roda bem na PyPy, com exceção de código que depende de extensões da CPython, que ou não funcionam ou causam algum overhead quando rodam na PyPy. Funcionalmente, PyPy é projetada em torno de uma técnica conhecida como meta-tracing, que transforma um interpretador num JIT. Já que interpretadores são mais fáceis de escrever que compiladores, mas rodam mais lentamente, essa técnica torna mais fácil produzir uma implementação eficiente de linguagens de programação. O toolchain meta-tracing usado pelo PyPy é chamado de RPython.
Desenvolvedor | The PyPy Team |
Plataforma | Multiplataforma |
Lançamento | 21 de novembro de 2020 (3 anos) |
Versão estável | 7.3.17 (28 de agosto de 2024 | )
Escrito em | RPython |
Sistema operacional | Multiplataforma |
Licença | MIT |
Estado do desenvolvimento | Ativo |
Página oficial | pypy |
Detalhes e motivações
editarPyPy tem o objetivo de prover um framework comum para tradução e suporte para produzir implementações de linguagens dinâmicas, com ênfase numa separação limpa entre a especificação da linguagem e aspectos da implementação. Ele também tem o objetivo de prover um implementação compativeis, flexíveis e implementação rápida da linguagem da linguagem de programação Python usando o framework acima para habilitar novas features sem ter que codificar em detalhes de baixo nível.[2][3]
RPython
editarO próprio interpretador PyPy é escrito num subconjunto restrito de Python chamado RPython (Restricted Python)[4] RPython coloca algumas restrições na linugagem Python para que o tipo de variáveis possa ser inferido durante a compilação.[5]
O projeto PyPy desenvolveu um toolchain que analisa código RPython e o traduz para uma forma de bytecode, que pode ser reduzido em C. Haviam outros backends além do C (Java, C# e Javascript), mas eles sofreram de bitrot e foram removidos. Por isso a logo recursivo de PyPy é uma cobra engolindo a si mesma já que RPython é traduzido pelo interpretador Python. O código também pode ser rodar sem ser traduzido para teste e analises, o que provê um boa Plataforma de teste para pesquisa em linguagens dinâmicas.
Ele permite garbage collectors plugaveis, assim como habilitar o recurso Stackless Python. Finalmente ele inclui um gerador de just-in-time (JIT) que constrói um compilador just-in-time no interpretador, dadas algumas anotações no código fonte do interpretador. O compilador JIT gerado é um tracing JIT.[6]
RPython é agora usada para escrever implementações de linguagens que não sejam Python, como Pixie.[7]
Ver também
editarReferências
- ↑ Ohri, Author Ajay (29 de novembro de 2015). «Interview Maciej Fijalkowski PyPy» (em inglês)
- ↑ Samuele Pedroni (março de 2007). «PyPy – Goals and Architecture Overview». Cópia arquivada em 14 de junho de 2012
- ↑ «PyPy – Goals and Architecture Overview – Mission Statement». Consultado em 11 de outubro de 2013
- ↑ Our runtime interpreter is “RPython”, Coding Guide – PyPy documentation
- ↑ "It is a proper subset of Python, restricted in a way that enables easy analysis and efficient code generation", Ancona et al., 2007.
- ↑ Bolz, Carl; Cuni, Antonio; Fijalkowski, Maciej; Rigo, Armin. Tracing the Meta-Level: PyPy's Tracing JIT Compiler. ICOOOLPS '09. doi:10.1145/1565824.1565827
- ↑ Timothy Balridge interview.
- Davide Ancona, Massimo Ancona, Antonio Cuni, Nicholas D. Matsakis, 2007. RPython: a Step Towards Reconciling Dynamically and Statically Typed OO Languages. In Proc. Dynamic Language Symposium (DLS), 2007. ACM Press.
- Carl Friedrich Bolz, Antonio Cuni, Maciej Fijalkowski, 2009. Tracing the meta-level: PyPy's Tracing JIT Compiler. In Proc. ICOOOLPS, 2009. ACM Press.
- Corbet, Jonathan (11 de maio de 2011). «A brief experiment with PyPy». LWN.net
- von Eitzen, Chris (21 de novembro de 2011). «PyPy 1.7 widens the performance "sweet spot"». The H. Heinz Heise
- Rose, John (2 de dezembro de 2011). «A Day with PyPy». Oracle developer blog
- «Interview Maciej Fijalkowski pypy». Decisionstats blog. 29 de novembro de 2015