Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
 Nota: Não confundir com PyPI.

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.

PyPy
Logótipo
PyPy
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; há 2 meses)
Escrito em RPython
Sistema operacional Multiplataforma
Licença MIT
Estado do desenvolvimento Ativo
Página oficial pypy.org

Detalhes e motivações

editar

PyPy 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

editar

O 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

editar

Referências

  1. Ohri, Author Ajay (29 de novembro de 2015). «Interview Maciej Fijalkowski PyPy» (em inglês) 
  2. Samuele Pedroni (março de 2007). «PyPy – Goals and Architecture Overview». Cópia arquivada em 14 de junho de 2012 
  3. «PyPy – Goals and Architecture Overview – Mission Statement». Consultado em 11 de outubro de 2013 
  4. Our runtime interpreter is “RPython”, Coding Guide – PyPy documentation
  5. "It is a proper subset of Python, restricted in a way that enables easy analysis and efficient code generation", Ancona et al., 2007.
  6. Bolz, Carl; Cuni, Antonio; Fijalkowski, Maciej; Rigo, Armin. Tracing the Meta-Level: PyPy's Tracing JIT Compiler. ICOOOLPS '09. doi:10.1145/1565824.1565827 
  7. Timothy Balridge interview.
  Este artigo sobre programação de computadores é um esboço. Você pode ajudar a Wikipédia expandindo-o.