Pyston 2, uma implementação de Python com um compilador JIT

Após um hiato de três anos no desenvolvimento, o lançamento do projeto Pyston 2 foi publicado, o que eu desenvolvipara uma implementação de alto desempenho da linguagem Python utilizando os desenvolvimentos do projeto LLVM.

A implementação destaca-se pelo uso de modernas tecnologias de compilação JIT e visa alcançar alto desempenho semelhante a linguagens de sistema tradicionais como C ++.

O código de versões anteriores por Pyston foi distribuído sob a licença Apache, mas o código do Pyston 2 ainda não está disponível e apenas compilações prontas para uso foram lançadas para o Ubuntu 18.04 e 20.04 (um arquivo com o código está disponível para download, mas há apenas um esboço com informações de que o projeto ainda está fechado) .

Publicar o código faz parte dos planos dos desenvolvedoresmas isso será feito após a formação do modelo de negócios ter sido concluída da nova empresa e decidiu-se continuar desenvolvendo a Pyston sem o apoio financeiro do Dropbox.

Sobre o Python 2

Ao contrário das versões anteriores, Pyston 2 é marcado como estável e não como uma versão de teste. Muito trabalho foi feito para otimizar o desempenho e o Pyston 2 agora é mais rápido do que o Python 3.8 original em cerca de 20% ao passar no conjunto de testes python-macrobenchmarks.

Os ganhos de desempenho mais notáveis ​​são vistos em cargas de trabalho de aplicativos da web inerentes. Em testes separados, como chaos.py e nbody.py, o Pyston 2 supera o Python 3.8 por um fator de 2. O custo de usar JIT é um pequeno aumento no consumo de memória.

Estamos muito animados para lançar o Pyston v2, uma implementação mais rápida e altamente compatível da linguagem de programação Python. A versão 2 é 20% mais rápida do que o Python 3.8 padrão em nossos macrobenchmarks. Mais importante, provavelmente é mais rápido em seu código. O Pyston v2 pode reduzir os custos do servidor, reduzir as latências do usuário e melhorar a produtividade do desenvolvedor.

O Pyston v2 é fácil de implementar, então se você está procurando um melhor desempenho do Python, recomendamos que você reserve cinco minutos e experimente o Pyston. Fazer isso é uma das maneiras mais fáceis de acelerar seu projeto.

Em termos de compatibilidade com Python nativo, o projeto Pyston é apresentado como a implementação alternativa mais compatível para CPython, já que Pyston é um fork da base de código principal do CPython.

Pistão suporta todas as funções CPython, incluindo a API C para desenvolver extensões C. Pyston foi originalmente desenvolvido pelo Dropbox, que em 2017 decidiu descontinuar o desenvolvimento interno. No início de 2020, os principais desenvolvedores da Pyston fundaram sua empresa, reinventaram completamente o projeto e começaram a trabalhar na Pyston em tempo integral.

Detalhes técnicos sobre o preenchimento do Pyston 2 ainda não foram fornecidos, apenas DynASM JIT, cache em linha e otimizações gerais de CPython são mencionados. A versão anterior do Pyston usava um método JIT por vez, semelhante ao JIT nos motores JavaScript modernos.

No JIT, o código Python foi analisado e traduzido para uma representação intermediária LLVM (IR, representação intermediária). Além disso, a representação IR foi processada no otimizador LLVM e passada para o mecanismo LLVM JIT para execução, que converteu a representação IR em código de máquina.

Para obter informações sobre os tipos de variáveis ​​para programas na linguagem Python dinâmica, foi utilizada a técnica de predição probabilística de tipos de objetos, seguida do esclarecimento da escolha correta do tipo durante a execução.

Portanto, Pyston constantemente variava a execução entre dois ramos: o rápido, quando as taxas previstas são confirmadas, e o lento, que é usado em caso de incompatibilidade de tipo.

O trabalho pode ser feito no modo multithread, permitindo a execução paralela de vários threads de código na linguagem Python e livre do bloqueio do interpretador global (GIL).

Finalmente se você quiser saber mais sobre isso, você pode verificar os detalhes no link a seguir


Seja o primeiro a comentar

Deixe um comentário

Seu endereço de email não será publicado. Campos obrigatórios são marcados com *

*

*

  1. Responsável pelos dados: Miguel Ángel Gatón
  2. Finalidade dos dados: Controle de SPAM, gerenciamento de comentários.
  3. Legitimação: Seu consentimento
  4. Comunicação de dados: Os dados não serão comunicados a terceiros, exceto por obrigação legal.
  5. Armazenamento de dados: banco de dados hospedado pela Occentus Networks (UE)
  6. Direitos: A qualquer momento você pode limitar, recuperar e excluir suas informações.