¡El lanzamiento de Go 1.21 ya está aquí!
Tags: go, opensource, cloud, softwaredevelopment
Published: 2023-08-18 13:06:06

¡Saludos a todos los entusiastas de Go! Hoy vengo a contaros que el 8 de agosto del 2023 han anunciado que el equipo de Go ha lanzado la tan esperada versión Go 1.21. En este artículo, te contaré todas las novedades y mejoras que esta versión trae consigo, y entenderás cómo pueden beneficiar tu experiencia de desarrollo. ¡Sigue leyendo para conocer todos los detalles!

## Herramientas Optimizadas
Una característica destacada de Go 1.21 es la disponibilidad general de la Optimización Basada en Perfiles (PGO) que anunciamos en la versión 1.20. Si un archivo llamado default.pgo está presente en el directorio del paquete principal, el comando "go" lo utilizará para habilitar una compilación PGO. Para más detalles, consulta la [documentación de PGO](https://go.dev/doc/pgo).
Han medido el impacto de PGO en una amplia variedad de programas desarrollados con Go y observan mejoras de rendimiento del 2 al 7 %.
Además, la herramienta "go" ahora soporta la compatibilidad hacia atrás y adelante en cuanto a lenguaje.

## Cambios en el Lenguaje
Go 1.21 introduce nuevas funciones integradas: min, max y clear. Además, se han realizado varias mejoras en la inferencia de tipos para funciones genéricas. La descripción de la inferencia de tipos en las especificaciones se ha ampliado y aclarado.
En futuras versiones de Go, planean abordar una de las trampas más comunes en la programación Go: la captura de variables en bucles. Go 1.21 presenta una vista previa de esta característica que puedes habilitar en tu código mediante una variable de entorno: GOEXPERIMENT=loopvar. Para más detalles, visita la página wiki [LoopvarExperiment]( https://go.dev/wiki/LoopvarExperiment).

## Nuevas adiciones a la Biblioteca Estándar
Go 1.21 introduce el nuevo paquete [log/slog]( https://go.dev/pkg/log/slog) para registro estructurado. También se ha añadido el paquete [slices]( https://go.dev/pkg/slices) para operaciones comunes en fragmentos de cualquier tipo de elemento. Esto incluye funciones de clasificación que son más rápidas y ergonómicas que las del paquete sort. Además, el nuevo paquete [maps]( https://go.dev/pkg/maps) ofrece operaciones comunes en mapas de cualquier tipo de clave o elemento. No olvidemos el paquete [cmp]( https://go.dev/pkg/cmp), que trae utilidades nuevas para comparar valores ordenados.

## Mejoras en el Rendimiento
Además de las mejoras de rendimiento al habilitar PGO:
El propio compilador de Go ha sido reconstruido con PGO habilitado para la versión 1.21, lo que resulta en una construcción de programas de Go de un 2 al 4 % más rápida, según la arquitectura del sistema.
Gracias a la afinación del recolector de basura, algunas aplicaciones podrían experimentar una reducción de hasta el 40 % en la latencia.
La recolección de trazas con [runtime/trace]( https://go.dev/pkg/runtime/trace) ahora incurre en un costo de CPU considerablemente menor en amd64 y arm64.

## Nuevo Puerto para WASI
Go 1.21 incluye un puerto experimental para la Interfaz del [Sistema WebAssembly (WASI)]( https://wasi.dev/), vista previa: GOOS=wasip1, GOARCH=wasm. Para facilitar la escritura de código WebAssembly más general, el compilador también admite una nueva directiva para importar funciones del host Wasm: go:wasmimport.

Espero que este resumen de la nueva versión de Go te haya gustado y si es así, dale un likeaso y sobre todo compártelo para que llegue a más personas y recuerda que si quieres aprender a desarrollar con Go puedes suscribirte a mi canal de YouTube: https://www.youtube.com/@FuenRob.