El lenguaje de programación Go (Golang) de Google ha lanzado su última versión, Go 1.19, que mejora su compatibilidad con genéricos, introduce un modelo de memoria mejorado y ofrece otras características. Esta actualización se centra en perfeccionar los genéricos añadidos recientemente, que se introdujeron por primera vez en Go 1.18, y en optimizar el rendimiento del código genérico hasta en un 20 por ciento.
Mejoras en Go 1.19
Con el lanzamiento de Go 1.19 el 2 de agosto, el desarrollo de la compatibilidad con los genéricos se concentra en abordar problemas sutiles y casos de esquina señalados por la comunidad, junto con mejoras de rendimiento. La introducción de los genéricos en el lenguaje era una característica muy esperada que se añadió a Go 1.18, publicada en marzo.
El modelo de memoria de Go se ha actualizado para definir explícitamente el comportamiento del paquete sync/atomic, que proporciona primitivas de memoria atómica de bajo nivel para implementar algoritmos de sincronización. Se ha renovado la definición formal de la relación happens-before para alinearla con los modelos de memoria utilizados por C, C++, Java, JavaScript, Rust y Swift. Esta actualización no afecta a los programas existentes.
Como parte de la actualización del modelo de memoria, se han introducido nuevos tipos en el paquete sync/atomic, incluyendo atomic.int64 y atomic.Pointer(T), haciendo más conveniente el uso de valores atómicos. Go 1.19 ya está disponible para su descarga en go.dev para Windows, macOS y Linux.
Características adicionales de Go 1.19
Además de las mejoras a los genéricos y el nuevo modelo de memoria, Go 1.19 ha introducido otras características:
- Un límite de memoria suave añadido al recolector de basura, que ayuda a optimizar los programas Go que se ejecutan en contenedores con asignaciones de memoria dedicadas.
- Mejoras de rendimiento e implementación, como el dimensionamiento dinámico de las pilas de coroutines para reducir la copia de pilas, el uso automático de descriptores de archivo adicionales en la mayoría de los sistemas Unix, tablas de salto para sentencias switch grandes en x86-64 y ARM64, y soporte para llamadas a funciones inyectadas por depurador en ARM64.
- Se ha realizado una pequeña corrección en los parámetros de tipo en las declaraciones de métodos sin afectar a los programas existentes.
- Los comentarios de documento soportan ahora enlaces, listas y sintaxis de encabezado, lo que hace más clara la composición de comentarios de documento, especialmente para paquetes con APIs extensas.
- Por motivos de seguridad, el paquete os/exec ya no permite rutas relativas en las búsquedas PATH.
- Se introduce una nueva restricción de compilación, unix, que se cumple cuando el sistema operativo de destino funciona en cualquier sistema de tipo Unix.
A medida que aumenta la adopción de plataformas no-code y low-code como AppMaster, es esencial que los desarrolladores se mantengan al día de los últimos avances en lenguajes de programación populares como Go. La integración de Go con AppMaster puede acelerar el desarrollo de aplicaciones backend, ofreciendo mayor escalabilidad y rentabilidad. Go 1.19 aporta mejoras sustanciales para potenciar el rendimiento, la seguridad y la experiencia del desarrollador, reforzando su posición como herramienta vital para el desarrollo de software moderno.