Anunciamos Gin 1.12.0: Compatibilidad BSON, Mejoras de Context, Rendimiento y Más
Gin v1.12.0 Ha Llegado
Nos complace anunciar el lanzamiento de Gin v1.12.0, lleno de nuevas funciones, 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 Clave
-
Compatibilidad con Protocolo BSON: La capa de renderizado ahora admite codificación BSON, abriendo la puerta a un intercambio de datos binarios más eficiente (#4145).
-
Nuevos Métodos de Context: Dos nuevos auxiliares hacen que el manejo de errores sea más limpio e idiomático:
-
Enlace Flexible: El enlace de URI y consulta ahora respeta
encoding.UnmarshalText, dándole más control sobre la deserialización de tipos personalizados (#4203). -
Opción de Ruta Escapada: Una nueva opción de motor te permite optar por usar la ruta de solicitud escapada (cruda) para el enrutamiento (#4420).
-
Búferes de Protocolo en Negociación de Contenido:
contextahora admite Búferes de Protocolo como tipo de contenido negociable, facilitando la integración de respuestas de estilo gRPC (#4423). -
Latencia Colorizada en Logger: El logger predeterminado ahora representa la latencia con color, facilitando la identificación de solicitudes lentas de un vistazo (#4146).
🚀 Rendimiento y Mejoras
- Optimizaciones del Árbol de Enrutamiento: Múltiples mejoras al árbol radix reducen asignaciones y aceleran el análisis de rutas:
- Optimización de Recuperación: La lectura de seguimiento de pila ahora es más eficiente (#4466).
- Mejoras del Logger: La salida de cadena de consulta ahora se puede omitir mediante configuración (#4547).
- Confianza de Socket Unix: Los encabezados
X-Forwarded-Forahora siempre son de confianza cuando las solicitudes llegan a través de un socket Unix (#3359). - Seguridad de Flush:
Flush()ya no genera pánico cuando elhttp.ResponseWritersubyacente no implementahttp.Flusher(#4479). - Refactorizaciones de Calidad de Código: Manejo de mapas más limpio con
maps.Copyymaps.Clone, constantes nombradas reemplazando números mágicos, bucles range-over-int modernizados y más (#4352, #4333, #4529, #4392).
🐛 Correcciones de Errores
- Pánico del Enrutador Corregido: Se resolvió un pánico en
findCaseInsensitivePathReccuandoRedirectFixedPathestá habilitado (#4535). - Content-Length en Renderizado de Datos:
Data.Renderahora escriba correctamente el encabezadoContent-Length(#4206). - ClientIP con Múltiples Encabezados:
ClientIPahora maneja correctamente solicitudes con múltiples valores de encabezadoX-Forwarded-For(#4472). - Casos Límite de Enlace: Se corrigieron errores de valor vacío en enlace (#2169) y se mejoró el manejo de matrices/slices vacíos en enlace de formulario (#4380).
- Rutas con Dos Puntos Literales: Las rutas con dos puntos literales ahora funcionan correctamente con
engine.Handler()(#4415). - Fuga de Descriptor de Archivo:
RunFdahora cierra correctamente el identificadoros.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 se pretendía (#4336). - Versión Debug No Coincidente: Se corrigió una cadena de versión incorrecta reportada en modo de depuración (#4403).
🔧 Actualizaciones de Compilación, Dependencia e IC
- Mínimo de Go 1.25: La versión mínima de Go compatible ahora es 1.25, con flujos de trabajo de CI actualizados en consecuencia (#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: colaboradores, revisores y usuarios por igual. ¡Gracias por hacer que Gin sea mejor con cada lanzamiento!
¿Listo para probar Gin 1.12.0? ¡Actualiza en GitHub y cuéntanos qué piensas!