O Google solucionou as limitações de concorrência introduzidas pelo Global Interpreter Lock existente no CPython criando um novo runtime de Phyton em Go.
Na prática, o Google usa Python no front-end do YouTube e para executar APIs no CPython 2.7, a implementação de referência dos interpretadores dessa linguagem. Como o código cresceu para milhões de LoC no decorrer dos anos, tendo servido-os bem após ajustes de performance no runtime, eles se viram diante de um problema recorrente: “É muito difícil executar tarefas simultâneas com boa performance no CPython”, afirmou o Google.
Após procurar soluções alternativas, o Google resolveu executar código Python no runtime do Go devido ao seu forte suporte para concorrência. Assim, o projeto Grumpy e, com ele, é possível utilizar trans-compile código Python em Go que então é o compilado em código nativo baseado na plataforma de destino. O código intermediário Go é uma série de operações aplicadas em estruturas de dados representando objetos Python.
[awprm urls=https://imasters.com.br/noticia/google-libera-integracao-do-zipkin-com-stackdriver-trace/,https://imasters.com.br/noticia/google-comeca-testar-android-instant-apps-com-alguns-devs/]
Devido ao uso de compilação, o Grumpy reduz um pouco da liberdade de desenvolvimento e poder de uma linguagem interpretada, mas o Google alega que essas perdas são compensadas por melhor otimização através de análises estáticas e a habilidade de usar pacotes Go através de simples importações.
Além disso, o Grumpy não suporta algumas funções dinâmicas disponíveis em CPython: exec, eval e compile. O suporte para essas funções exigiria “agrupamento de programas Grumpy com compilações toolchain, o que seria pesado e impraticavelmente lento”. Apesar de teoricamente possível, o time do Grumpy diz que eles também não planejam o suporte para módulos de extensão C porque “o Grumpy tem uma API e estrutura de objetos diferente que CPython”.
Conforme o site InfoQ, o Google está tentando tornar o Grumpy um substituto para o CPython 2.7. Alguns gostariam de ver Grumpy suportando Phyton 3.x no futuro. Segundo Dylan Trotter, Staff Software Engineer no YouTube, “nós temos uma ampla base de código Python 2.7, então é nisso que estamos focando. Eu definitivamente gostaria de apoiar o Python 3”.
O Google abriu o código fonte do Grumpy no GitHub sob a licença Apache 2.0 e convida os desenvolvedores a comentarem e contribuírem ao projeto. Um fórum também foi criado para esse propósito.