Go linguagem de programação versão 1.16

É apresentado o lançamento da linguagem de programação Go 1.16, que está sendo desenvolvida pelo Google com a participação da comunidade como uma solução híbrida que combina o alto desempenho das linguagens compiladas com vantagens das linguagens de script como facilidade de escrever código , velocidade de desenvolvimento e proteção contra erros. O código do projeto é distribuído 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 arquivos executáveis ​​​​binários independentes que são executados nativamente sem o uso de uma máquina virtual (criação de perfil, módulos de 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 desempenho comparável aos 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.

Principais novos recursos introduzidos no Go 1.16:

  • Adicionado o pacote embed, que fornece ferramentas para incorporar arquivos e diretórios arbitrários ao programa. Uma nova diretiva "//go:embed" é fornecida para especificar os arquivos a serem incorporados em tempo de compilação. Por exemplo, especificar “//go:embed test.txt” no comentário do código e depois declarar a variável “var f embed.FS” levará à incorporação do arquivo test.txt e à capacidade de acessá-lo através do “ f” descritor. De forma semelhante, você pode incorporar arquivos com recursos ou valores individuais de um determinado tipo necessários para o trabalho, por exemplo, para obter a variável string “s” do arquivo version.txt, você pode especificar: import _ “embed ” //go:embed version.txt var s string print(s)
  • Por padrão, o novo sistema de módulos com suporte de versão integrado agora é necessário, substituindo o gerenciamento de dependências baseado em GOPATH. A variável de ambiente GO111MODULE agora está definida como "ativada" por padrão e o modo de módulos é usado independentemente da presença de um arquivo go.mod no diretório de trabalho ou pai. No novo modo, comandos de construção como "go build" e "go test" não alteram o conteúdo de go.mod e go.sum, e o comando "go install" processa argumentos de versão ("go install example.com/[email protegido]"). Para retornar ao comportamento antigo, altere GO111MODULE para “auto”. Observa-se que 96% dos desenvolvedores já mudaram para o novo sistema de módulos.
  • O vinculador foi otimizado. Para projetos grandes, o layout agora é 20 a 25% mais rápido e requer de 5 a 15% menos memória.
  • O compilador adicionou suporte para expansão inline de funções com definições abreviadas de loops “for”, valores de métodos e construções de ‘type switch’.
  • Adicionado suporte para sistemas Apple equipados com o novo chip Apple M1 ARM. Adicionadas portas netbsd/arm64 e openbsd/mips64 com suporte para NetBSD em ARM de 64 bits e OpenBSD em sistemas MIPS64. Adicionado suporte para cgo e o modo “-buildmode=pie” à porta linux/riscv64.
  • O suporte para o modo de compilação x87 foi descontinuado (GO386=387). O suporte para processadores sem instrução SSE2 agora está disponível através do modo de software "GO386=softfloat".

Adicionalmente, podemos notar o início dos testes da versão beta da linguagem Dart 2.12, na qual o modo seguro de utilização do valor “Null” (segurança nula) foi estabilizado, o que ajudará a evitar travamentos causados ​​​​por tentativas de utilização de variáveis ​​​​cujas o valor é indefinido e definido como “Nulo”. O modo implica que as variáveis ​​​​não podem ter valores nulos, a menos que sejam explicitamente atribuídos ao valor nulo. O modo respeita estritamente os tipos de variáveis, o que permite ao compilador aplicar otimizações adicionais. A conformidade de tipo é verificada em tempo de compilação, por exemplo, se você tentar atribuir o valor “Nulo” a uma variável com um tipo que não implique estado indefinido, como “int”, um erro será exibido.

Fonte: opennet.ru

Adicionar um comentário