Go 1.22 já foi lançado, conheça seus novos recursos e melhorias

Golândia

Go é uma linguagem de programação compilada concorrente com tipagem estática inspirada na sintaxe C.

A nova versão de Go 1.22, chega seis meses após a versão 1.21, com uma série de mudanças notáveis ​​no conjunto de ferramentas, tempo de execução, melhorias de otimização, melhorias no compilador e bibliotecas.

Para quem não conhece o Go, devo dizer que este éÉ uma linguagem de programação desenvolvida pelo Google com a participação da comunidade como uma solução híbrida que combina o alto desempenho de linguagens compiladas com vantagens como linguagens de script como facilidade de escrever código, velocidade de desenvolvimento e proteção contra erros.

Notícias principais do Go 1.22

Nesta nova versão, introduzida a partir do Go 1.22, destaca duas mudanças nos loops "for"Como Anteriormente, as variáveis ​​declaradas por um loop for eram criadas uma vez e foram atualizados em cada iteração. No Go 1.22, cada iteração do loop cria novas variáveis para evitar erros acidentais de compartilhamento, além Adicionado suporte experimental (GOEXPERIMENT=rangefunc) para funções de intervalo para loops for, que permite especificar uma função como um iterador e resolveu um problema antigo com loops for o que fez com que chamadas de rotina compartilhassem variáveis ​​de loop entre iterações. Além disso, os loops for agora podem percorrer números inteiros. Por exemplo:

package main import "fmt" func main() { for i := range 10 { fmt.Println(10 - i) } fmt.Println("go1.22 decola!") }

Outra mudança notável nesta nova versão é a introdução do capacidade de usar um diretório «fornecedor« que contém as dependências do espaço de trabalho. Agora os comandos você pode usar este diretório, que é criado com `vá trabalhar vendedor` e é usado em comandos de construção quando `está definido-mod` em «fornecedor«, sendo este o valor padrão quando existe um diretório «fornecedor» no espaço de trabalho.

É importante observar que a funcionalidade do `vai pegar`não é mais suportado fora de um módulo no modo GOPATO herdado No entanto, outros comandos de construção como `vá construir` e `vá testar` Eles continuarão a trabalhar indefinidamente para programas legados do GOPATH. Além disso, o comando `vá para inicialização do mod` não tentará mais importar requisitos de módulo de arquivos de configuração de outros «“venda” (como Gopkg.lock).

Go 1.22 apresenta um novo pacote io/inseguro que fornece funcionalidade para trabalhar com ponteiros e memória insegura. Este pacote fornece métodos para converter ponteiros de e para tipos seguros e não seguros, bem como para realizar operações de cópia de memória sem verificação de limites.

O trabalho continuou para incluir otimizações no compilador com base nos resultados do pPerfil de código PGO, e é que agora o compilador usa ferramentas de desvirtualização para substituir chamadas indiretas de vários métodos com execução de bloco in-line expandido. Quando o PGO foi habilitado, a mudança adicionada melhorou o desempenho da maioria dos programas em 2% a 14%.

Na versão de Opte pelo Windows, programas que vinculam ou carregam bibliotecas Vá construído com -buildmode=c-archive o -buildmode=c-compartilhado agora pode usar a API Event Logging Windows (ETW) através dos novos pacotes tempo de execução/rastreamento y gancho de rastreamento, que implementa o protocolo de coleta de rastreamento de eventos Go como um provedor de ETW.

Das outras mudanças que se destacam:

  • Comando vá testar -capa agora imprime resumos de cobertura para pacotes cobertos que não possuem seus próprios arquivos de teste.
  • sistema operacional/exec, foi adicionada a capacidade de definir atributos de contexto, permitindo definir valores como diretório de trabalho, variáveis ​​de ambiente e descritor de arquivo de entrada/saída para comandos executados.
  • Gerenciamento de memória otimizado em tempo de execução, resultando em um aumento de desempenho de 1 a 3% e uma redução de 1% no consumo de memória para a maioria dos aplicativos.
  • O pacote net / http, a função foi adicionada CloseIdleConnections para o cliente HTTP, que fecha todas as conexões ociosas que o cliente usou recentemente
  • Uma implementação experimental melhorada (GOEXPERIMENT=newinliner) do mecanismo de inserção de chamadas foi adicionada ao compilador, que utiliza heurística para separar operações importantes das não importantes.
  • O pacote foi adicionado » matemática/rand/v2 » à biblioteca padrão, que oferece uma API mais consistente e utiliza algoritmos mais rápidos para gerar números pseudoaleatórios.
  • O pacote net/http.ServeMux Adicionada a capacidade de especificar métodos e máscaras em modelos.

Finalmente, se você estiver interessado em saber mais sobre o assunto, você pode verificar os detalhes no link a seguir.


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.