Versión de lenguaje de programación Go 1.15

Presentado por lanzamiento del lenguaje de programación Ir a 1.15, 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 las ventajas de los lenguajes de scripting como la facilidad para escribir código, la velocidad de desarrollo y la protección contra errores. Código de proyecto distribuido por 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 ejecutables binarios independientes que se ejecutan de forma nativa sin utilizar una máquina virtual (los subsistemas de creación de perfiles, depuración y otros subsistemas de detección de problemas en tiempo de ejecución se integran como componentes de tiempo de ejecución), que le permite lograr 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.

El principal innovacionesintroducido en la versión Go 1.15:

  • El trabajo del enlazador se ha mejorado significativamente, tanto para aumentar la velocidad de operación y reducir el consumo de memoria como para simplificar el mantenimiento del código. Cuando se probaron en sistemas operativos que utilizan el formato de archivo ejecutable ELF (Linux, FreeBSD, NetBSD, OpenBSD, Dragonfly, Solaris), un conjunto típico de aplicaciones Go de gran tamaño se creó un 20 % más rápido y el consumo de memoria se redujo en un promedio de un 30 %. El aumento de la productividad fue posible cambiando a un nuevo formato de archivo de objetos y reelaborando las etapas internas para aumentar el nivel de paralelización del trabajo. El vinculador nativo ahora se usa de forma predeterminada en los sistemas linux/amd64 y linux/arm64 en "-buildmode=pie", que ya no requiere el uso de un vinculador C.
  • En tiempo de ejecución, se ha mejorado significativamente la distribución de objetos pequeños en sistemas con una gran cantidad de núcleos de CPU y se ha reducido la latencia. En caso de fallas, se muestran valores con tipos numéricos y de cadena en lugar de mostrar la dirección. Al enviar señales SIGSEGV, SIGBUS y SIGFPE a una aplicación Go, en ausencia de un controlador os/signal.Notify, la aplicación saldrá con una salida de seguimiento de pila (anteriormente el comportamiento era impredecible).
  • El compilador se ha optimizado para reducir el tamaño de los archivos ejecutables generados en un promedio del 5 % al detener la inclusión de algunos metadatos para el recolector de basura y una limpieza más agresiva de los metadatos no utilizados.
  • Se ha agregado el indicador “-spectre” al compilador y ensamblador para habilitar la protección contra ataques de clase Spectre (para la mayoría de los programas esto no es necesario; habilitar la opción solo puede justificarse para algunos casos muy específicos).
  • En los certificados X.509, el campo CommonName ha quedado obsoleto y ya no se trata como un nombre de host si falta el campo Nombres alternativos del sujeto.
  • El comando "ir" en la variable de entorno GOPROXY ahora puede enumerar varios servidores proxy, separados por una coma o "|". Si el primer proxy de la lista devuelve un error (404 o 410), se intentará contactar a través del segundo proxy, etc.
  • La utilidad vet ha agregado una advertencia sobre el intento de convertir desde cadena(x) si "x" es un tipo de entero distinto de runa o byte.
  • Se ha agregado el indicador "-gnu" a la utilidad objdump para permitir el desensamblaje de la sintaxis del ensamblador GNU.
  • Nuevo paquete agregado hora/tzdatos, que le permite integrar una base de datos con datos de zona horaria en el programa.
  • De textos fuente y documentación. remoto las frases lista blanca/lista negra y maestro/esclavo, que ahora se reemplazan por "lista de permitidos", "lista de bloqueo", "proceso", "pty", "proc" y "control".
  • Se han realizado una gran parte de mejoras menores en la biblioteca estándar.
  • Se agregó soporte para OpenBSD 6.7 en los modos GOARCH=arm y GOARCH=arm64 (anteriormente solo se admitían GOARCH=386 y GOARCH=amd64).
  • Continuó el desarrollo de la plataforma RISC-V de 64 bits (GOOS=linux, GOARCH=riscv64).
  • Para los sistemas x32 de 86 bits, la próxima versión aumentará los requisitos mínimos del sistema: solo se seguirán admitiendo procesadores con SSE2. Para construir en modo GOARCH=386 necesitará al menos un Intel Pentium 4 (lanzado en 2000) o un AMD Opteron/Athlon 64 (lanzado en 2003).

Fuente: opennet.ru

Añadir un comentario