PyPy

Da Wikipédia, a enciclopédia livre

 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.

Factos rápidos
PyPy
Thumb
PyPy
Desenvolvedor The PyPy Team
Plataforma Multiplataforma
Lançamento 21 de novembro de 2020 (4 anos)
Versão estável 7.3.17 (28 de agosto de 2024; há 7 meses)
Escrito em RPython
Sistema operacional Multiplataforma
Licença MIT
Estado do desenvolvimento Ativo
Página oficial pypy.org
Fechar

Detalhes e motivações

Resumir
Perspectiva

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 compatíveis, 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

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 plugáveis, 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]

Status do Projeto

Na versão 7.3.17 PyPy é compativel com duas versões do CPython: 2.7 e 3.10[8][9]. A primeira versão do PyPy compatível com CPython v3 é PyPy v2.3.1 (2014)[10]. O interpretador PyPy compatível com CPython v3 também é conhecido como PyPy3.

PyPy tem suporte at JIT em processadores de 32/64 bits x86 e 32/64 bits ARM[11]. Ele é testado nightly no Windows, Linux, OpenBSD e Mac OS X. PyPy é capas de rodar software puramente Python que não depende de características especificas da implementação[12].

Há uma camada de compatibilidade com a API C para extensões do CPython chamada CPyExt, mas ela é incompatível e experimental. A maneira preferida de interagir com bibliotecas compartilhadas C é através da Interface de função externa C embutido (CFFI) ou bibliotecas ctypes.

História

Financiamento

PyPy foi financiado pela União Europeia sendo um Projetos de pesquisa direcionados específicos[13] entre dezembro de 2004 e março de 2007. Em junho de 2008 o PyPy anunciou financimento sendo parte do programa Open Source do Google e concordou em focar em fazer o PyPy mais compatível com CPython. Em 2009 o Eurostars, um agencia do União Europeia para finaciamento espeilmente focada em PMEs[14], aceitou uma proposta de um membro do projeto entitulado "PYJIT" – a fast and flexible toolkit for dynamic programming languages based on PyPy". O financiamento da Eurostar durou até agosto de 2011[15]. Na PyCon US de 2011, a Python Software Foundation proveu uma patrocínio de $10,000 para que o PyPy continuasse a trabalhar em performance compatibilidade com versões mais novas as linguagem[16]. Um port para a arquitetura ARM foi patrocinando em parte pela Raspberry Pi Foundation.[17][18]

O projeto PyPy também aceita doações através do seu blog de status.[19] Em 2013, uma variedade de subprojetos tem financiado: compatibilidade com Python 3, suporte embutido otimizado ao NumPy cálculos numéricos e suporte a software transactional memory para permitir melhor paralelismo.[17]

Ver também

Referências

  1. Ohri, Author Ajay (29 de novembro de 2015). «Interview Maciej Fijalkowski PyPy» (em inglês)
  2. Our runtime interpreter is “RPython”, Coding Guide – PyPy documentation
  3. "It is a proper subset of Python, restricted in a way that enables easy analysis and efficient code generation", Ancona et al., 2007.
  4. Bolz, Carl; Cuni, Antonio; Fijalkowski, Maciej; Rigo, Armin. Tracing the Meta-Level: PyPy's Tracing JIT Compiler. ICOOOLPS '09. doi:10.1145/1565824.1565827
  5. «PyPy – Python compatibility». pypy.org. 28 de dezembro 2019. Consultado em 15 de dezembro de 2020
  6. «PyPy v7.3.7: bug-fix release of 3.7, 3.8». pypy.org. 25 de outubro de 2021. Consultado em 10 de novembro de 2021
  7. the PyPy team (20 de junho de 2014). «PyPy3 2.3.1 – Fulcrum». PyPy blog
  8. «PyPy v7.2.0: release of 2.7, and 3.6». pypy.org. 16 de outubro de 2019
  9. «A thank you to the PSF». 22 de março de 2011
  10. Jake Edge (15 de maio de 2013). «A look at the PyPy 2.0 release». LWN.net
Ícone de esboço Este artigo sobre programação de computadores é um esboço. Você pode ajudar a Wikipédia expandindo-o.
Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.