Lanzamento da linguaxe de programación Go 1.13

Presentado versión da linguaxe de programación Vaia 1.13, que está a ser desenvolvido por Google coa participación da comunidade como unha solución híbrida que combina o alto rendemento das linguaxes compiladas coas vantaxes das linguaxes de script como a facilidade de escritura de código, a velocidade de desenvolvemento e a protección contra erros. Código do proxecto distribuído por baixo a licenza BSD.

A sintaxe de Go baséase en elementos familiares da linguaxe C con algúns préstamos da linguaxe Python. A linguaxe é bastante concisa, pero o código é fácil de ler e comprender. O código Go compílase en executables binarios autónomos que se executan de forma nativa sen utilizar unha máquina virtual (intégrase os subsistemas de creación de perfiles, depuración e outros de detección de problemas en tempo de execución como compoñentes de execución), que lle permite acadar un rendemento comparable aos programas C.

O proxecto desenvólvese inicialmente pensando na programación multiproceso e na operación eficiente en sistemas multinúcleo, incluíndo a provisión de medios a nivel de operador para organizar a computación paralela e a interacción entre métodos executados en paralelo. A linguaxe tamén ofrece protección integrada contra bloques de memoria sobreasignados e ofrece a posibilidade de utilizar un colector de lixo.

O principal innovaciónsintroducido na versión de Go 1.13:

  • O paquete crypto/tls ten o soporte de protocolo activado por defecto TLS 1.3. Engadiuse un novo paquete "crypto/ed25519" con soporte para sinaturas dixitais Ed25519;
  • Engadiuse compatibilidade con novos prefixos literais numéricos para definir números binarios (por exemplo, 0b101), octais (0o377), imaxinarios (2.71828i) e coma flotante hexadecimal (0x1p-1021), e a capacidade de usar o carácter "_" para separar os díxitos visualmente. en gran número (1_000_000);
  • Eliminouse a restrición de usar só contadores sen asinar nas operacións de quendas, o que evita conversións innecesarias ao tipo uint antes de usar os operadores “‹‹” e “››”;
  • Engadido soporte para a plataforma Illumos (GOOS=illumos). Asegurouse a compatibilidade coa plataforma Android 10. Aumentáronse os requisitos para as versións mínimas de FreeBSD (11.2) e macOS (10.11 "El Capitan").
  • Continuación do desenvolvemento do novo sistema de módulos, que se pode utilizar como alternativa a GOPATH. Ao contrario dos plans anunciados anteriormente en Go 1.13, este sistema non está habilitado por defecto e require a súa activación mediante a variable GO111MODULE=on ou o uso dun contexto no que os módulos se apliquen automaticamente. O novo sistema de módulos presenta compatibilidade integrada de versións, capacidades de entrega de paquetes e xestión de dependencias mellorada. Cos módulos, os desenvolvedores xa non están vinculados a traballar nunha árbore GOPATH, poden definir de forma explícita dependencias versionadas e crear compilacións repetibles.

    A diferenza das versións anteriores, a aplicación automática do novo sistema agora funciona cando un ficheiro go.mod está presente no directorio de traballo actual ou no directorio principal cando se executa o comando go, incluso cando está no directorio GOPATH/src. Engadíronse novas variables de ambiente: GOPRIVATE, que define as rutas dos módulos accesibles ao público, e GOSUMDB, que especifica os parámetros de acceso á base de datos de checksum para módulos que non figuran no ficheiro go.sum;

  • O comando "ir" por defecto carga os módulos e comproba a súa integridade mediante a base de datos de espello de módulo e suma de comprobación mantida por Google (proxy.golang.org, sum.golang.org e index.golang.org);
  • O soporte só para paquetes binarios foi descontinuado; a construción dun paquete no modo "//go:binary-only-package" agora dá lugar a un erro;
  • Engadido soporte para o sufixo "@patch" ao comando "go get", indicando que o módulo debería actualizarse á última versión de mantemento, pero sen cambiar a versión principal ou secundaria actual;
  • Cando se recuperan módulos dos sistemas de control de fontes, o comando "ir" agora realiza unha comprobación adicional na cadea de versión, tentando facer coincidir os números de pseudoversión cos metadatos do repositorio;
  • Soporte engadido inspección de erros (envoltura de erros) mediante a creación de envoltorios que permiten o uso de controladores de erros estándar. Por exemplo, erro "e" pódese envolver arredor do erro "w" proporcionando un método Desenvolver, devolvendo "w". Ambos os erros "e" e "w" están dispoñibles no programa e as decisións tómanse baseándose no erro "w", pero "e" proporciona contexto adicional a "w" ou interprétao de forma diferente;
  • Optimizouse o rendemento dos compoñentes do tempo de execución (observouse un aumento da velocidade de ata un 30 %) e implementouse un retorno máis agresivo da memoria ao sistema operativo (anteriormente, a memoria devolvíase despois de cinco ou máis minutos, pero agora inmediatamente). despois de reducir o tamaño da pila).

Fonte: opennet.ru

Engadir un comentario