Versión de lenguaje de programación Go 1.16

Se presenta el lanzamiento del lenguaje de programación Go 1.16, que está siendo desarrollado por Google con la participación de la comunidad como una solución híbrida que combina el alto rendimiento de los lenguajes compilados con ventajas de los lenguajes de scripting como la facilidad para escribir código. , velocidad de desarrollo y protección contra errores. El código del proyecto se distribuye bajo la licencia BSD.

La sintaxis de Go se basa en elementos familiares del lenguaje C con algunos préstamos del lenguaje Python. El lenguaje es bastante conciso, pero el código es fácil de leer y comprender. El código Go se compila en archivos ejecutables binarios independientes que se ejecutan de forma nativa sin utilizar una máquina virtual (los módulos de creación de perfiles, depuración y otros subsistemas de detección de problemas en tiempo de ejecución se integran como componentes en tiempo de ejecución), lo que permite un rendimiento comparable al de los programas C.

El proyecto se desarrolla inicialmente con miras a la programación multiproceso y el funcionamiento eficiente en sistemas multinúcleo, incluido el suministro de medios a nivel de operador para organizar la computación paralela y la interacción entre métodos ejecutados en paralelo. El lenguaje también proporciona protección integrada contra bloques de memoria sobreasignados y ofrece la posibilidad de utilizar un recolector de basura.

Nuevas características clave introducidas en Go 1.16:

  • Se agregó el paquete de inserción, que proporciona herramientas para incrustar archivos y directorios arbitrarios en el programa. Se proporciona una nueva directiva "//go:embed" para especificar los archivos que se integrarán en el momento de la compilación. Por ejemplo, especificar "//go:embed test.txt" en el comentario del código y luego declarar la variable "var f embed.FS" conducirá a la incrustación del archivo test.txt y la capacidad de acceder a él a través del " f”descriptor. De manera similar, puede incrustar archivos necesarios para trabajar con recursos o valores individuales de un cierto tipo, por ejemplo, para obtener la variable de cadena "s" del archivo version.txt, puede especificar: import _ "embed ” //go:embed version.txt var s string print(s)
  • De forma predeterminada, ahora se requiere el nuevo sistema de módulos con soporte de versiones integrado, que reemplaza la gestión de dependencias basada en GOPATH. La variable de entorno GO111MODULE ahora está configurada en "activado" de forma predeterminada y el modo de módulos se utiliza independientemente de la presencia de un archivo go.mod en el directorio principal o de trabajo. En el nuevo modo, los comandos de compilación como "go build" y "go test" no cambian el contenido de go.mod y go.sum, y el comando "go install" procesa los argumentos de la versión ("go install example.com/[email protected]"). Para devolver el comportamiento anterior, cambie GO111MODULE a "auto". Cabe señalar que el 96% de los desarrolladores ya han cambiado al nuevo sistema de módulos.
  • El enlazador ha sido optimizado. Para proyectos grandes, el diseño ahora es entre un 20 y un 25 % más rápido y requiere entre un 5 y un 15 % menos de memoria.
  • El compilador ha agregado soporte para la expansión en línea de funciones con definiciones abreviadas de bucles "for", valores de métodos y construcciones de "cambio de tipo".
  • Se agregó soporte para sistemas Apple equipados con el nuevo chip Apple M1 ARM. Se agregaron puertos netbsd/arm64 y openbsd/mips64 con soporte para NetBSD en ARM de 64 bits y OpenBSD en sistemas MIPS64. Se agregó soporte para cgo y el modo “-buildmode=pie” al puerto linux/riscv64.
  • Se ha interrumpido la compatibilidad con el modo de compilación x87 (GO386=387). La compatibilidad con procesadores sin instrucciones SSE2 ahora está disponible a través del modo de software "GO386=softfloat".

Además, podemos destacar el inicio de las pruebas de la versión beta del lenguaje Dart 2.12, en la que se ha estabilizado el modo seguro de uso del valor “Null” (seguridad nula), lo que ayudará a evitar fallos provocados por intentos de utilizar variables cuyo El valor no está definido y está establecido en "Nulo". El modo implica que las variables no pueden tener valores nulos a menos que se les asigne explícitamente el valor nulo. El modo respeta estrictamente los tipos de variables, lo que permite al compilador aplicar optimizaciones adicionales. El cumplimiento del tipo se verifica en el momento de la compilación; por ejemplo, si intenta asignar el valor "Nulo" a una variable con un tipo que no implica un estado indefinido, como "int", se mostrará un error.

Fuente: opennet.ru

Añadir un comentario