[Rafael Carício] Finalmente entendi o PyPy

Olá pessoal, depois de muito tempo sem postar nada aqui estou voltando a escrever alguma coisa. Espero começar a escrever mais por aqui. Vou tentar.

Como muitos sabem, eu curto muito essa parte de implementação de compiladores e interpretadores e etc. E sempre que posso fico lendo coisas legais sobre este assunto. Recentemente Bernardo Heynemann me enviou um post de um cara que estava implementando sua própria linguagem. O autor (Laurence Tratt) percebeu que precisava melhorar ainda mais a performance dessa linguagem, porém escrever um JIT do zero é uma tarefa muito complicada e trabalhosa. Foi ai que Laurence Tratt se deparou com o PyPy e resolveu (depois de alguns testes e estudos) portar a implementação de sua linguagem para o PyPy e obteve ganhos de performance absurdos. Se quiser mais detalhes, é melhor ler o post. O que eu quero destacar aqui é que durante a leitura do post eu entendi, finalmente, o projeto PyPy.

Afinal o que é o PyPy?

Muitas pessoas tentaram me explicar alguns anos atrás, mas só agora que caiu a ficha. O PyPy tem como objetivo ser uma implementação alternativa mais rápida do interpretador da linguagem Python (versão 2.7.2) o CPython. Só que as pessoas sempre me vendiam o PyPy como a implementação de Python em Python. Eu nunca entendia isso direito e deixava pra lá. Até o belo dia em que eu li aquele post e parei para realmente entender. O PyPy (de forma bem abstrata) é um nome para dos projetos diferentes mas que sevem para solucionar um problema: criar uma implementação mais rápida da linguagem Python. São eles:

  • RPython Toolchain - um projeto para implementação de linguagens dinâmicas que usa como DSL um subset da linguagem Python que é chamado de RPython. Seve para implementar interpretadores para qualquer linguagem de programação usando RPython. Essa implementação é usada para gerar código nativo (muito) otimizado.
  • Uma implementação da linguagem Python - esta implementação é compatível com a versão 2.7.2 do CPython e este interpretador é escrito em RPython.

Devido a o nome PyPy se referir a estes “dois” projetos. Muita gente se confunde, e muito, sobre o que é o PyPy (assim como eu). O que eu achei mais interessante depois deste entendimento é que eu posso usar o RPython para implementar interpretadores para qualquer linguagem que eu quiser e com isso ganhar até um JIT de brinde para esta nova linguagem.

O que estou fazendo agora é estudando melhor o RPython para usar-lo em um projeto de linguagem de programação que quero fazer. Estou bastante motivado a fazer isso e espero postar resultados dessa brincadeira por aqui em breve. Para maiores dúvidas e detalhes sobre o PyPy a documentação pode ser encontrada aqui.