Go linguagem de programação versão 1.15

Introduzido lançamento de linguagem de programação Ir 1.15, 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.15:

  • O trabalho do vinculador foi significativamente melhorado, tanto no aumento da velocidade de operação e na redução do consumo de memória, quanto no sentido de simplificar a manutenção do código. Quando testado em sistemas operacionais usando o formato de arquivo executável ELF (Linux, FreeBSD, NetBSD, OpenBSD, Dragonfly, Solaris), um conjunto típico de grandes aplicativos Go foi construído 20% mais rápido e o consumo de memória foi reduzido em média 30%. O aumento da produtividade foi possível com a mudança para um novo formato de arquivo de objeto e o retrabalho dos estágios internos para aumentar o nível de paralelização do trabalho. O vinculador nativo agora é usado por padrão nos sistemas Linux/AMD64 e Linux/arm64 em "-buildmode=pie", que não requer mais o uso de um vinculador C.
  • Em tempo de execução, a distribuição de pequenos objetos em sistemas com um grande número de núcleos de CPU foi significativamente melhorada e a latência foi reduzida. Em caso de falhas, são exibidos valores com tipos numéricos e string em vez de mostrar o endereço. Ao enviar sinais SIGSEGV, SIGBUS e SIGFPE para uma aplicação Go, na ausência de um manipulador os/signal.Notify, a aplicação sairá com uma saída de rastreamento de pilha (anteriormente o comportamento era imprevisível).
  • O compilador foi otimizado para reduzir o tamanho dos arquivos executáveis ​​gerados em uma média de 5%, interrompendo a inclusão de alguns metadados para o coletor de lixo e limpando mais agressivamente os metadados não utilizados.
  • O sinalizador “-spectre” foi adicionado ao compilador e ao assembler para habilitar a proteção contra ataques da classe Spectre (para a maioria dos programas isso não é necessário; habilitar a opção só pode ser justificada para alguns casos muito específicos).
  • Nos certificados X.509, o campo CommonName foi descontinuado e não será mais tratado como um nome de host se o campo Nomes Alternativos do Assunto estiver ausente.
  • O comando "go" na variável de ambiente GOPROXY agora pode listar vários proxies, separados por vírgula ou "|". Se o primeiro proxy da lista retornar um erro (404 ou 410), será feita uma tentativa de contato através do segundo proxy, etc.
  • O utilitário vet adicionou um aviso sobre a tentativa de conversão de string(x) se "x" for um tipo inteiro diferente de rune ou byte.
  • O sinalizador "-gnu" foi adicionado ao utilitário objdump para suportar a desmontagem da sintaxe do assembler GNU.
  • Novo pacote adicionado hora/tzdata, que permite integrar um banco de dados com dados de fuso horário ao programa.
  • A partir de textos originais e documentação removido as frases whitelist/blacklist e master/slave, que agora são substituídas por "allowlist", "blocklist", "process", "pty", "proc" e "control".
  • Uma grande parte de pequenas melhorias foi feita na biblioteca padrão.
  • Adicionado suporte para OpenBSD 6.7 nos modos GOARCH=arm e GOARCH=arm64 (anteriormente apenas GOARCH=386 e GOARCH=amd64 eram suportados).
  • O desenvolvimento da plataforma RISC-V de 64 bits (GOOS=linux, GOARCH=riscv64) continuou.
  • Para sistemas x32 de 86 bits, a próxima versão aumentará os requisitos mínimos do sistema – apenas processadores com SSE2 continuarão a ser suportados. Para construir no modo GOARCH=386 você precisará de pelo menos um Intel Pentium 4 (lançado em 2000) ou um AMD Opteron/Athlon 64 (lançado em 2003).

Fonte: opennet.ru

Adicionar um comentário