宣布 Gin 1.12.0:BSON 支持、Context 改进、性能提升及更多功能
Gin v1.12.0 已正式发布
我们荣幸地宣布 Gin v1.12.0 的发布,它包含新功能、显著的性能改进和一系列错误修复。此版本加深了 Gin 对现代协议的支持,完善了开发者体验,并延续了项目保持快速和轻量级的传统。
🌟 主要功能
-
**BSON 协议支持:**渲染层现已支持 BSON 编码,为更高效的二进制数据交换打开了大门 (#4145)。
-
**新的 Context 方法:**两个新的辅助方法使错误处理更加清晰和符合习惯:
-
**灵活的绑定:**URI 和查询绑定现已支持
encoding.UnmarshalText,为您提供更多对自定义类型反序列化的控制 (#4203)。 -
**转义路径选项:**新的引擎选项允许您选择使用转义(原始)请求路径进行路由 (#4420)。
-
协议缓冲区内容协商:
context现已支持协议缓冲区作为可协商的内容类型,使 gRPC 风格的响应更容易集成 (#4423)。 -
**Logger 中的彩色延迟显示:**默认 logger 现以彩色呈现延迟,使您更容易一眼识别慢请求 (#4146)。
🚀 性能与增强
- **路由树优化:**对基数树的多项改进减少了分配并加快了路径解析:
- **恢复优化:**堆栈跟踪读取现已更加高效 (#4466)。
- **Logger 改进:**现可通过配置跳过查询字符串输出 (#4547)。
- **Unix Socket 信任:**当请求通过 Unix socket 到达时,
X-Forwarded-For头现已始终受信任 (#3359)。 - **Flush 安全性:**当底层
http.ResponseWriter未实现http.Flusher时,Flush()不再崩溃 (#4479)。 - **代码质量重构:**使用
maps.Copy和maps.Clone的更清晰的 map 处理,用命名常量替换魔术数字,现代化的 range-over-int 循环等 (#4352, #4333, #4529, #4392)。
🐛 错误修复
- **路由崩溃已修复:**修复了启用
RedirectFixedPath时findCaseInsensitivePathRec中的崩溃 (#4535)。 - Data 渲染中的 Content-Length:
Data.Render现已正确写入Content-Length头 (#4206)。 - 多头部的 ClientIP:
ClientIP现已正确处理具有多个X-Forwarded-For头值的请求 (#4472)。 - **绑定边界情况:**修复了绑定中的空值错误 (#2169) 并改进了表单绑定中的空切片/数组处理 (#4380)。
- **文字冒号路由:**带有文字冒号的路由现已正确地与
engine.Handler()配合工作 (#4415)。 - 文件描述符泄漏:
RunFd现已正确关闭os.File句柄以防止资源泄漏 (#4422)。 - **Hijack 行为:**优化了 hijack 行为以正确模型化响应生命周期 (#4373)。
- 恢复:
http.ErrAbortHandler现已如预期那样在恢复中间件中被抑制 (#4336)。 - **调试版本不匹配:**修复了在调试模式下报告的不正确版本字符串 (#4403)。
🔧 构建、依赖与 CI 更新
- **Go 1.25 最低版本:**最低支持的 Go 版本现为 1.25,CI 工作流也已相应更新 (#4550)。
- **BSON 依赖升级:**BSON 绑定依赖已升级至
mongo-driverv2 (#4549)。
Gin 1.12.0 反映了我们社区的奉献——贡献者、审阅者和用户。感谢您在每个版本中使 Gin 变得更好。
准备好试用 Gin 1.12.0 了吗?在 GitHub 上升级并告诉我们您的想法!