Em 12 de outubro de 2026, Simon Willison publicou em seu blog uma leitura detalhada da chegada do Python 3.15, versão já liberada para download no site oficial da linguagem. O autor, que mantém projetos de código aberto compatíveis com todas as versões suportadas do interpretador, descreve a novidade como um marco duplo: é hora de dizer adeus ao Python 3.10 e começar a abraçar recursos que surgiram no Python 3.11.
O guia oficial de novidades desta versão foi curado por Hugo van Kemenade, release manager das séries 3.14 e 3.15.
Imports preguiçosos contra o custo de partida
O recurso que mais entusiasma Willison são os imports preguiçosos explícitos, definidos pela PEP 810. Com a sintaxe lazy from pathlib import Path, o módulo só é carregado na primeira vez que um de seus símbolos é usado no código que vem depois.
A motivação é prática: sua ferramenta de linha de comando LLM trabalha com plugins, e instalar plugins que dependem de bibliotecas pesadas, como sentence_transformers, podia acrescentar vários segundos a cada execução do comando LLM. A documentação para autores de plugins precisava recomendar imports preguiçosos manuais justamente para evitar esse custo de inicialização.
Agora o próprio interpretador resolve o problema.
Unpacking em comprehensions e um profiler de amostragem
Outra novidade destacada é a sintaxe de unpacking em comprehensions, [*sublist for sublist in lists], proposta pela PEP 798, de autoria de Adam Hartz e Erik Demaine. Ela estende o mecanismo de unpacking da PEP 448, que chegou ao Python 3.5 em 2015.
Na prática, listas, conjuntos e dicionários podem ser achatados em uma única expressão. Na área de diagnóstico, o antigo cProfile foi renomeado para profiling.tracing e ganhou um companheiro: o profiler estatístico Tachyon, disponível como profiling.sampling.
Ele funciona capturando periodicamente stack traces de processos em execução e calculando em quais funções o tempo é mais gasto, com sobrecarga baixa e sem exigir instrumentação prévia do sistema. Willison conta que antes recorria a ferramentas externas como o py-spy; agora o recurso faz parte da biblioteca padrão.
Com o PID de um processo 3.15, basta rodar sudo uv run --Python 3.15 Python -m profiling.sampling attach 1234, interagir com o programa e encerrar com Ctrl+C para ver o relatório, que também pode sair em flame graphs, heat maps ou no formato do profiler do Firefox.
Desempenho praticamente estável
Nem tudo é ganho de velocidade. Miguel Grinberg investigou o desempenho do Python 3.15 tomando como base a release candidate 3.15.0rc3 e concluiu que a performance é em grande parte igual à do Python 3.14, com exceção do JIT experimental. O JIT entregou um ganho de 1,2 vez sobre o interpretador padrão da 3.15 em um teste com a sequência de Fibonacci, a primeira vez que Miguel observa um aumento de desempenho relevante vindo do JIT.
No ano anterior, seus testes com o Python 3.14 haviam mostrado ganhos expressivos em relação ao Python 3.13 em um número maior de categorias.
Como migrar com uv
Willison documenta o roteiro que usou no Mac para colocar o uv na versão 3.15. Primeiro, atualizou o próprio uv para que ele reconhecesse o lançamento; em seguida instalou a versão estável e definiu o padrão global com uv Python pin --global 3.15, válido para todo comando uv run, a menos que o projeto fixe outra versão.
Ferramentas instaladas via uv tool install foram reinstaladas com uv tool upgrade datasette --Python 3.15, e a confirmação veio pelo comando datasette --get /-/versions.json | jq.
Por que isso importa
Para quem distribui bibliotecas e sustenta ecossistema, o ciclo de vida do Python define decisões práticas: deixar a 3.10 para trás libera o uso de recursos da 3.11, e adotar a nova versão estável abre espaço para imports preguiçosos e diagnóstico embutido. O saldo é menos dependência de ferramentas externas de profiling e um caminho mais simples para reduzir o tempo de inicialização de aplicações, um problema sentido por qualquer CLI que carregue dependências pesadas de IA.
Fontes e links
- Simon Willison
- PEP 810: Explicit lazy imports
- PEP 798: Unpacking in Comprehensions
- What's new in Python 3.15







