Gin 1.12.0 の発表:BSON サポート、Context の改善、パフォーマンス向上など
Gin v1.12.0 がリリースされました
新機能、顕著なパフォーマンス向上、そして一連のバグ修正を含む Gin v1.12.0 のリリースをお知らせします。このリリースは、Gin の最新プロトコルに対するサポートを深め、開発者体験を改善し、プロジェクトの高速でスリムであるという伝統を継続しています。
🌟 主な機能
-
**BSON プロトコルサポート:**レンダリングレイヤーが BSON エンコーディングをサポートするようになり、より効率的なバイナリデータ交換の扉が開きました (#4145)。
-
**新しい Context メソッド:**2 つの新しいヘルパーメソッドにより、エラーハンドリングがより明確で慣用的になります:
-
**柔軟なバインディング:**URI とクエリバインディングが
encoding.UnmarshalTextに対応し、カスタム型のデシリアライゼーションをより細かく制御できるようになりました (#4203)。 -
**エスケープパスオプション:**新しいエンジンオプションにより、ルーティングにエスケープされた(生の)リクエストパスを使用することを選択できます (#4420)。
-
コンテンツネゴシエーションでの Protocol Buffers:
contextが Protocol Buffers をコンテンツタイプとしてサポートするようになり、gRPC スタイルのレスポンスの統合がより簡単になりました (#4423)。 -
**Logger での色付き遅延表示:**デフォルトのロガーが遅延を色で表示するようになり、遅いリクエストを一目で識別できるようになりました (#4146)。
🚀 パフォーマンスと改善
- **ルータツリーの最適化:**基数木への複数の改善により、アロケーションを削減し、パス解析を高速化:
- **リカバリ最適化:**スタックトレース読み込みがより効率的に (#4466)。
- **Logger 改善:**設定によりクエリ文字列の出力をスキップ可能に (#4547)。
- **Unix Socket 信頼:**Unix socket 経由でのリクエスト到着時、
X-Forwarded-Forヘッダーが常に信頼されるようになりました (#3359)。 - **Flush の安全性:**基礎となる
http.ResponseWriterがhttp.Flusherを実装していない場合、Flush()がパニックを起こさなくなりました (#4479)。 - コード品質の改善:
maps.Copyとmaps.Cloneを使用したより明確なマップ処理、マジックナンバーを名前付き定数に置き換え、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 でアップグレードして、ご意見をお聞かせください!