Python 3.15

Python 3.15 traz ganhos de desempenho e recursos novos notáveis, incluindo um JIT experimental aprimorado, lazy imports explícitos para inicialização mais rápida, um novo profiler de amostragem (“tachyon”), desempacotamento em comprehensions e um tipo `frozendict` embutido. Contribuidores destacam a nova ABI estável abi3t para a build sem GIL como um grande avanço para facilitar a compatibilidade binária entre variantes do interpretador, reduzindo a complexidade de empacotamento e CI. Grande parte do debate gira em torno das políticas de suporte a versões, com mantenedores satisfeitos por poder abandonar interpretadores em fim de vida enquanto usuários em sistemas antigos temem quebras e a necessidade crescente de gerenciar runtimes Python separados fora do que o sistema operacional inclui.

Página de lançamento e peculiaridades da distribuição

  • Alguns usuários relatam links quebrados ou mal ancorados na página de lançamento da 3.15 (por exemplo, Sentinel, lazy imports apontando para o final da página).
  • O tarball fonte do xz é notavelmente maior do que o da 3.14; a investigação aponta para cerca de 10 MB de GIFs animados na documentação (para o profiler Tachyon).
    • Alguns veem isso como um inchaço desnecessário e prefeririam documentação leve baseada em SVG.
    • Outros argumentam que os críticos deveriam contribuir com ativos melhores em vez disso.

Desempenho, JIT e profiling

  • Os ganhos de 7–12% de velocidade relatados pelo JIT experimental (dependendo da plataforma) são recebidos como ganhos incrementais sólidos.
  • O novo profiler de amostragem Tachyon é destacado como especialmente útil para fazer profiling de processos em execução em produção.

Lazy imports e inicialização

  • Os lazy imports explícitos da PEP 810 geram entusiasmo, especialmente para aplicações grandes ou sensíveis ao tempo de inicialização.
  • Alguns perguntam por que isso não é habilitado globalmente; as respostas apontam para:
    • Efeitos colaterais no momento do import (por exemplo, registries) e ordem de importação não determinística.
    • A PEP 810 documenta explicitamente esses trade-offs.
  • É mencionado um analisador estático (“lifeguard”) que varre o código para identificar onde é seguro habilitar lazy imports.

Suporte a versões, empacotamento e Python do sistema operacional

  • Os mantenedores acolhem a 3.15 principalmente porque a 3.10 agora está em EOL, liberando-os para depender de recursos da 3.11+.
  • Debate:
    • Os mantenedores argumentam que suporte indefinido a versões antigas é irrealista; os usuários podem permanecer em versões mais antigas dos pacotes, e os metadados garantem que o pip escolha uma versão compatível.
    • Alguns usuários desaprovam a norma de “abandonar” Pythons antigos quando eles ainda são distribuídos por distros ou fornecedores.
  • Distros corporativas/Linux frequentemente sobrevivem ao suporte upstream do Python, mas fornecem interpretadores mais novos em fluxos paralelos.
  • O Python fixado/incluído no macOS (3.9 via Xcode) é visto como ultrapassado e confuso; o consenso é evitar o Python do sistema e usar ambientes gerenciados (por exemplo, uv, virtualenvs).

Tipagem, IA e desempenho

  • Um comentarista afirma que LLMs têm melhor desempenho em Python sem tipos e que anotações podem ser “ruído” dado que a maior parte dos dados de treino não é tipada.
  • Outros contrapõem que:
    • O desempenho em tempo de execução não se beneficia hoje das anotações.
    • Os tipos ainda são cruciais para clareza humana, correção e código de nível profissional.

Python sem GIL e abi3t

  • A nova ABI estável “abi3t” para a build sem GIL é elogiada como um grande habilitador do ecossistema.
    • Exemplo: algumas bibliotecas importantes já distribuem uma única wheel utilizável tanto por builds com GIL quanto por builds sem GIL na 3.15+.
  • Os mantenedores observam grandes reduções de CI ao usar ABIs estáveis e antecipam um suporte futuro mais fácil entre versões.
  • Persistem questões sobre quais APIs C serão promovidas para a superfície limitada/abi3(t).

Recursos da linguagem e PEPs

  • Vários recursos pequenos, mas há muito desejados, recebem atenção positiva:
    • Desempacotamento em comprehensions (PEP 798).
    • frozendict embutido (PEP 814).
    • UTF-8 como codificação padrão em todas as plataformas (PEP 686), especialmente benéfico no Windows e em containers mal configurados.
  • Alguns usuários se surpreendem por UTF-8 ainda não ser o padrão universal, refletindo um comportamento anterior sutil (dependente do locale).

Ecossistema da linguagem e debate sobre Rust

  • Um subfio especula que apenas TypeScript/JavaScript, Rust e Python irão “sobreviver”, com reescritas em larga escala para Rust (incluindo alguns exemplos do mundo real).
  • Outros rebatem:
    • Apontam que ecossistemas consolidados (C, C++, Java, C#, Swift, Kotlin, COBOL, C embarcado) dificilmente desaparecerão.
    • Observam que o núcleo do CPython não está sendo reescrito em Rust; os esforços atuais apenas exploram permitir alguns componentes em Rust.
  • Alguns argumentam que menos linguagens seria bom; outros preferem diversidade e inovação contínuas, especialmente com ferramentas de IA.