Python 3.13

Python 3.13 ainda não foi oficialmente lançado. Algumas versões de preview já estão circulando há algum tempo. A previsão de lançamento é para 7 de outubro. Porém, a versão prerelease esta liberada aqui. Além disso, as novidades programadas já estão sendo divulgadas e serão o tema deste post.
O Python 3.13 será a próxima versão estável da linguagem de programação Python. Esta versão mudará significativamente a linguagem, sua implementação e a biblioteca padrão. As atualizações mais notáveis incluem um novo interpretador interativo, suporte experimental para execução em um modo de thread livre e a introdução de um compilador Just-In-Time.
Compilador Just-In-Time
No Python 3.11, foi introduzido o Interpretador Adaptativo Especializado (Specializing Adaptive Interpreter). Ele permite ao interpretador identificar operações que envolvem consistentemente os mesmos tipos. Em seguida, ele “especializa” essas operações. Isso significa que o bytecode genérico usado para elas é substituído por bytecode especificamente adaptados. A alteração resulta em melhorias de desempenho de 10% a 25% para essas partes do código.
O Python 3.12 trouxe novos aprimoramentos para o interpretador, introduzindo mais especializações e refinamentos.
Dando sequência à série, o Python 3.13 agora inclui novos componentes no compilador Just-In-Time (JIT). Eles conseguem gerar códigos de máquina real em tempo de execução, em vez de apenas bytecodes especializados. Embora a aceleração desse novo recurso seja atualmente em torno de 5%, ela prepara o terreno para futuras otimizações.
No momento, o JIT continua no estágio experimental. Ele não é ativado por padrão. Ele só pode ser ativado compilando o CPython a partir do código-fonte com sinalizadores específicos. Se o compilador JIT comprovar que fornece um aumento substancial de desempenho de 5% ou mais ao longo do tempo, poderá se tornar uma opção de compilação totalmente suportada.
Compilação 'free-threaded'
O termo usado para descrever possíveis versões futuras do CPython que não possuem o Global Interpreter Lock (GIL) é CPython de thread livre. Esta versão específica do CPython permite que os threads sejam executados simultaneamente sem a necessidade de mediação do GIL. Como resultado, as tarefas vinculadas à CPU, que anteriormente só se beneficiavam da execução em vários processos, agora podem ser executadas em vários threads.
É importante observar que o CPython de thread livre continua em fase experimental. Ele não é habilitado por padrão. Portanto, ele requer a habilitação em tempo de compilação.
Se as compilações de thread livre demonstrarem que aprimoram o desempenho multithread sem afetar o desempenho de thread único, elas poderão ser atualizadas para uma opção com suporte total. Eventualmente, a compilação de thread livre do CPython pode até se tornar a opção padrão.
Interpretador interativo mais poderoso
O Python 3.13 usa um novo shell interativo por padrão. Os seguintes novos recursos agora são suportados:
Edição multilinha com preservação do histórico.
Suporte direto para comandos específicos do REPL, como help, exit e quit, sem a necessidade de chamá-los como funções.
Prompts e tracebacks com cores ativadas por padrão.
Ajuda interativa para navegar usando F1 com um histórico de comandos separado.
Navegação no histórico usando F2 que pula a saída.
- “Modo de colagem” com F3 que facilita a colagem de blocos maiores de código.
Melhores mensagens de erro
Seguindo o padrão já observado em versões anteriores, a nova versão do Python 3.13 terá mensagens de erros melhores. Entre as melhorias estão tracebacks sendo destacados em cores por padrão.
O interpretador agora usa cores por padrão ao exibir tracebacks no terminal. Esse recurso pode ser controlado por meio da nova variável de ambiente PYTHON_COLORS, bem como das variáveis de ambiente canônicas NO_COLOR e FORCE_COLOR.
Além disso, o comportamento do builtin locals() terá semântica definida para modificar o mapeamento retornado.
Remoção de módulos obsoletos
As atualizações do Python 3.13 também envolvem a remoção de APIs e módulos obsoletos. Notavelmente, vários módulos de biblioteca padrão foram removidos após serem descontinuados no Python 3.11. Para obter detalhes abrangentes, é recomendável consultar a documentação, incluindo a Referência da Biblioteca e a Referência de Idioma.
Para conhecer as novidades do Python 3.13 na prática, você pode baixar a versão de prerelease ou esperar até segunda para a grande estreia se tudo correr como planejado.