A linguagem de programação Go (Golang) da Google lançou a sua última versão, Go 1.19, melhorando o seu suporte a genéricos, introduzindo um modelo de memória melhorado e oferecendo uma variedade de outras funcionalidades. Esta actualização centra-se no aperfeiçoamento dos genéricos recentemente adicionados, que foram introduzidos pela primeira vez em Go 1.18, e na optimização do desempenho do código genérico em até 20%.
Melhorias em Go 1.19
Com o lançamento do Go 1.19 em 2 de agosto, o desenvolvimento do suporte a genéricos se concentra em resolver problemas sutis e casos de canto relatados pela comunidade, juntamente com melhorias de desempenho. A introdução de genéricos na linguagem foi uma característica há muito esperada adicionada ao Go 1.18, que foi lançado em Março.
O modelo de memória Go foi actualizado para definir explicitamente o comportamento do pacote sync/atomic, fornecendo primitivas de memória atómica de baixo nível para implementar algoritmos de sincronização. A definição formal da relação happens-before foi reformulada para se alinhar com os modelos de memória usados por C, C++, Java, JavaScript, Rust e Swift. Essa atualização não afeta os programas existentes.
Como parte da actualização do modelo de memória, foram introduzidos novos tipos no pacote sync/atomic, incluindo atomic.int64 e atomic.Pointer(T), tornando mais conveniente a utilização de valores atómicos. O Go 1.19 já está disponível para download em go.dev para Windows, macOS e Linux.
Recursos adicionais em Go 1.19
Além das melhorias nos genéricos e no novo modelo de memória, o Go 1.19 introduziu outros recursos:
- Um limite de memória suave adicionado ao coletor de lixo, que ajuda a otimizar os programas Go executados em contêineres com alocações de memória dedicadas.
- Melhorias de desempenho e implementação, como o dimensionamento dinâmico de pilhas de corrotinas para reduzir a cópia de pilha, o uso automático de descritores de arquivo adicionais na maioria dos sistemas Unix, tabelas de salto para instruções switch grandes em x86-64 e ARM64, e suporte para chamadas de função injetadas pelo depurador em ARM64.
- Uma pequena correção feita para parâmetros de tipo em declarações de método sem afetar os programas existentes.
- Comentários de documentos agora suportam links, listas e sintaxe de cabeçalho, tornando a composição de comentários de documentos mais clara, especialmente para pacotes com APIs extensas.
- Por motivos de segurança, o pacote os/exec não permite mais caminhos relativos em buscas PATH.
- Uma nova restrição de construção, unix, é introduzida, que é satisfeita quando o SO alvo opera em qualquer sistema do tipo Unix.
À medida que a adopção de no-code e low-code plataformas como AppMaster aumenta, é essencial para os programadores manterem-se actualizados com os últimos avanços em linguagens de programação populares como Go. A integração de Go com AppMaster pode acelerar o desenvolvimento de aplicações backend, oferecendo maior escalabilidade e rentabilidade. A Go 1.19 traz melhorias substanciais para aumentar o desempenho, a segurança e a experiência do programador, reforçando a sua posição como uma ferramenta vital para o desenvolvimento de software moderno.