Lançamento do 1.11 - WebAssembly e módulos nativos

Nesta sexta-feira , o Go 1.11 foi lançado . As principais coisas a serem lançadas são o suporte experimental ao WebAssembly, bem como um novo conceito para os Módulos, que são projetados para se tornar o padrão para distribuição de código.

Antes de passar para as principais coisas do lançamento, vale a pena dizer algumas palavras sobre as mudanças que não são tão perceptíveis para o usuário. Como nas versões anteriores, no Go 1.11, foi feito um trabalho para melhorar as bibliotecas de idiomas, cadeias de ferramentas e tempo de execução (por exemplo, agora não há restrições no tamanho máximo do quadril). Obviamente, foi feito um trabalho para aumentar a produtividade da linguagem (acima de tudo - em matemática / aritmética grande -longa).

Agora sobre o WebAssembly. De fato, no Habré já existem vários artigos sobre como escrever código para o Wasm on Go. Portanto, esse recurso experimental no lançamento não é novidade. No entanto, acho que todo mundo entende que isso é muito importante. Afinal, se o computador conseguir finalizar o conjunto de ferramentas, assim como o Wasm, para um estado pronto para produção, podemos escrever código de front-end em uma linguagem agradável, com digitação forte estática (olá, javascript!). Aqui está um pequeno exemplo do uso da tecnologia -


A propósito, várias soluções já começaram a aparecer para melhorar a vida dos programadores para o desenvolvimento front-end. Por exemplo, https://github.com/dave/wasmgo - compilando Entre no WASM e implemente no CDN em um comando.

Agora vamos para a coisa mais importante, na minha opinião, nesta versão - o sistema Modules. A conversa sobre esses módulos já começou há muito tempo. Eles eram conhecidos no mundo como Vgo . Os módulos foram discutidos no RuNet - https://habr.com/sandbox/115542/ , bem como no âmbito do podcast Devzen pelo famoso Gopher - Alexey - https://devzen.ru/episode-0180/ . Uma boa introdução aos módulos é https://roberto.selbach.ca/intro-to-go-modules/ .

A coisa mais importante nesses módulos:

  • Trabalho em Semver . Além disso, o comando go mod permite atualizar apenas a versão máxima do Patch (número da terceira versão) e qualquer versão secundária máxima (número da segunda ou terceira versão). Na versão principal, que quebra a compatibilidade, você não atualiza automaticamente de forma alguma - e isso é maravilhoso.
  • O processo de abandonar o conceito GOPATHcomeçou . Os desenvolvedores do Go querem se afastar dessa abstração em 2019, então agora novos módulos funcionam apenas fora do GOPATH. No entanto, você pode definir a variável de ambiente GO111MODULE = para remover essa restrição.
  • O processo de deixar a Vendoring começou. Até agora, há uma oportunidade nos novos módulos de colocar as dependências em uma pasta separada e usá-las a partir daí. No entanto, no futuro, os desenvolvedores do Go querem se afastar disso. Na opinião deles, as dependências sempre devem ser obtidas no repositório (por exemplo, Github), ou a empresa deve proxy do repositório armazenando em cache o código-fonte de lado (por exemplo, usando o Artifactory).

É importante entender que o New Modules também ainda é um experimento. As ferramentas de desenvolvimento modernas ainda não estão prontas para isso. Portanto, talvez você precise continuar morando com o Dep . No entanto, já existem tentativas de obter o Vgo no IC público - https://arslan.io/2018/08/26/using-go-modules-with-vendor-support-on-travis-ci/ .

No GoLand, novos módulos já existem como uma abstração. No entanto, tudo funciona relativamente bruto (por exemplo, se você baixar um módulo usando o Vgo, mas sem fazer o get , o código não começará a ser analisado):

imagem

Para resumir. O Go 1.11 é um ótimo lançamento. Nada quebrou (como sempre) - e isso é muito legal. Recursos interessantes apareceram. Recebemos automaticamente algum aumento de desempenho. Em geral, tudo está como deveria estar na linguagem moderna do desenvolvimento industrial. E as mudanças ocorrerão no próximo Go 2, que agora está sendo discutido ativamente.

Source: https://habr.com/ru/post/pt421355/


All Articles