Anuncio de Gin 1.12.0: Soporte BSON, Mejoras de Context, Rendimiento y más
Gin v1.12.0 ha llegado
Estamos encantados de anunciar el lanzamiento de Gin v1.12.0, repleto de nuevas características, mejoras significativas de rendimiento y una sólida ronda de correcciones de errores. Este lanzamiento profundiza el soporte de Gin para protocolos modernos, refina la experiencia del desarrollador y continúa la tradición del proyecto de mantenerse rápido y ligero.
Características principales
-
Soporte del protocolo BSON: La capa de renderizado ahora soporta la codificación BSON, abriendo la puerta a un intercambio de datos binarios más eficiente (#4145).
-
Nuevos métodos de Context: Dos nuevos helpers hacen que el manejo de errores sea más limpio e idiomático:
-
Enlace flexible: El enlace de URI y query ahora respeta
encoding.UnmarshalText, dándote más control sobre la deserialización de tipos personalizados (#4203). -
Opción de ruta escapada: Una nueva opción del engine te permite optar por usar la ruta de solicitud escapada (sin procesar) para el enrutamiento (#4420).
-
Protocol Buffers en la negociación de contenido:
contextahora soporta Protocol Buffers como tipo de contenido negociable, facilitando la integración de respuestas estilo gRPC (#4423). -
Latencia coloreada en el Logger: El logger predeterminado ahora muestra la latencia con color, facilitando detectar solicitudes lentas de un vistazo (#4146).
Rendimiento y mejoras
- Optimizaciones del árbol del router: Múltiples mejoras en el árbol radix reducen las asignaciones y aceleran el análisis de rutas:
- Optimización de recuperación: La lectura de stack traces es ahora más eficiente (#4466).
- Mejoras del Logger: La salida de query strings ahora puede omitirse mediante configuración (#4547).
- Confianza en Unix Socket: Los headers
X-Forwarded-Forahora siempre son confiables cuando las solicitudes llegan a través de un socket Unix (#3359). - Seguridad de Flush:
Flush()ya no produce panic cuando elhttp.ResponseWritersubyacente no implementahttp.Flusher(#4479). - Refactorizaciones de calidad de código: Manejo más limpio de mapas con
maps.Copyymaps.Clone, constantes con nombre reemplazando números mágicos, bucles modernizados range-over-int y más (#4352, #4333, #4529, #4392).
Correcciones de errores
- Panic del router corregido: Se resolvió un panic en
findCaseInsensitivePathReccuandoRedirectFixedPathestá habilitado (#4535). - Content-Length en renderizado de datos:
Data.Renderahora escribe correctamente el headerContent-Length(#4206). - ClientIP con múltiples headers:
ClientIPahora maneja correctamente solicitudes con múltiples valores de headerX-Forwarded-For(#4472). - Casos límite de enlace: Se corrigieron errores de valores vacíos en el enlace (#2169) y se mejoró el manejo de slices/arrays vacíos en el enlace de formularios (#4380).
- Rutas con dos puntos literales: Las rutas con dos puntos literales ahora funcionan correctamente con
engine.Handler()(#4415). - Fuga de descriptores de archivo:
RunFdahora cierra correctamente el handleos.Filepara prevenir fugas de recursos (#4422). - Comportamiento de Hijack: Se refinó el comportamiento de hijack para modelar correctamente el ciclo de vida de la respuesta (#4373).
- Recuperación:
http.ErrAbortHandlerahora se suprime en el middleware de recuperación como estaba previsto (#4336). - Discrepancia de versión en debug: Se corrigió una cadena de versión incorrecta reportada en modo debug (#4403).
Actualizaciones de compilación, dependencias y CI
- Mínimo Go 1.25: La versión mínima de Go soportada es ahora 1.25, con los flujos de trabajo de CI actualizados correspondientemente (#4550).
- Actualización de dependencia BSON: La dependencia de enlace BSON ha sido actualizada a
mongo-driverv2 (#4549).
Gin 1.12.0 refleja la dedicación de nuestra comunidad: contribuidores, revisores y usuarios por igual. Gracias por hacer Gin mejor con cada lanzamiento.
¿Listo para probar Gin 1.12.0? Actualiza en GitHub y cuéntanos qué te parece.