Desde Linux Darkcrizt  

Go 1.21 llega con cambios en la numeración, mejoras y mas

Goland

Go es un lenguaje de programación concurrente y compilado con tipado estático inspirado en la sintaxis de C

Poco después de 6 meses del lanzamiento de la versión anterior, llega la nueva versión del popular lenguaje de programación Go 1.21 y en esta nueva versión se destacan las nuevas características añadidas al idioma, asi como tambien PGO, la compatibilidad con versiones anteriores y más.

Para quienes desconocen de Go, debo decirles que este es un lenguaje de programación 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 tales como los lenguajes de scripting como la facilidad para escribir código, velocidad de desarrollo y protección contra errores.

Principales novedades de Go 1.21

Con el lanzamiento de esta nueva versión de Go 1.21, se introduce un pequeño cambio en la numeración de versiones, ya la numeración se venía manejando de la forma Go 1.x para referirnos tanto a la versión global del idioma Go como a la familia de versiones, así como a la primera versión de esta familia. A partir de Go 1.21, la primera versión ahora es Go 1.X.0. Pueden obtener mayor información del cómo se estará manejando la nueva numeración de Go en el siguiente enlace.

Por la parte de los cambios que se destacan de este nuevo lanzamiento podremos encontrar el soporte implementado para optimizaciones basadas en los resultados del perfilado de código (PGO – Optimización guiada por perfiles), ya que en la versión anterior solo estaba disponible como una vista previa y ahora en Go 1.21 está disponible para su uso general.

Otro de los cambios que se destaca de esta nueva versión, es que se implementó un port experimental para compilar el código de preparación de WebAssembly usando la API WASI (WebAssembly System Interface) para proporcionar una ejecución independiente.

Ademas de ello, tambien se destaca que se agregaron funciones integradas min y max para seleccionar el valor más pequeño/más grande, así como la función de borrar para eliminar o restablecer todos los elementos en el mapa o estructuras de corte.

Tambien se destaca que en esta nueva versión, la utilidad go es compatible con versiones anteriores y posteriores de otras versiones del lenguaje Go, lo que le permite usar herramientas antiguas para crear código nuevo y viceversa. Cuando Go debe realizar este tipo de cambio de comportamiento, ahora elige entre el comportamiento antiguo y el nuevo en función del espacio de trabajo.

Por otra parte, tambien podremos encontrar que se agregó el soporte experimental para la nueva semántica para el procesamiento de variables en bucles, lo que permite evitar errores típicos por comportamiento específico al utilizar cierres y corrutinas en las iteraciones. La nueva semántica implica la creación para cada iteración del ciclo de una instancia separada de la variable declarada en el ciclo «for» utilizando el operador «:=».

Se han realizado tambien mejoras en la inferencia de tipos en funciones genéricas diseñadas para trabajar con varios tipos a la vez y es que ahora se puede llamar a una función con argumentos que son en sí mismas funciones genéricas, ademas de que la inferencia de tipos ahora también considera los métodos cuando se asigna un valor a una interfaz y que la inferencia de tipos ahora es precisa al hacer coincidir los tipos correspondientes en las asignaciones

De los demás cambios que se destacan, podemos encontrar los nuevos paquetes agregados a la biblioteca estándar:

  • log/slog: funciones para escribir registros estructurados.
  • slices: operaciones típicas con slices de cualquier tipo.
  • maps: operaciones útiles en asignaciones (mapa) con cualquier tipo de claves y elementos.
    cmp: funciones para comparar valores ordenados.
  • El compilador se reconstruyó con la inclusión de optimizaciones PGO, lo que permitió acelerar la compilación de programas en un 2-4%.
  • El recolector de elementos no utilizados se ha optimizado para reducir la latencia hasta en un 40 % en algunas aplicaciones.
  • Reducción de los gastos generales al rastrear el código con el paquete runtime/trace en los sistemas amd64 y arm64.

Finalmente, si estás interesado en poder conocer más al respecto, puedes consultar los detalles en el siguiente enlace.

Leave A Comment

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.