BT

Dropbox anuncia o Pyston: uma nova implementação Python baseada em compilação JIT

por Ivo La Puma em 28 Mai 2014 |

A Dropbox anunciou recentemente em seu blog técnico que está desenvolvendo o Pyston, uma nova implementação em código-aberto da linguagem Python. O objetivo do Pyston é ser uma implementação de alta performance e ajudar a empresa a atingir suas metas de desempenho impossíveis de alcançar com o Python.

A necessidade de desenvolver o Pyston surgiu porque o Python é muito utilizado dentro da Dropbox. Entretanto, o código Python acabava sendo reescrito em outra linguagem em algumas situações, devido às necessidades de performance que eram exigidas quando o projeto era escalado.

Kevin Modzelewski, engenheiro de software da empresa sediada em São Francisco, explica como surgiu a ideia de desenvolver o Pyston:

Após abandonar algumas experiências com compilação estática, nós percebemos como as técnicas de compilação just-in-time (JIT) têm sido aplicadas com sucesso no mundo JavaScript: o V8 do Chrome, em particular, aumentou consideravelmente o status quo da performance do JavaScript. Nossa esperança é que ao usar técnicas semelhantes (de compilação JIT), consigamos alcançar resultados parecidos na performance do Python.

Apesar de já existirem implementações Python - como por exemplo o PyPy, o Jython e o IronPython - que usam técnicas de compilação JIT sofisticadas, o Pyston é diferente porque o seu desenvolvimento é baseado na maioria das promissoras técnicas JIT que são incompatíveis com essas implementações. Por exemplo, o mundo JavaScript já trocou as técnicas de rastreamento JIT, utilizadas no PyPy, por técnicas method-at-a-time JIT devido aos seus benefícios na performance.

Sobre se o Pyston será bem sucedido, Kevin Modzelewski comenta:

Se as mesmas vantagens de performance se manterão ou não com o Python é uma questão em aberto, mas uma vez que as duas abordagens (de técnicas JIT) são fundamentalmente incompatíveis, a única maneira de começar a responder essa questão é construir (uma nova implementação baseada) em method-at-a-time JIT."

Outro ponto de diferenciação do Pyston é o uso planejado de um garbage collector conservativo para apoiar eficientemente os módulos de extensão. Além disso, o Pyston está sendo construído em cima da Low Level Virtual Machine (LLVM), uma infraestrutura de compilação escrita em C++ projetada para realizar otimizações em tempo de compilação, execução e "ociosidade" de programas escritos em qualquer linguagem.

O estado atual do Pyston

O desenvolvimento do Pyston ainda está no início, apenas um conjunto mínimo da linguagem Python é suportado. Por conta disso, as avaliações de desempenho também não são possíveis, ainda falta dar suporte a um conjunto maior de benchmarks para ser representativo e ainda falta dar suporte a todos os recursos em tempo de execução do Python. Por enquanto, o Pyston é capaz de superar o desempenho do CPython, mas ainda está atrás do PyPy.

A versão 0.1 do Pyston está disponível desde 4/2/2014. Por enquanto, é compatível somente com o Python 2.7, roda somente em plataformas x86_64 e foi testado somente no Ubuntu. Contudo, a compatibilidade com outras plataformas e com o Python 3 está planejada para o futuro.

Para a versão 0.2, está planejada a implementação dos seguintes recursos:

  • Exceções;
  • Herança de classes e metaclasses;
  • Argumentos default, keywords, *args e **kwargs;
  • Closures;
  • Generators;
  • Integer promotion.

O código-fonte e demais informações do projeto estão disponíveis no Github sob a licença Apache 2.0. Além disso, é possível contribuir para o Pyston, basta assinar o Acordo de Licença de Contribuinte Dropbox. Para acompanhar o progresso do projeto, existe também uma lista de notícias em que é possível se inscrever.

Olá visitante

Você precisa cadastrar-se no InfoQ Brasil ou para enviar comentários. Há muitas vantagens em se cadastrar.

Obtenha o máximo da experiência do InfoQ Brasil.

Dê sua opinião

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão
Comentários da comunidade

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão

Dê sua opinião

Conteúdo educacional

Feedback geral
Bugs
Publicidade
Editorial
InfoQ Brasil e todo o seu conteúdo: todos os direitos reservados. © 2006-2014 C4Media Inc.
Política de privacidade
BT