BT

Novidades O InfoQ vem desenvolvendo uma série de novas funcionalidades para melhorar sua experiência com o site. Confira!

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

| por Sergio De Simone Seguir 4 Seguidores , traduzido por Leandro Guimarães Seguir 3 Seguidores em 11 set 2017. Tempo estimado de leitura: 2 minutos |

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

Olá visitante

Você precisa cadastrar-se no InfoQ Brasil ou para enviar comentários. Há muitas vantagens em se cadastrar.

Obtenha o máximo da experiência do InfoQ Brasil.

Dê sua opinião

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão
Comentários da comunidade

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão

Dê sua opinião

Faça seu login para melhorar sua experiência com o InfoQ e ter acesso a funcionalidades exclusivas


Esqueci minha senha

Follow

Siga seus tópicos e editores favoritos

Acompanhe e seja notificados sobre as mais importantes novidades do mundo do desenvolvimento de software.

Like

Mais interação, mais personalização

Crie seu próprio feed de novidades escolhendo os tópicos e pessoas que você gostaria de acompanhar.

Notifications

Fique por dentro das novidades!

Configure as notificações e acompanhe as novidades relacionada a tópicos, conteúdos e pessoas de seu interesse

BT