Lanzamento da linguaxe de programación Go 1.14

Presentado versión da linguaxe de programación Vaia 1.14, 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.14:

  • O novo sistema de módulos no comando "ir" declárase listo para o uso xeral, activado por defecto e recomendado para a xestión de dependencias en lugar de GOPATH. 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.
  • Engadido soporte para incorporar interfaces cun conxunto de métodos superpostos. Os métodos dunha interface integrada agora poden ter os mesmos nomes e sinaturas que os métodos das interfaces existentes. Os métodos declarados explícitamente seguen sendo únicos como antes.
  • Mellorouse o rendemento da expresión "diferir", polo que é case tan rápido como chamar directamente a unha función diferida, permitindo a execución de funcións diferidas en código sensible ao rendemento.
  • Ofrécese a preferencia asincrónica das corrutinas (goroutines): os bucles que non conteñen chamadas de función agora poden provocar un bloqueo do programador ou atrasar o inicio da recollida de lixo.
  • Mellorouse a eficiencia do sistema de asignación de páxinas de memoria e agora hai moito menos conflitos de bloqueo en configuracións con valores GOMAXPROCS grandes. O resultado é unha latencia reducida e un maior rendemento á vez que se distribúen de forma intensiva grandes bloques de memoria.
  • Optimizouse o bloqueo e reduciuse o número de cambios de contexto ao executar os temporizadores internos utilizados nas funcións time.After, time.Tick, net.Conn.SetDeadline.
  • No comando go, a marca "-mod=vendor" está habilitada por defecto se hai un directorio de provedores na raíz, destinado a entregar dependencias externas vinculadas a un provedor específico. Engadiuse unha marca separada "-mod=mod" para cargar módulos desde a caché do módulo en lugar do directorio "vendor". Se o ficheiro go.mod é de só lectura, a marca "-mod=readonly" está definida por defecto se non hai un directorio "proveedor" superior. Engadiuse a marca "-modfile=file" para especificar un ficheiro go.mod alternativo en lugar do no directorio raíz do módulo.
  • Engadida a variable de ambiente GOINSECURE, cando se establece, o comando go non require o uso de HTTPS e omite a comprobación do certificado ao cargar módulos directamente.
  • O compilador engadiu a marca "-d=checkptr", activada de forma predeterminada, para comprobar o código do cumprimento das regras para o uso seguro de unsafe.Pointer.
  • Inclúese un novo paquete na entrega hash/maphash con funcións hash non criptográficas para crear táboas hash para secuencias de bytes ou cadeas arbitrarias.
  • Engadido soporte experimental para a plataforma RISC-V de 64 bits en Linux.
  • Engadido soporte para FreeBSD en sistemas ARM de 64 bits.

Fonte: opennet.ru

Engadir un comentario