跳到內容

宣佈 Gin 1.12.0:BSON 支援、Context 改進、效能提升及更多功能

Gin v1.12.0 已正式發佈

我們榮幸地宣佈 Gin v1.12.0 的發佈,它包含新功能、顯著的效能改進和一系列錯誤修復。此版本加深了 Gin 對現代協議的支援,完善了開發者體驗,並延續了專案保持快速和輕量級的傳統。

🌟 主要功能

  • **BSON 協議支援:**渲染層現已支援 BSON 編碼,為更高效的二進位資料交換打開了大門 (#4145)。

  • **新的 Context 方法:**兩個新的輔助方法使錯誤處理更加清晰和符合習慣:

    • GetErrorGetErrorSlice 用於從 context 中型別安全地檢索錯誤 (#4502)
    • Delete 方法用於從 context 中移除鍵 (#38e7651)
  • **靈活的綁定:**URI 和查詢綁定現已支援 encoding.UnmarshalText,為您提供更多對自訂型別反序列化的控制 (#4203)。

  • **轉義路徑選項:**新的引擎選項允許您選擇使用轉義(原始)請求路徑進行路由 (#4420)。

  • 協定緩衝區內容協商:context 現已支援協定緩衝區作為可協商的內容型別,使 gRPC 風格的回應更容易整合 (#4423)。

  • **Logger 中的彩色延遲顯示:**預設 logger 現以彩色呈現延遲,使您更容易一眼識別慢請求 (#4146)。

🚀 效能與增強

  • **路由樹優化:**對基數樹的多項改進減少了配置並加快了路徑解析:
    • findCaseInsensitivePath 中的更少配置 (#4417)
    • 使用 strings.Count 進行高效的路徑解析 (#4246)
    • redirectTrailingSlash 中用自訂函式替換正規表達式 (#4414)
  • **復原優化:**堆疊追蹤讀取現已更加高效 (#4466)。
  • **Logger 改進:**現可透過設定跳過查詢字串輸出 (#4547)。
  • **Unix Socket 信任:**當請求透過 Unix socket 到達時,X-Forwarded-For 標頭現已始終受信任 (#3359)。
  • **Flush 安全性:**當底層 http.ResponseWriter 未實現 http.Flusher 時,Flush() 不再當機 (#4479)。
  • **程式碼品質重構:**使用 maps.Copymaps.Clone 的更清晰的 map 處理,用具名常數替換魔術數字,現代化的 range-over-int 迴圈等 (#4352, #4333, #4529, #4392)。

🐛 錯誤修復

  • **路由當機已修復:**修復了啟用 RedirectFixedPathfindCaseInsensitivePathRec 中的當機 (#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-driver v2 (#4549)。

Gin 1.12.0 反映了我們社群的奉獻——貢獻者、審核者和使用者。感謝您在每個版本中使 Gin 變得更好。

準備好試用 Gin 1.12.0 了嗎?在 GitHub 上升級並告訴我們您的想法!