Go 1.25 estrena garbage collector experimental y el paquete testing/synctest para código concurrente

Go 1.25 se publicó el 12 de agosto de 2025 con tres novedades que merecen atención: un garbage collector experimental llamado Green Tea, el paquete testing/synctest para probar código concurrente, y mejoras de rendimiento en operaciones de punto flotante en AMD64.

Green Tea: un nuevo garbage collector

El GC de Go lleva años siendo uno de sus puntos fuertes, con pausas bajas y un comportamiento predecible. Pero en aplicaciones con mucha concurrencia y muchos objetos de vida corta, hay margen de mejora. Green Tea es el intento del equipo de Go de reducir esas pausas todavía más.

Por ahora es experimental y no es el GC por defecto. Para activarlo tienes que usar la variable de entorno GOEXPERIMENT=greenteagc. El equipo quiere recoger datos reales antes de convertirlo en el comportamiento estándar.

Si tienes una aplicación Go que sufre pausas del GC en producción, puede valer la pena probarlo en un entorno de staging y medir. Los primeros benchmarks muestran reducciones notables en las pausas, aunque los resultados varían bastante según el patrón de allocations del programa.

testing/synctest para tests concurrentes

Probar código concurrente en Go siempre ha sido incómodo cuando ese código depende del tiempo. Si tienes una goroutine que espera un timeout o un ticker, el test tiene que esperar también, lo que lo hace lento o flaky según cómo esté escrito.

El nuevo paquete testing/synctest resuelve esto con tiempo virtualizado. Dentro de un bloque synctest.Run, el tiempo no avanza solo, sino cuando el test lo indica. Puedes simular que han pasado cinco segundos sin esperar cinco segundos reales. Los tests son más rápidos y dejan de ser no deterministas.

Es una adición pequeña en tamaño pero con un impacto grande en calidad de tests. El código concurrente es difícil de testear bien; esta herramienta quita una excusa habitual para no hacerlo.

Rendimiento en AMD64 con instrucciones FMA

Go 1.25 aprovecha las instrucciones FMA (Fused Multiply-Add) disponibles en procesadores AMD64 modernos para acelerar operaciones de aritmética flotante. Si tu programa hace cálculos numéricos intensivos, puedes ver mejoras de rendimiento sin cambiar nada en el código.

Para entender mejor el estado general de Go como lenguaje, puedes leer sobre el estado de Go en 2025. Y si te preguntas cómo se compara Go con Rust en rendimiento, tienes disponible la comparativa entre Go y Rust para proyectos exigentes.

Imagen: Pexels / Lukas Blazek

COMPARTE ESTA NOTICIA

COMPARTIR EN FACEBOOK
COMPARTIR EN TWITTER
COMPARTIR EN LINKEDIN
COMPARTIR EN WHATSAPP