Go 1.19 já foi lançado e essas são suas novidades

Faz pouco foi anunciado o lançamento da nova versão da linguagem de programação «Go 1.19», uma versão que melhora a versão anterior adicionando várias melhorias e, principalmente, correções de bugs. Das novidades que podemos destacar são as melhorias no gerenciamento de memória, melhorias de segurança, entre outras coisas.

Para quem é novo em Go, deve saber que esta é uma linguagem de programação que é desenvolvida com a participação da comunidade como uma solução híbrida que combina o alto desempenho das linguagens compiladas com vantagens como linguagens de script como a facilidade de escrever código, desenvolvimento e proteção contra bugs.

A sintaxe do Go é baseada nos elementos usuais da linguagem C. com alguns empréstimos da linguagem Python. A linguagem é bastante concisa, mas o código é fácil de ler e entender.

O código Go é compilado em arquivos executáveis ​​binários separados que são executados nativamente, sem usar uma máquina virtual (criação de perfil, depuração e outros subsistemas de solução de problemas de tempo de execução são integrados como componentes de tempo de execução).

Notícias principais do Go 1.19

Nesta nova versão do Go 1.19 que se apresenta, destaca-se que trabalho foi feito para refinar o suporte para funções e tipos genéricos adicionado na versão mais recente, com a qual o desenvolvedor pode definir e usar funções projetadas para trabalhar com vários tipos ao mesmo tempo, além da otimização de desempenho de alguns programas que usam genéricos foi aumentada em 20%.

Outra mudança que se destaca na nova versão é que suporte adicionado para links, listas e sintaxe mais simples para definir cabeçalhos nos comentários do documento. O utilitário gofmt fornece formatação com os recursos avançados de comentários em mente com a documentação da API.

Além disso modelo de memória Go revisado para alinhar com C, C++, Java, JavaScript, Rust e Swift que não admitem valores atômicos sequencialmente consistentes. Novos tipos como atomic.Int64 e atomic.Pointer[T] foram introduzidos no pacote sync/atomic para facilitar o uso de valores atômicos.

Por outro lado, também é mencionado que o coletor de lixo agora tem a capacidade de definir limites flexíveis, que são aplicados limitando o tamanho do heap e retornando a memória para o sistema de forma mais agressiva, ou seja, não é garantido que o consumo esteja dentro dos limites especificados em todas as condições. Os limites flexíveis podem ser úteis para otimizar programas executados em contêineres de memória fixa.

Destaca-se também que em sistemas Unix, descritores de arquivos adicionais são ativados automaticamente (aumentando o limite RLIMIT_NOFILE), para acelerar grandes expressões de alteração em sistemas x86-64 e ARM64, são usadas tabelas de salto, que permitem que grandes expressões de alteração sejam processadas até 20% mais rápido.

Nos sistemas riscv64 foi implementada a passagem de argumentos de função via registradores de CPU, o que permitiu um aumento de desempenho de cerca de 10%.

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

  • Várias otimizações de desempenho foram implementadas.
  • Adicionado suporte para definir dinamicamente o tamanho da pilha de rotina para reduzir o tamanho dos dados copiados
  • Adicionado suporte experimental para ambientes Linux em sistemas com processadores Loongson baseados na arquitetura LoongArch de 64 bits (GOARCH=loong64).
  • Alterar o modelo de memória não afetou a compatibilidade com o código escrito anteriormente.
  • Adicionada uma nova restrição de compilação "unix" que pode ser usada em linhas "go:build" para filtrar sistemas semelhantes a Unix (aix, android, darwin, dragonfly, freebsd, hurd, illumos, ios, linux, netbsd, openbsd, solaris ).
  • Para melhorar a segurança, o módulo os/exec agora ignora caminhos relativos ao expandir a variável de ambiente PATH (por exemplo, ao determinar o caminho de um arquivo executável, o diretório atual não é mais verificado).

Por fim, se você estiver interessado em saber mais sobre esta nova versão, verifique 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.