Lanzamento da linguaxe de programación Go 1.16

Preséntase a versión da linguaxe de programación Go 1.16, que está a ser desenvolvida por Google coa participación da comunidade como unha solución híbrida que combina o alto rendemento das linguaxes compiladas con vantaxes das linguaxes de script como a facilidade de escritura de código. , velocidade de desenvolvemento e protección contra erros. O código do proxecto distribúese 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 ficheiros executables binarios autónomos que se executan de forma nativa sen usar unha máquina virtual (intégranse como compoñentes de execución de módulos de perfilado, depuración e outros subsistemas de detección de problemas en tempo de execución), o que permite 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.

Novas características clave introducidas en Go 1.16:

  • Engadiuse o paquete embed, que proporciona ferramentas para incorporar ficheiros e directorios arbitrarios no programa. Ofrécese unha nova directiva "//go:embed" para especificar os ficheiros que se van incorporar no momento da compilación. Por exemplo, especificar "//go:embed test.txt" no comentario do código e despois declarar a variable "var f embed.FS" dará lugar á incrustación do ficheiro test.txt e á posibilidade de acceder a el a través do " descriptor f. Do mesmo xeito, pode incorporar ficheiros con recursos ou valores individuais dun determinado tipo necesarios para o traballo, por exemplo, para obter a variable de cadea "s" do ficheiro version.txt, pode especificar: import_"embed ” //go:embed version.txt var s string print(s)
  • De xeito predeterminado, agora é necesario o novo sistema de módulos con compatibilidade de versións integrada, que substitúe a xestión de dependencias baseada en GOPATH. A variable de ambiente GO111MODULE agora está configurada como "activada" por defecto e o modo módulos úsase independentemente da presenza dun ficheiro go.mod no directorio de traballo ou principal. No novo modo, os comandos de compilación como "go build" e "go test" non cambian o contido de go.mod e go.sum, e o comando "go install" procesa os argumentos da versión ("go install example.com/[protexido por correo electrónico]"). Para devolver o comportamento antigo, cambia GO111MODULE a "auto". Nótase que o 96% dos desenvolvedores xa cambiaron ao novo sistema de módulos.
  • O enlazador foi optimizado. Para proxectos grandes, o deseño é agora un 20-25 % máis rápido e require un 5-15 % menos de memoria.
  • O compilador engadiu soporte para a expansión en liña de funcións con definicións abreviadas de bucles "for", valores de método e construcións de "cambio de tipo".
  • Engadido soporte para sistemas Apple equipados co novo chip Apple M1 ARM. Engadíronse portos netbsd/arm64 e openbsd/mips64 con soporte para NetBSD en ARM de 64 bits e OpenBSD en sistemas MIPS64. Engadido soporte para cgo e o modo "-buildmode=pie" ao porto linux/riscv64.
  • O soporte para o modo de compilación x87 foi descontinuado (GO386=387). O soporte para procesadores sen instrucións SSE2 agora está dispoñible a través do modo de software "GO386=softfloat".

Ademais, podemos observar o inicio das probas da versión beta da linguaxe Dart 2.12, na que se estabilizou o modo seguro para usar o valor "Null" (seguridade nula), o que axudará a evitar fallos causados ​​por intentos de utilizar variables cuxo o valor non está definido e está definido como "Nulo". O modo implica que as variables non poden ter valores nulos a menos que se lles asignen explícitamente o valor nulo. O modo respecta estrictamente os tipos de variables, o que permite ao compilador aplicar optimizacións adicionais. O cumprimento do tipo compróbase no momento da compilación, por exemplo, se tenta asignar o valor "Null" a unha variable cun tipo que non implique estado indefinido, como "int", amosarase un erro.

Fonte: opennet.ru

Engadir un comentario