Python 3.11 chega com melhorias de desempenho, redesenho de cache e muito mais

Python

Python é uma linguagem de programação interpretada de alto nível cuja filosofia enfatiza a legibilidade de seu código.

Após um ano de desenvolvimento, a nova versão da linguagem de programação Python 3.11 foi publicada, o novo branch terá suporte por um ano e meio, após o qual os patches com vulnerabilidades serão formados por mais três anos e meio.

Ao mesmo tempo, o teste alfa do branch Python 3.12 começou (de acordo com o novo cronograma de desenvolvimento, o trabalho em uma nova ramificação começa cinco meses antes do lançamento da ramificação anterior e atinge o teste alfa no momento da próxima versão).

A ramificação do Python 3.12 estará em versões alfa por sete meses, durante os quais novos recursos serão adicionados e bugs corrigidos. Depois disso, os testes beta ocorrerão por três meses, durante os quais a adição de novos recursos será proibida e será dada total atenção às correções de bugs. Nos últimos dois meses antes do lançamento, a filial estará no estágio de candidato a lançamento, momento em que ocorrerá a estabilização final.

Principais novos recursos do Python 3.11

Nesta nova versão Um trabalho significativo foi feito para otimizar o desempenho, pois a nova ramificação inclui alterações relacionadas com aceleração e implantação em linha de chamadas de função, o uso de interpretadores rápidos de operações típicas, bem como otimizações elaboradas pelos projetos Cinder e HotPy. Dependendo do tipo de carga, a velocidade de execução do código aumenta entre 10% e 60%. Em média, o desempenho ao passar no conjunto de testes pyperformance aumentou 25%.

O mecanismo de cache foi redesenhado de bytecode, o que reduziu o tempo de inicialização do interpretador em 10-15%. Objetos com código e bytecode agora são alocados estaticamente pelo interpretador, o que possibilitou eliminar as etapas de desvendar o bytecode obtido do cache e converter objetos com código para colocá-los na memória heap.

Adicionado suporte para grupos de exceção, que dá ao programa a capacidade de gerar e processar várias exceções diferentes ao mesmo tempo. Novos tipos de exceção ExceptionGroup e BaseExceptionGroup são propostos para agrupar várias exceções, e a expressão "exceto*" é adicionada para separar exceções de um grupo.

Adicionado um tipo LiteralString especial que solo pode incluir strings literais compatíveis com o tipo LiteralString (ou seja, strings nuas e strings do tipo LiteralString, mas não strings arbitrárias ou mistas do tipo str). O tipo LiteralString pode ser usado para limitar a passagem de argumentos de string para funções, substituição arbitrária de partes de strings onde pode levar a vulnerabilidades, por exemplo, ao gerar strings para consultas SQL ou comandos de shell.

Além disso, também a capacidade de marcar elementos individuais de dicionários é fornecida (TypedDict) com os sinalizadores Required e Not Required para determinar os campos obrigatórios e opcionais (por padrão, todos os campos declarados são obrigatórios se o parâmetro total não estiver definido como Falso).

Adicionado o decorador de classe, método e função @dataclass_transform, quando especificado, o verificador de tipo estático trata o objeto como se estivesse usando o decorador @dataclasses.dataclass.

Das outras mudanças que se destacam nesta nova versão:

  • Adicionada a capacidade de usar agrupamento atômico ((?>…)) e quantificadores ciumentos (possessivo) (*+, ++, ?+, {m,n}+) em expressões regulares.
  • Foi adicionado o tipo TypeVarTuple, que permite o uso de genéricos de variáveis, ao contrário de TypeVar, que abrange não um tipo, mas um número arbitrário de tipos.
  • A biblioteca padrão inclui o módulo tomllib com funções para analisar o formato TOML.
  • O método add_note() foi adicionado à classe BaseException, que permite que uma nota de texto seja anexada à exceção, por exemplo, para adicionar informações contextuais que não estavam disponíveis no momento em que a exceção foi lançada.
  • Um tipo especial Self foi adicionado para representar a classe privada atual. Self pode ser usado para anotar métodos que retornam uma instância de sua classe de maneira mais simples do que usar TypeVar.
  • Adicionada a opção de linha de comando "-P" e a variável de ambiente PYTHONSAFEPATH para desabilitar a conexão automática de caminhos de arquivo potencialmente inseguros para sys.path.
  • O utilitário py.exe para a plataforma Windows foi significativamente aprimorado para oferecer suporte à sintaxe "-V:". / " além de "- . ».
  • Muitas macros da API C foram convertidas em funções inline regulares ou estáticas
  • Os módulos uu, cgi, pipes, crypt, aifc, chunk, msilib, telnetlib, audioop, nis, sndhdr, imghdr, nntplib, spwd, xdrlib, cgitb, mailcap, ossaudiodev e sunau foram descontinuados e serão removidos do Python. 3.13 lançamento.
  • Funções PyUnicode_Encode* removidas.
  • A classe TaskGroup foi adicionada ao módulo assíncrono com a implementação de um gerenciador de contexto assíncrono que aguarda a conclusão do grupo de tarefas.
  • A adição de tarefas a um grupo é feita usando o método create_task().

Finalmente se você estiver interessado em saber mais sobre isso, você pode verificar os detalhes em o seguinte link. 


Deixe um comentário

Seu endereço de email não será publicado. Campos obrigatórios são marcados com *

*

*

  1. Responsável pelos dados: Miguel Ángel Gatón
  2. Finalidade dos dados: Controle de SPAM, gerenciamento de comentários.
  3. Legitimação: Seu consentimento
  4. Comunicação de dados: Os dados não serão comunicados a terceiros, exceto por obrigação legal.
  5. Armazenamento de dados: banco de dados hospedado pela Occentus Networks (UE)
  6. Direitos: A qualquer momento você pode limitar, recuperar e excluir suas informações.