宣佈 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 上升級並告訴我們您的想法!