Pyston-lite, compilador JIT para estoque Python introduzido

Os desenvolvedores do projeto Pyston, que oferece uma implementação de alto desempenho da linguagem Python usando modernas tecnologias de compilação JIT, apresentaram a extensão Pyston-lite com uma implementação do compilador JIT para CPython. Embora Pyston seja um ramo da base de código CPython e seja desenvolvido separadamente, Pyston-lite foi projetado como uma extensão universal projetada para se conectar ao interpretador Python padrão (CPython).

Pyston-lite permite que você use as tecnologias básicas do Pyston sem alterar o interpretador, instalando uma extensão adicional usando o gerenciador de pacotes PIP ou Conda. O Pyston-lite já está hospedado nos repositórios PyPI e Conda, e para instalar basta executar o comando "pip install pyston_lite_autoload" ou "conda install pyston_lite_autoload -c pyston". Dois pacotes são sugeridos: pyston_lite (JIT diretamente) e pyston_lite_autoload (faz substituição automática de JIT ao iniciar um processo Python). Também é possível controlar programaticamente a ativação do JIT de dentro do aplicativo sem instalar o módulo autoload, usando a função pyston_lite.enable().

Embora o Pyston-lite não cubra todas as otimizações disponíveis no Pyston, seu uso pode melhorar o desempenho em aproximadamente 10-25% em comparação com o Python 3.8 normal. No futuro, está planejado transferir a maioria das otimizações presentes no Pyston para o Pyston-lite, bem como expandir as versões suportadas do CPython (a primeira versão suporta apenas Python 3.8). Planos mais globais incluem a colaboração com a equipe CPython para implementar novas APIs para JIT, permitindo um controle mais completo sobre o trabalho do Python. A inclusão das mudanças propostas no branch Python 3.12 está sendo discutida. Idealmente, está sendo considerada a possibilidade de mover todas as funcionalidades do Pyston para a extensão, o que nos permitirá evitar a manutenção de nosso próprio fork CPython.

Além do Pyston-lite, o projeto também lançou uma atualização para o pacote completo Pyston 2.3.4, que oferece novas otimizações. No teste pyperformance, a versão 2.3.4 é mais rápida que a versão 2.3.3 em cerca de 6%. O ganho geral de desempenho comparado ao CPython é estimado em 66%.

Adicionalmente, podemos notar as otimizações desenvolvidas dentro do ciclo de desenvolvimento do CPython 3.11 no projeto principal, que em alguns testes permitiram aumentar o desempenho em 25%. Por exemplo, no CPython 3.11, a eficiência do cache do estado do bytecode dos módulos básicos foi aumentada, o que irá acelerar o lançamento de scripts em 10-15%. As chamadas de função foram significativamente aceleradas e foram adicionados intérpretes rápidos especializados de operações padrão. Também estão em andamento trabalhos para portar algumas otimizações preparadas pelos projetos Cinder e HotPy.

Além disso, dentro do projeto nogil, está em andamento um modo experimental de construção de CPython sem bloqueio de interpretador global (GIL, Global Interpreter Lock), que não permite acesso paralelo a objetos compartilhados de diferentes threads, o que impede a paralelização de operações em multi -sistemas centrais. Como outra solução para o problema do GIL, está sendo desenvolvida a capacidade de vincular um GIL separado a cada intérprete em execução em um processo (vários intérpretes podem estar em execução em um processo, mas a eficiência de sua execução paralela depende do GIL).

Fonte: opennet.ru

Adicionar um comentário