Go linguagem de programação versão 1.13

Introduzido lançamento de linguagem de programação Ir 1.13, que está sendo desenvolvido pelo Google com a participação da comunidade como uma solução híbrida que combina o alto desempenho das linguagens compiladas com as vantagens das linguagens de script como facilidade de escrita de código, velocidade de desenvolvimento e proteção contra erros. Código do projeto distribuído por sob a licença BSD.

A sintaxe do Go é baseada em elementos familiares da linguagem C com alguns empréstimos da linguagem Python. A linguagem é bastante concisa, mas o código é fácil de ler e entender. O código Go é compilado em executáveis ​​binários independentes que são executados nativamente sem usar uma máquina virtual (criação de perfil, depuração e outros subsistemas de detecção de problemas em tempo de execução são integrados como componentes de tempo de execução), o que permite obter desempenho comparável ao de programas C.

O projeto é inicialmente desenvolvido visando a programação multithread e a operação eficiente em sistemas multi-core, incluindo o fornecimento de meios em nível de operador para organizar a computação paralela e a interação entre métodos executados em paralelo. A linguagem também fornece proteção integrada contra blocos de memória superalocados e oferece a capacidade de usar um coletor de lixo.

O principal inovaçõesintroduzido na versão Go 1.13:

  • O pacote crypto/tls tem suporte a protocolo habilitado por padrão TLS 1.3. Adicionado novo pacote "crypto/ed25519" com suporte para assinaturas digitais Ed25519;
  • Adicionado suporte para novos prefixos literais numéricos para definir números binários (por exemplo, 0b101), octal (0o377), imaginário (2.71828i) e ponto flutuante hexadecimal (0x1p-1021), e a capacidade de usar o caractere "_" para separar visualmente dígitos em grandes números (1_000_000);
  • Foi removida a restrição de usar apenas contadores não assinados em operações de turno, o que evita conversões desnecessárias para o tipo uint antes de usar os operadores “‹‹” e “››”;
  • Adicionado suporte para a plataforma Illumos (GOOS=illumos). Foi garantida a compatibilidade com a plataforma Android 10. Os requisitos para as versões mínimas do FreeBSD (11.2) e macOS (10.11 “El Capitan”) foram aumentados.
  • Desenvolvimento contínuo do novo sistema de módulos, que pode ser utilizado como alternativa ao GOPATH. Ao contrário dos planos anunciados anteriormente no Go 1.13, este sistema não está habilitado por padrão e requer ativação através da variável GO111MODULE=on ou a utilização de um contexto no qual os módulos são aplicados automaticamente. O novo sistema de módulos apresenta suporte integrado de versão, recursos de entrega de pacotes e gerenciamento aprimorado de dependências. Com os módulos, os desenvolvedores não estão mais vinculados ao trabalho em uma árvore GOPATH, podem definir explicitamente dependências com versão e criar compilações repetíveis.

    Ao contrário das versões anteriores, a aplicação automática do novo sistema agora funciona quando um arquivo go.mod está presente no diretório de trabalho atual ou no diretório pai ao executar o comando go, inclusive quando está no diretório GOPATH/src. Novas variáveis ​​de ambiente foram adicionadas: GOPRIVATE, que define os caminhos dos módulos acessíveis publicamente, e GOSUMDB, que especifica parâmetros de acesso ao banco de dados de checksum para módulos não listados no arquivo go.sum;

  • O comando "go" por padrão carrega módulos e verifica sua integridade usando o espelho do módulo e o banco de dados de soma de verificação mantido pelo Google (proxy.golang.org, sum.golang.org e index.golang.org);
  • O suporte apenas para pacotes binários foi descontinuado; construir um pacote no modo “//go:binary-only-package” agora resulta em um erro;
  • Adicionado suporte ao sufixo "@patch" ao comando "go get", indicando que o módulo deve ser atualizado para a versão de manutenção mais recente, mas sem alterar a versão principal ou secundária atual;
  • Ao recuperar módulos de sistemas de controle de origem, o comando "go" agora executa uma verificação adicional na string de versão, tentando combinar números de pseudo-versão com metadados do repositório;
  • Suporte adicionado inspeção de erros (encapsulamento de erros) através da criação de wrappers que permitem o uso de manipuladores de erros padrão. Por exemplo, erro "e" pode ser contornado pelo erro "w" fornecendo um método Desembrulhar, retornando "w". Ambos os erros "e" e "w" estão disponíveis no programa e as decisões são tomadas com base no erro "w", mas "e" fornece contexto adicional para "w" ou o interpreta de forma diferente;
  • O desempenho dos componentes de tempo de execução foi otimizado (foi observado um aumento de velocidade de até 30%) e um retorno de memória mais agressivo ao sistema operacional foi implementado (anteriormente, a memória era devolvida após cinco ou mais minutos, mas agora imediatamente depois de reduzir o tamanho do heap).

Fonte: opennet.ru

Adicionar um comentário