GO 1.25, a versão mais recente da linguagem de programação de código aberto desenvolvido pelo Google, foi lançado. A atualização traz novos recursos, incluindo um coletor experimental de lixo que melhora o desempenho, uma correção para um bug do compilador que pode atrasar as verificações do ponteiro e um pacote que fornece suporte para testar o código simultâneo.
Anunciado em 12 de agosto pela equipe Go, GO 1,25 pode ser acessado em go.dev. A versão inclui aprimoramentos entre as ferramentas, o tempo de execução, a biblioteca padrão, o compilador e o ligante.
O novo coletor de lixo possui um design que melhora o desempenho da marcação e digitalização de pequenos objetos por meio de uma melhor localidade e escalabilidade da CPU, de acordo com a equipe Go. A equipe espera uma redução de 10% a 40% na sobrecarga de coleta de lixo em programas do mundo real que usam fortemente o colecionador. Os desenvolvedores podem ativar o coletor configurando GOEXPERIMENT=greenteaqc no momento da construção.
Para o compilador, enquanto isso, o lançamento corrige um bug do Go 1.21 que pode atrasar incorretamente as verificações do ponteiro. Programas como o abaixo, que costumavam ser executados com sucesso quando não deveriam, disse a equipe Go, agora entrará em pânico corretamente com uma exceção de nulo.
package main
import "os"
func main() {
f, err := os.Open("nonExistentFile")
name := f.Name()
if err != nil {
return
}
println(name)
}
Na biblioteca padrão, GO 1.25 tem um novo testing/synctest Pacote que suporta testes para código simultâneo. O Test A função executa uma função de teste em uma “bolha” isolada, disse a equipe. Dentro da bolha, o tempo é virtualizado: time As funções do pacote operam em um relógio falso e o relógio avança instantaneamente se todas as goroutinas da bolha estiverem bloqueadas. Além disso, o Wait A função aguarda todas as goroutinas na bolha atual para bloquear. Este pacote ficou disponível pela primeira vez em Go 1.24 em GOEXPERIMENT=synctestcom uma API ligeiramente diferente. O experimento se formou na disponibilidade geral.
GO 1,25 segue o Go 1,24, que foi introduzido em fevereiro com aprimoramentos referentes a aliases e membros da Web. O idioma GO ganhou atenção ultimamente com o plano da Microsoft de portar o compilador e ferramentas do TypeScript para o idioma, com a intenção de aumentar o desempenho.
Também apresentado em Go 1.25:
- Uma implementação experimental de JSON, quando ativada, fornece um codificação/json/v2 pacote, que é uma grande revisão do pacote de codificação/json, e o Codificação/JSON/JSONTEXT Pacote, que fornece processamento de nível mais baixo da sintaxe JSON.
- O
go build -asanA opção agora é padronizada para fazer detecção de vazamento na saída do programa. Isso relatará um erro se a memória alocada por C não for libertada e não for referenciada por nenhuma outra memória alocada por Go ou C. - O compilador agora pode alocar a loja de apoio para fatias na pilha em mais situações, melhorando o desempenho.
- O compilador e o vinculador agora geram informações de depuração usando o anão (depuração com formatos de registro atribuído) versão 5.
- A distribuição GO incluirá menos binários de ferramentas pré -construídos. Os binários da cadeia de ferramentas principais, como o vinculador e o compilador, ainda serão incluídos, mas as ferramentas não invocadas pelas operações de construção ou teste serão construídas e executadas por
go toolconforme necessário. - O vinculador agora aceita um
-funcalign=NOpção de linha de comando que especifica o alinhamento das entradas de função. O valor padrão é dependente da plataforma e inalterado no GO 1.25. - Para criptografia,
MessageSigneré uma interface de assinatura que pode ser implementada pelos signatários que desejam hash a mensagem a ser assinada.
