BT

Disseminando conhecimento e inovação em desenvolvimento de software corporativo.

Contribuir

Tópicos

Escolha a região

Início Notícias Google Resolve Problemas de Concorrência do CPython com Grumpy

Google Resolve Problemas de Concorrência do CPython com Grumpy

O Google resolveu as limitações de concorrência introduzidas pelo Global Interpreter Lock existente no CPython criando um novo runtime de Phyton em Go.

O Google utiliza Python no front-end do Youtube e para executar APIs no CPython 2.7, a implementação de referência dos interpretadores desta linguagem. O código cresceu para milhões de LoC no decorrer dos anos, e geralmente os serviu bem depois de ajustes de performance no runtime. Mas eles se depararam com um problema recorrente: "É muito difícil executar tarefas simultâneas com boa performance no CPython", de acordo com o Google.

Depois de investigar várias soluções alternativas, o Google decidiu executar código Python no runtime do Go devido ao seu forte suporte para concorrência. O projeto Grumpy nasceu. Com o Grumpy é 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.

Devido ao uso de compilaçã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.

Outro efeito da compilação estática é que Grumpy não suporta - e "provavelmente nunca irá suportar" - algumas funções dinâmicas disponíveis em CPython: exec, eval e compile. O suporte a essas funções iria requerer "agrupamento de programas Grumpy com compilações toolchain, o que seria pesado e impraticavelmente lento". Apesar de teoricamente possível, o time Grumpy diz que eles também não planejam suportar módulos de extensão C porque "o Grumpy tem uma API e estrutura de objetos diferente que CPython".

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. Respondendo a uma pergunta apoiando Python 3, Dylan Trotter, Staff Software Engineer no Youtube, disse "Nós temos uma ampla base de código Python 2.7, então é nisso que estamos focado. Eu definitivamente gostaria de apoiar o Python 3". Ele também disse em um outro tópico "Não há planos concretos para Python 3 em um futuro próximo, mas a longo termo eu definitivamente quero apoiar isso".

O Google abriu o código fonte do Grumpy no GitHub com a licença Apache 2.0, convidando os desenvolvedores a comentarem e contribuírem ao projeto. Um fórum também foi criado para esse propósito.

Avalie esse artigo

Relevância
Estilo/Redação

Conteúdo educacional

BT