Dois anos de retrospectiva do compilador JIT do CPython: estado atual, frustrações e futuro
(fidget-spinner.github.io)Uma retrospectiva e análise sinceras de um desenvolvedor que participou por mais de dois anos do desenvolvimento do compilador JIT (Just-In-Time) do CPython.
Este texto compartilha o estado atual do projeto com base na experiência dos últimos 2 a 3 anos de um desenvolvedor que contribuiu de forma central para o compilador JIT do CPython, especialmente na parte de otimização (optimizer).
Pontos positivos: crescimento orientado pela comunidade e formação
- Construção da comunidade: no início, um pequeno número de desenvolvedores liderava o projeto, mas agora ele é operado de forma centrada na comunidade, apesar da dissolução da equipe Faster CPython da Microsoft. Novos contribuidores centrais, como Savannah, Tomáš e Diego, se juntaram ao projeto, e esse foi um esforço intencional para garantir a sustentabilidade de longo prazo do projeto JIT.
- JIT ensinável: o JIT foi projetado para que novos contribuidores, mesmo sem conhecimento especializado em compiladores, possam aprender e contribuir com facilidade. Por exemplo, a adoção da abordagem de "tracing JIT" reduziu a barreira de entrada, pois ela pode ser compreendida por meio da análise estática de um único bloco básico, em vez de um grafo completo e complexo de fluxo de controle.
Pontos frustrantes: desempenho e cobertura incorreta da imprensa - Problemas de desempenho: falando francamente, o JIT do CPython 3.13 é lento. Quando compilado com um compilador moderno (Clang 20), em muitos casos o JIT é mais lento que o interpretador; só ao usar um compilador mais antigo (GCC 11) ele finalmente mostra desempenho semelhante. A versão 3.14 também não trouxe ganhos revolucionários de desempenho, porque o foco esteve na formação de novos contribuidores e na expansão da análise de tipos existente. O autor acredita que priorizar a formação de talentos no longo prazo foi a escolha mais correta do que buscar ganhos imediatos de desempenho.
- Cobertura imprecisa da imprensa: no início, a imprensa noticiou que o JIT era "2-9% mais rápido" que o interpretador, mas isso não corresponde aos fatos. Esse número veio de uma comparação com o "interpretador tier 2", muito lento, que executa a representação intermediária (IR) do JIT, e não com o interpretador real do CPython. Isso levou usuários a criarem expectativas equivocadas sobre o JIT, e como na prática muitos casos acabavam sofrendo queda de desempenho, o autor relata ter sentido grande frustração.
Conclusão e perspectivas futuras
O autor continua otimista em relação ao JIT. Uma comunidade forte foi construída, e atualmente vários trabalhos de otimização estão avançando em paralelo. Espera-se que esses esforços tragam, na versão 3.14, melhorias de velocidade de um dígito percentual na média geométrica dos benchmarks.
O autor conclui o texto com uma visão positiva, dizendo que "se realmente houvesse um problema 'feio' (ugly), eu já não estaria mais trabalhando no JIT", e que o projeto continuará evoluindo com a força da comunidade.
Ainda não há comentários.