BT

Disseminando conhecimento e inovação em desenvolvimento de software corporativo.

Contribuir

Tópicos

Escolha a região

Início Notícias Go 1.9 lançado com alias de tipos, melhorias no runtime e tooling

Go 1.9 lançado com alias de tipos, melhorias no runtime e tooling

Favoritos

A grande mudança na recém lançada versão 1.9 do Go é o avanço no suporte para a melhoria de código através da utilização da declaração de alias de tipos. A nova versão também traz melhorias no garbage collector e no compilador.

A melhoria gradual de código (gradual code repair), conforme explicação do engenheiro do Google Russ Cox, é uma abordagem bastante útil para a realização de refactoring, especialmente em uma grande base de código. Em resumo, a melhoria gradual de código auxilia a realização de um grande refactoring em uma série de passos, ou melhor, commits ao invés de se fazer todas as mudanças automaticamente, em um único commit.

Em um nível conceitual, o atomic refactor é geralmente mais simples, mas que pode gerar grandes commits em bases de código maiores deixando o processo de revisão e merge mais complicado. Ao utilizar o gradual code repair, o refactoring acontece em 3 passos:

  • Primeiro, você adiciona a nova API, que deve ser capaz de coexistir com a antiga API. Dessa forma, você não precisa alterar todas as chamadas para a antiga API de uma única vez.
  • Segundo, você modifica todas as chamadas para a antiga API para a nova API.
  • Finalmente, você pode remover a antiga API.

Para habilitar a melhoria gradual de código, devem ser criados nomes alternativos para constantes, funções, variáveis e tipos. Com a nova versão, o Go permite a definição de alias de tipos utilizando uma declaração como:

type OldAPI = NewPackage.API

Isso pode ser utilizado para fazer todas as referências para OldAPI utilizar o novo tipo automaticamente. Para uma discussão mais ampla a respeito do gradual code repair, não deixe de conferir a explicação completa de Russ Cox.

Conforme explicação de um outro desenvolvedor do Google, Francesc Campoy, a maior parte do esforço para o Go 1.9 foi direcionado a realização de melhorias no runtime, bibliotecas do core e tooling. As mudanças mais significativas são:

  • Na nova versão, o garbage collector do Go tem uma melhor performance graças ao número de funções do próprio Go disparando o garbage collection de forma concorrente, bloqueando somente a chamada do goroutine e não toda a execução. Além disso, a alocação heap de objetos grandes também teve uma melhora significativa.
  • O compilador do Go 1.9 está apto a compilar funções que pertençam à mesma package em paralelo. Isso melhora a compilação em paralelo de packages separadas, o que já estava disponível em versões anteriores do compilador.
  • Nas bibliotecas core, a versão 1.9 do Go torna o uso da package time segura graças ao monotonic time tracking. Isso torna mais fácil a comparação com valores Time mesmo na ocorrência de sincronizações de relógios. Além disso, no novo tipo Map da package sync permite mapas concorrentes operando em thread-safe com carregamento, armazenamento e remoção constant-time.

Para ficar por dentro de todas as mudanças que vieram com o Go 1.9, faça a leitura completa do release notes oficial.

Avalie esse artigo

Relevância
Estilo/Redação

Conteúdo educacional

BT