Go 1.22 lançado com novos recursos e melhorias

E foi lançada a linguagem Go 1.22 com mudanças de numeração, melhorias, e mais. Confira as novidades e veja como instalar no Linux.

Go (ou golang) é uma linguagem de programação inicialmente desenvolvido pelo Google. Ela é uma linguagem estaticamente tipada com sintaxe vagamente derivada de C.

GO é uma linguagem de programação que está se tornando cada vez mais popular entre os desenvolvedores e os administradores de sistemas. Ela é inspirada em C++ e possui binários para Windows, Linux e Mac OS, além de ser open source, sendo coberta pela licença BSD.

Agora, Go 1.22 foi lançado como uma atualização bastante significativa para esta popular e moderna linguagem de programação.

Novidades da linguagem Go 1.22

Go 1.22 lançado com novos recursos e melhorias
Go 1.22 lançado com novos recursos e melhorias

A nova versão do 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.

Nesta nova versão, introduzida a partir do Go 1.22, duas alterações nos loops for se destacam, já que anteriormente as variáveis ​​declaradas por um loop for eram criadas uma vez e atualizadas a cada iteração.

No Go 1.22, cada iteração do loop cria novas variáveis ​​para evitar erros acidentais de compartilhamento, e suporte experimental (GOEXPERIMENT=rangefunc) para funções de intervalo foi adicionado aos loops for, permitindo que uma função fosse especificada como um iterador e resolveu um problema de longa data com loops for que fazia com que chamadas de co-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 despega!")
}

Outra mudança notável nesta nova versão é a introdução da capacidade de usar um diretório “vendor” que contém as dependências do espaço de trabalho.

Os comandos agora podem usar este diretório, que é criado com `go work vendor` e usado em comandos de construção quando `-mod` está definido como “vendor”, sendo este o valor padrão quando existe um diretório “vendor”. » no espaço de trabalho .

É importante notar que a funcionalidade `go get` não é mais suportada fora de um módulo no modo GOPATH legado. No entanto, outros comandos de construção como `go build` e `go test` continuarão a funcionar indefinidamente para programas GOPATH legados.

Além disso, o comando `go mod init` não tentará mais importar requisitos de módulo de arquivos de configuração de outras ferramentas de fornecedores (como Gopkg.lock).

Go 1.22 apresenta um novo pacote io/unsafe 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 perfil do código PGO, e o compilador agora usa ferramentas de desvirtualização para substituir chamadas indiretas de vários métodos pela execução de blocos embutidos expandidos.

Quando o PGO foi habilitado, a mudança adicionada melhorou o desempenho da maioria dos programas em 2% a 14%.

Na versão Windows do Go, os programas que vinculam ou carregam bibliotecas Go criadas com -buildmode=c-archive ou -buildmode=c-shared agora podem usar a API Event Logging Windows (ETW) por meio dos novos pacotes runtime/trace e tracehook, que implementam o protocolo de coleta de rastreamento de eventos Go como um provedor ETW.

Das outras mudanças que se destacam no Go 1.22, temos:

  • O comando go test -cover agora imprime resumos de cobertura para pacotes cobertos que não possuem seus próprios arquivos de teste.
  • os/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 aumento de desempenho de 1% a 3% e redução de 1% no consumo de memória para a maioria dos aplicativos.
  • O pacote net/http , a função CloseIdleConnections foi adicionada  ao 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 » math/rand/v2 » foi adicionado à biblioteca padrão, que oferece uma API mais consistente e usa algoritmos mais rápidos para gerar números pseudoaleatórios.
  • O pacote net/http.ServeMux adicionou a capacidade de especificar métodos e máscaras em modelos.

Para saber mais sobre essa versão da linguagem Go, acesse a nota de lançamento.

Como instalar ou atualizar da linguagem Go

Para instalar a versão mais recente da linguagem Go nas principais distribuições Linux, use esse tutorial:
Como instalar a linguagem GO no Linux manualmente
Como instalar a poderosa linguagem Go no Linux via Snap
Como instalar facilmente o compilador e vários outros itens relacionados a linguagem Go

Sobre o Edivaldo Brito

Edivaldo Brito é analista de sistemas, gestor de TI, blogueiro e também um grande fã de sistemas operacionais, banco de dados, software livre, redes, programação, dispositivos móveis e tudo mais que envolve tecnologia.