## gin-gonic/gin — v1.11.0…v1.12.0

_95 commits._

### Features
- **feat(render): add bson protocol (#4145)** (d7776de)
- **feat(context): add GetError and GetErrorSlice methods for error retrieval (#4502)** (53410d2)
- **feat(binding): add support for encoding.UnmarshalText in uri/query binding (#4203)** (192ac89)
- **feat(gin): add option to use escaped path (#4420)** (771dcc6)
- **feat(context): add Protocol Buffers support to content negotiation (#4423)** (acc55e0)
- **feat(context): implemented Delete method** (38e7651)
- **feat(logger): color latency (#4146)** (4dec17a)

### Fixes
- **fix(tree): panic in findCaseInsensitivePathRec with RedirectFixedPath (#4535)** (472d086)
- **fix(render): write content length in Data.Render (#4206)** (5c00df8)
- **fix: Correct typos, improve documentation clarity, and remove dead code (#4511)** (8e07d37)
- **perf(tree): reduce allocations in findCaseInsensitivePath (#4417)** (cad29c5)
- **fix(context): ClientIP handling for multiple X-Forwarded-For header values (#4472)** (9914178)
- **perf(recovery): optimize line reading in stack function (#4466)** (64a6ed9)
- **fix(debug): version mismatch (#4403)** (2a794cd)
- **fix(binding): empty value error (#2169)** (b917b14)
- **fix(recover): suppress http.ErrAbortHandler in recover (#4336)** (63dd3e6)
- **perf(path): replace regex with custom functions in redirectTrailingSlash (#4414)** (440eb14)
- **fix(gin): literal colon routes not working with engine.Handler() (#4415)** (5fad976)
- **fix(gin): close os.File in RunFd to prevent resource leak (#4422)** (c3d5a28)
- **perf(tree): optimize path parsing using strings.Count (#4246)** (2e22e50)
- **fix(binding): improve empty slice/array handling in form binding (#4380)** (c3d1092)
- **fix(response): refine hijack behavior for response lifecycle (#4373)** (234a6d4)

### Tests
- **test(context): use http.StatusContinue constant instead of magic number 100 (#4542)** (fb25834)
- **test(render): add comprehensive error handling tests (#4541)** (6f1d5fe)
- **test(render): add comprehensive tests for MsgPack render (#4537)** (216a4a7)
- **test(debug): improve the test coverage of debug.go to 100% (#4404)** (19b877f)
- **test(gin): resolve race conditions in integration tests (#4453)** (f416d1e)
- **test(bytesconv): add tests for empty/nil cases (#4454)** (583db59)
- **test(gin): Add comprehensive test coverage for ginS package (#4442)** (c358d56)
- **test(benchmarks): fix the incorrect function name (#4375)** (ed150e7)

### Docs
- **docs: update documentation to reflect Go version changes (#4552)** (73726dc)
- **docs: document and finalize Gin v1.12.0 release (#4551)** (e292e5c)
- **docs(context): add example comments for ShouldBind* methods (#4428)** (58135f0)
- **docs(README): add a Trivy security scan badge (#4426)** (dceb61e)
- **docs(context): fix some comments (#4396)** (c221133)
- **docs(context): fix wrong function name in comment (#4382)** (731374f)
- **docs: update feature documentation instructions for broken doc link** (f3a5e78)
- **docs: revamp contributing guidelines with comprehensive instructions (#4365)** (6a1d121)
- **docs: revamp GitHub contribution and support templates (#4364)** (7925414)
- **docs: announce Gin 1.11.0 release with blog link (#4363)** (1bbbec0)
- **docs(readme): revamp and expand documentation for clarity and completeness (#4362)** (4dd00f8)

### Chore
- **ci: update Go version support to 1.25+ across CI and docs (#4550)** (ae3f524)
- **chore(deps): bump golang.org/x/net from 0.50.0 to 0.51.0 (#4548)** (38534e2)
- **chore(logger): allow skipping query string output (#4547)** (db30908)
- **chore(binding): upgrade bson dependency to mongo-driver v2 (#4549)** (ba093d1)
- **chore(deps): bump goreleaser/goreleaser-action in the actions group (#4546)** (1b414bd)
- **chore(deps): bump github.com/go-playground/validator/v10 (#4509)** (81dba46)
- **chore(deps): bump aquasecurity/trivy-action in the actions group (#4544)** (0c219e7)
- **ci: update CI workflows and standardize Trivy config quotes (#4531)** (00900fb)
- **chore(deps): bump golang.org/x/net from 0.49.0 to 0.50.0 (#4538)** (5260de6)
- **chore(deps): bump github.com/bytedance/sonic from 1.14.2 to 1.15.0 (#4539)** (5f424ff)
- **chore(deps): bump aquasecurity/trivy-action in the actions group (#4534)** (f5c267d)
- **chore(deps): bump go.mongodb.org/mongo-driver from 1.17.7 to 1.17.9 (#4533)** (bf52b07)
- **chore(deps): bump github.com/quic-go/quic-go from 0.57.1 to 0.59.0 (#4532)** (6e3ac82)
- **chore(deps): bump github.com/goccy/go-yaml from 1.19.1 to 1.19.2 (#4507)** (71cefce)
- **chore(deps): bump golang.org/x/net from 0.47.0 to 0.49.0 (#4508)** (882f42b)
- **refactor: replace magic numbers with named constants in bodyAllowedForStatus (#4529)** (488f8c3)
- **refactor: for loop can be modernized using range over int (#4392)** (e3118cc)
- **chore(deps): bump github.com/goccy/go-yaml from 1.19.0 to 1.19.1 (#4476)** (d9e5cdf)
- **chore(deps): bump goreleaser/goreleaser-action from 5 to 6 (#3992)** (ac95fa6)
- **chore(context): always trust xff headers from unix socket (#3359)** (b2b489d)
- **refactor(recovery): smart error comparison (#4142)** (3ab698d)
- **refactor(context): replace hardcoded localhost IPs with constants (#4481)** (915e4c9)
- **chore(response): prevent Flush() panic when `http.Flusher` (#4479)** (26c3a62)
- **chore(deps): bump actions/cache from 4 to 5 in the actions group (#4469)** (22c274c)
- **refactor(utils): move util functions to utils.go (#4467)** (d1a1534)
- **chore(deps): bump github.com/goccy/go-yaml from 1.18.0 to 1.19.0 (#4458)** (fad706f)
- **chore(deps): upgrade quic-go to v0.57.1** (af6e8b7)
- **chore(deps): bump actions/checkout from 5 to 6 in the actions group (#4446)** (52ecf02)
- **chore(deps): upgrade golang.org/x/crypto to v0.45.0 (#4449)** (ecb3f7b)
- **ci(sec): schedule Trivy security scans to run daily at midnight UTC (#4439)** (e88fc89)
- **ci(sec): improve type safety and server organization in HTTP middleware (#4437)** (93ff771)
- **refactor: use b.Loop() to simplify the code and improve performance (#4432)** (a85ef5c)
- **ci(lint): refactor test assertions and linter configuration (#4436)** (fb27ef2)
- **chore(deps): bump golang.org/x/net from 0.46.0 to 0.47.0 (#4433)** (19c2d5c)
- **chore(deps): bump github.com/quic-go/quic-go from 0.55.0 to 0.56.0 (#4430)** (a9401cd)
- **chore(deps): bump golangci/golangci-lint-action in the actions group (#4431)** (d1bcabc)
- **chore(deps): bump github/codeql-action from 3 to 4 in the actions group (#4425)** (0c0e99d)
- **ci: replace vulnerability scanning workflow with Trivy integration (#4421)** (5e5ff3a)
- **chore(deps): bump github.com/ugorji/go/codec from 1.3.0 to 1.3.1 (#4409)** (52f70cf)
- **chore(deps): bump github.com/bytedance/sonic from 1.14.0 to 1.14.2 (#4410)** (87c207a)
- **refactor(context): omit the return value names (#4395)** (c0048f6)
- **refactor: use b.Loop() to simplify the code and improve performance (#4389)** (9968c4b)
- **chore(deps): bump github.com/quic-go/quic-go from 0.54.1 to 0.55.0 (#4384)** (053e576)
- **chore(deps): bump golang.org/x/net from 0.43.0 to 0.46.0 (#4391)** (0d085ed)
- **chore: bump minimum Go version to 1.24 and update workflows (#4388)** (5dd833f)
- **chore(deps): bump github.com/go-playground/validator/v10 (#4385)** (48a5dca)
- **chore(deps): bump github/codeql-action from 3 to 4 in the actions group (#4387)** (0bd10a8)
- **chore(deps): bump google.golang.org/protobuf from 1.36.9 to 1.36.10 (#4383)** (8ca9754)
- **refactor(binding): use maps.Copy for cleaner map handling (#4352)** (39858a0)
- **chore(deps): bump github.com/quic-go/quic-go from 0.54.0 to 0.54.1 (#4379)** (df27537)
- **chore(deps): bump the actions group with 2 updates (#4368)** (048f6fb)
- **ci(bot): increase frequency and group updates for dependencies (#4367)** (61b67de)
- **refactor(context): using maps.Clone (#4333)** (414de60)
- **refactor(ginS): use sync.OnceValue to simplify engine function (#4314)** (59e9d4a)

_Recap by [Repo Wrapped](https://repowrapped.com/gh/gin-gonic/gin?utm_source=github-action)._