11 feb 2023·1 min de lectura

Go 1.20 presenta una vista previa de la optimización guiada por perfiles y mejoras lingüísticas

Go 1.20, la última actualización del lenguaje de código abierto desarrollado por Google, incluye una vista previa de la optimización guiada por perfiles (PGO) y mejoras en el lenguaje. PGO mejora el rendimiento entre un 3% y un 4% con la optimización inlining, mientras que otras optimizaciones están en proyecto.

Go 1.20 presenta una vista previa de la optimización guiada por perfiles y mejoras lingüísticas

Go 1.20, la versión de producción del lenguaje de código abierto creado por Google y célebre por su sencillez, concurrencia y características de programación funcional, se ha presentado con un avance de la optimización guiada por perfiles (PGO) para el compilador. Go 1.20 puede descargarse desde el sitio web oficial go.dev.

Con el avance de PGO en Go 1.20, la cadena de herramientas del compilador puede llevar a cabo optimizaciones específicas de la aplicación y la carga de trabajo en función de la información del perfil en tiempo de ejecución. El compilador actual admite perfiles de CPU pprof, que pueden recopilarse utilizando los paquetes runtime/pprof o net/http/pprof.

También conocida como optimización dirigida por realimentación, la PGO consiste en devolver al compilador datos de perfiles de ejecuciones representativas de la aplicación para la siguiente compilación de la misma. Al utilizar esta información, el compilador puede tomar decisiones de optimización más informadas. Las pruebas comparativas de un conjunto representativo de programas Go demuestran que la optimización PGO aumenta el rendimiento entre un 3% y un 4%. Se espera que las próximas versiones introduzcan más optimizaciones PGO.

Junto con la introducción de PGO, Go 1.20 también aporta cuatro cambios al lenguaje. En primer lugar, la capacidad de convertir una porción en un puntero de matriz, introducida en Go 1.17 de 2021, se extiende ahora a las conversiones de una porción en una matriz. En segundo lugar, el paquete unsafe incluye tres nuevas funciones: SliceData, String, y StringData. Estas funciones ofrecen la capacidad completa de construir y deconstruir valores slice y string, independientemente de su representación exacta.

En tercer lugar, la especificación establece ahora que los valores struct se comparan campo por campo, teniendo en cuenta los campos en el orden en que aparecen en la definición del tipo struct, y deteniéndose en la primera discordancia. En cuarto lugar, los tipos comparables, como las interfaces ordinarias, pueden satisfacer restricciones comparables, aunque los argumentos de tipo no sean estrictamente comparables. Esto permite la instanciación de un parámetro de tipo restringido por restricciones comparables con un argumento de tipo no estrictamente comparable, como un tipo de interfaz o un tipo compuesto que contiene un tipo de interfaz.

Además de estos cambios en el lenguaje, Go 1.20 incluye otras mejoras, como el soporte para la recopilación de perfiles de cobertura de código para programas, incluyendo aplicaciones y pruebas de integración. El directorio $GOROOT/pkg ya no guarda actividades de paquetes precompilados para la biblioteca estándar, lo que reduce el tamaño de la distribución de Go y evita la desviación de la cadena de herramientas de C para los paquetes cgo. Además, la implementación de go test -json se ha fortificado para aumentar la robustez, mientras que el comando go version -m ahora lee una gama más amplia de binarios Go, incluyendo DLLs de Windows y binarios Linux sin permiso de ejecución.

Go 1.20 también ofrece soporte experimental para FreeBSD en RISC-V y desactiva cgo por defecto en sistemas sin una cadena de herramientas C. Sin embargo, Go 1.20 será la última versión compatible con macOS 10.13 High Sierra y 10.14 Mojave, y Go 1.21 requerirá macOS 10.15 Catalina o posterior.

No-code Una plataforma como AppMaster.io puede beneficiarse enormemente de la incorporación de lenguajes recién optimizados como Go 1.20. Al integrar herramientas tan potentes para aplicaciones web, móviles y backend, las empresas pueden lograr mejoras significativas en productividad, experiencia de usuario y escalabilidad. Obtenga más información sobre el desarrollo de aplicacionesno-code y low-code para mantenerse a la vanguardia de la tecnología.

Easy to start
Create something amazing

Experiment with AppMaster with free plan.
When you will be ready you can choose the proper subscription.

Get Started