Python 3.15 chega à versão estável com imports preguiçosos, frozendict e UTF-8 como padrão
Versão final saiu em 9/10 com lazy imports, frozendict, JIT mais rápido e UTF-8 como padrão, o que pode afetar código que lê arquivos sem encoding.
O Python 3.15.0, nova versão estável da linguagem, foi lançado em 9 de outubro de 2026. Segundo o anúncio no blog oficial, assinado pelo gerente de lançamento Hugo van Kemenade, o ciclo reuniu 5.643 commits de 1.012 colaboradores desde o 3.14. A versão traz recursos aguardados há anos, como imports preguiçosos e um dicionário imutável nativo, e uma mudança de comportamento que pede atenção: o UTF-8 passa a ser a codificação padrão.
Os principais recursos
- Imports preguiçosos (PEP 810): com a nova palavra-chave
lazy, como emlazy import json, o módulo só é carregado no primeiro uso. Vale apenas no escopo do módulo e pode ser ligado globalmente com-X lazy_importsou a variávelPYTHON_LAZY_IMPORTS. O ganho esperado é no tempo de inicialização de ferramentas de linha de comando e aplicações grandes. frozendict(PEP 814): novo tipo embutido de dicionário imutável e com hash, útil como chave ou valor padrão seguro. Não é subclasse dedict.- Sentinelas (PEP 661): a função embutida
sentinel()cria valores únicos para indicar ausência de argumento, substituindo o improviso comobject(). - Desempacotamento em compreensões (PEP 798): passa a ser possível usar
*e**dentro de list, set e dict comprehensions. - Novo pacote
profiling(PEP 799), com o perfilador por amostragem Tachyon, de baixo impacto, que pode se ligar a processos em execução. O antigo móduloprofilefoi descontinuado e sai no 3.17.
Na tipagem, chegam TypedDict fechado (PEP 728), TypeForm (PEP 747) e guardas de tipo disjuntas (PEP 800). O compilador JIT experimental também avançou: segundo as notas da versão, ele é cerca de 7% a 8% mais rápido que o interpretador padrão em Linux x86-64 e 11% a 12% em macOS com AArch64, na média geométrica do pyperformance, com variação que vai de 15% mais lento a mais de 100% mais rápido, conforme a carga.
O que pode quebrar
A mudança mais sensível é a PEP 686: funções como open() passam a usar UTF-8 quando nenhuma codificação é informada, em vez da codificação do sistema. Em Linux e macOS quase nada muda, mas em Windows código que lê arquivos sem encoding pode passar a se comportar de outro jeito. O comportamento antigo volta com PYTHONUTF8=0 ou -X utf8=0, e a recomendação oficial é informar a codificação explicitamente. O aviso opcional de codificação (EncodingWarning, ligado com -X warn_default_encoding, disponível desde o 3.10) ajuda a encontrar os pontos afetados.
- Removidos:
CGIHTTPRequestHandler, os métodosload_module()de importadores e os módulossre_compile,sre_constantsesre_parse, entre outros itens descontinuados. - Linhas de
importem arquivos.pthforam descontinuadas em favor dos novos arquivos.start(PEP 829). - O coletor de lixo incremental foi revertido para o modelo geracional, mudança também levada ao 3.14.5.
- No Windows de 64 bits, os instaladores oficiais usam o interpretador com tail calls; no macOS, o instalador passa a incluir por padrão a versão sem GIL (free-threaded), que ganha uma ABI estável própria, a
abi3t(PEP 803). Frame pointers vêm ligados por padrão (PEP 831), o que facilita perfiladores externos.
A página de download traz um alerta: no macOS 27.0, aplicações com tkinter, incluindo o IDLE, podem travar, problema registrado na issue #158053 do CPython. O lançamento foi repercutido pelo Phoronix. Para quem mantém bibliotecas, o caminho prático é rodar a suíte de testes no 3.15 com avisos de codificação ligados antes de anunciar compatibilidade.
Fontes
- Python Software Foundation — Python 3.15.0 (página de lançamento) (09/10/2026)
- Python Insider (blog oficial) — Python 3.15.0 final is here! (09/10/2026)
- Documentação do Python — What’s new in Python 3.15 (consultada em 10/10/2026)
- Phoronix — Python 3.15 Released With Experimental JIT Compiler Running Faster (09/10/2026)
Imagem destacada: ilustração gerada por computador, sem valor documental.


