1 puntos por GN⁺ 2025-02-15 | 1 comentarios | Compartir por WhatsApp
  • Cambios en el lenguaje
    • Go 1.24 ahora admite completamente los alias de tipos genéricos. Los alias de tipos pueden recibir parámetros como los tipos definidos.
  • Mejoras de rendimiento
    • Se realizaron varias mejoras de rendimiento en el runtime, logrando una reducción promedio de 2-3% en la sobrecarga de CPU en benchmarks representativos.
    • Incluye una nueva implementación integrada de mapas, mejoras en la eficiencia de asignación de memoria para objetos pequeños y una nueva implementación interna de mutex en el runtime.
  • Mejoras en las herramientas
    • El comando go ofrece un mecanismo para rastrear las dependencias de herramientas de un módulo. Se puede usar go get -tool para agregar directivas de herramientas al módulo actual.
    • El nuevo analizador de pruebas del subcomando go vet reporta errores comunes en las declaraciones de pruebas, fuzzers, benchmarks y ejemplos dentro de paquetes de prueba.
  • Adiciones a la biblioteca estándar
    • La biblioteca estándar incluye un nuevo mecanismo para el cumplimiento de FIPS 140-3, sin requerir cambios en el código fuente para usar algoritmos aprobados.
    • Varios paquetes que estaban en el módulo x/crypto ahora están disponibles en la biblioteca estándar.
    • Los benchmarks ahora pueden usar el método testing.B.Loop, más rápido y con menos errores.
    • El nuevo tipo os.Root ofrece la capacidad de realizar operaciones del sistema de archivos dentro de un directorio específico.
    • El runtime ofrece un nuevo mecanismo de limpieza llamado runtime.AddCleanup, que es más flexible, eficiente y menos propenso a errores que runtime.SetFinalizer.
  • Mejoras en el soporte de WebAssembly
    • Go 1.24 agrega la directiva go:wasmexport, que permite que los programas Go exporten funciones a un host de WebAssembly, y admite compilar programas Go como reactores/bibliotecas WASI.

1 comentarios

 
GN⁺ 2025-02-15
Opiniones en Hacker News
  • Me gusta especialmente la implementación de maps más rápida y que text/template ahora soporte tipos de función
  • En Go 1.23 introdujeron range sobre tipos de función, pero recién ahora funciona en las plantillas de Go
  • Me pregunto si se pueden especificar las etiquetas que se usarán al instalar herramientas definidas por una directiva de tool
    • Lo intenté, pero no funciona (se instala sin etiquetas)
    • Usé go install -tags 'postgres' github.com/golang-migrate/migrate/v4/cmd/migrate@latest
  • Me pregunto cuál es el caso de uso de os.Root
    • Entiendo que está relacionado con seguridad
    • Como internamente no usa Chroot, imagino que al final alguien podría encontrar una forma de escapar de Root
  • Es aburrido, pero me gusta
  • Lo que más me entusiasma son las nuevas flags de herramientas
    • Podré deshacerme del feo tools.go
  • Al usar GODEBUG=fips140=only, los algoritmos criptográficos que no cumplen con FIPS 140-3 devuelven errores o pánico
    • No me gusta la idea de que la biblioteca estándar provoque pánico intencionalmente
    • No he visto el código, pero me pregunto si solo pasa en funciones que actualmente no devuelven errores
  • Por fin llegaron los alias de tipos genéricos; los estuve esperando mucho tiempo
  • ¡Bien! Estaba esperando esta versión por GOAUTH
    • Ojalá trabajar con repositorios privados de git sea menos engorroso
    • Al ver go help goauth, no me hago demasiadas ilusiones