Go é uma linguagem de programação compilada concorrente com tipagem estática inspirada na sintaxe C.
O lançamento da nova versão da linguagem de programação Go 1.20, que está sendo desenvolvido pelo Google com a participação da comunidade como uma solução híbrida que combina o alto desempenho de linguagens compiladas.
A nova edição do Go 1.20 beneficiou de uma fase de desenvolvimento alargado, possibilitado pelos testes extensivos acima e pela estabilidade geral da base de código melhorada.
Vale ressaltar que o projeto é desenvolvido inicialmente visando a programação multithread e operação eficiente em sistemas multicore, incluindo o fornecimento de meios implementados em operadora para organizar a computação paralela e a interação entre os métodos executados em paralelo. A linguagem também fornece proteção integrada contra estouros de blocos de memória alocados e fornece a capacidade de usar o coletor de lixo.
A sintaxe do Go é baseada nos elementos familiares da linguagem C com alguns empréstimos da linguagem Oberon. A linguagem é bastante concisa, mas o código é fácil de ler e entender.
Notícias principais do Go 1.20
Nesta nova versão do Go 1.20 que é apresentada, destaca-se que forneceuo suporte experimental para otimização guiada por perfil (PGO), que leva em consideração características determinadas em tempo de execução. Levando em consideração o perfil de execução durante a montagem, o desempenho dos aplicativos pode ser melhorado em 3-4%. Adicionada a opção "-pgo" para incluir PGO em go build, go install e outros comandos de build.
Outra novidade que se apresenta é que funções SliceData, String e StringData adicionadas para o pacote inseguro para manipulações de baixo nível com segmentos (arrays de tamanho dinâmico) e strings (por exemplo, para converter uma área de memória apontada por um ponteiro para uma string do tipo string e vice-versa).
Além disso, destaca-se também que o cover, foi estendido com a capacidade de coletar perfis para programas em geral e não apenas para testes de unidade, também foi adicionada a opção "-cover" para ir para compilar, instalar e outros comandos construir para gerar um perfil de cobertura.
Utilitário go é liberado da vinculação a pacotes de biblioteca padrão pré-compilados localizado no diretório $GOROOT/pkg, o que permitiu excluí-los da distribuição e reduzir o tamanho dos dados baixados. Pacotes de biblioteca padrão, como pacotes regulares, agora são compilados conforme necessário e armazenados em cache no cache de compilação.
Comando go desativa o uso do pacote cgo por padrão em sistemas sem um conjunto de ferramentas para compilar código C. Esses sistemas agora usam variantes dos pacotes de biblioteca padrão na linguagem Go, em vez de usar pacotes pré-compilados.
Do outras mudanças que se destacam da nova versão:
- O utilitário veterinário possui avisos adicionais sobre problemas com variáveis usadas em loops que são detectados quando os testes são executados em paralelo.
- As regras de conversão de tipo são estendidas com a possibilidade de conversão direta de um segmento para um array.
- A especificação define explicitamente a ordem na qual os elementos do array e os campos struct são comparados.
- O pacote crypto/ecdh foi adicionado à biblioteca padrão com suporte para troca de chaves ECDH (Elliptic Curve Diffie-Hellmann).
- Adicionado um novo tipo http.ResponseController para criar controladores de resposta HTTP avançados.
- Adicionada a função Rewrite ao tipo httputil.ReverseProxy para modificar a solicitação.
- Adicionada a função context.WithCancelCause, que permite cancelar a chamada com um erro especificado.
- Os campos Cancel e WaitDelay foram adicionados ao tipo os/exec.Cmd para especificar o comportamento quando o contexto é cancelado ou o processo é finalizado.
- No compilador e no coletor de lixo, o consumo de memória foi reduzido e o desempenho foi otimizado (aumento de velocidade chega a 2%).
- Trabalho foi feito para acelerar a compilação: uma redução no tempo de compilação pode chegar a 10%.
- Adicionado suporte experimental para a plataforma FreeBSD em sistemas com arquitetura RISC-V (GOOS=freebsd, GOARCH=riscv64).
Finalmente Se você estiver interessado em saber mais sobre isso, você pode verificar os detalhes no link a seguir.