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

_126 commits._

### Features
- **feat: added `AbortWithStatusPureJSON()` in `Context` (#4290)** (dbd8a25)
- **feat: support custom json codec at runtime (#3391)** (688a429)
- **feat(context): add SetCookieData (#4240)** (fb09c82)
- **feat(fs): Implement loading HTML from http.FileSystem (#4053)** (71496ab)
- **feat(binding): add support for unixMilli and unixMicro (#4190)** (4ccfa7c)
- **feat(form): Support default values for collections in form binding (#4048)** (f05f966)
- **feat(context): GetXxx added support for more go native types (#3633)** (9d7c0e9)
- **feat(form): add array collection format in form binding (#3986)** (3cb3067)
- **feat(router): add literal colon support (#1432) (#2857)** (4621b7a)
- **feat(form): add custom string slice for form tag unmarshal (#3970) (#3971)** (24d6764)
- **feat(binding): add BindPlain (#3904)** (6ca8ddb)
- **feat(gin): support http3 using quic-go/quic-go (#3210)** (3ac729d)
- **feat(fs): Export, test and document OnlyFilesFS (#3939)** (8791c96)

### Fixes
- **perf(context): optimize getMapFromFormData performance (#4339)** (f9bd00a)
- **perf(recovery): optimize the log output of CustomRecoveryWithWriter (#4258)** (45b805f)
- **fix: version number discrepancy (#4299)** (5826722)
- **fix(docs): missing go markdown codeblock (#4266)** (dd33ff7)
- **perf(recover): replace bytes with strings in function for better performance (#4252)** (3c12d2a)
- **Revert "fix(time): binding time with empty value (#4103)" (#4245)** (8fb3136)
- **fix(time): binding time with empty value (#4103)** (674522d)
- **context_test.go: fix useless asserts (#4115)** (8f7c340)
- **perf(all): use strings.Cut to replace strings.SplitN (#4239)** (3d8e288)
- **fix(errors): change Unwrap method receiver to value type (#4232)** (b38c59d)
- **fix: sonic on arm64 (#4234)** (7a1b655)
- **perf: optimize AsciiJSON.Render method by using fmt.Appendf and reusing temp buffer (#4175)** (0eb9949)
- **fix(readme): fix broken link to English documentation (#4222)** (3319038)
- **fix: prevent middleware re-entry issue in HandleContext (#3987)** (8763f33)
- **fix(binding): prevent duplicate decoding and add validation in decodeToml (#4193)** (e737e3e)
- **fix(golangci.yml): move fiximports to goimports section and replace exportloopref with copyloopvar (#4167)** (ebe5e2a)
- **fix(tree): Keep panic infos consistent when wildcard type build faild (#4077)** (ea53388)
- **fix(form): Set default value for form fields (#4047)** (28e57f5)
- **fix(gin): Do not panic when handling method not allowed on empty tree (#4003)** (626d55b)
- **fix(context): verify URL is Non-nil in initQueryCache() (#3969)** (e0d46de)
- **fix(context): YAML judgment logic in Negotiate (#3966)** (4f339e6)
- **fix(context): check handler is nil (#3413)** (36b0ded)
- **fix(go): invalid Go toolchain version (#3961)** (c677ccc)
- **fix(gin): data race warning for gin mode (#1580)** (7d14792)

### Backend
- **chroe: migrate yaml package to github.com/goccy/go-yaml (#4272)** (cf47752)

### Tests
- **test(context): add comprehensive unit tests for `Context.File()` method (#4307)** (dab5944)
- **test(route): add some test for routergroup (#4291)** (a4ac275)
- **test(context): add cleanup for uploaded file in SaveUploadedFile test (#4248)** (c8af82a)
- **test(internal/fs): fix test function name (#4235)** (2e2bd1f)
- **test: fix lint failures (#4244)** (da67cc1)

### Docs
- **docs(changelog): upgrade Gin to v1.11.0 and add release notes (#4361)** (6ad6205)
- **docs(changelog): update release notes for Gin v1.10.1 (#4360)** (7858527)
- **docs(test): improved GoDoc in test_helpers.go (#4270)** (42f9328)
- **docs(context): fix AbortWithStatusPureJSON comment typo (#4310)** (9708475)
- **docs: correct article usage in comments (#4301)** (ad4f436)
- **docs: added comment in doc.go (#4274)** (bdc1ad7)
- **docs: added available `ID` documentation (#4287)** (4bdcd9d)
- **docs: wrong badge workflow in README.md (#4286)** (76dd08d)
- **docs: small changes (#4261)** (a9c5b36)
- **docs(readme): add gin-gonic/contrib (#4134)** (19f5a13)
- **docs: fix comment (#4205)** (49e9137)
- **docs: Fixing English grammar mistakes and awkward sentence structure in doc/doc.md (#4207)** (1b53a47)
- **docs: add Upd language list (#4211)** (3afff29)
- **docs: fix case error of X-Real-IP (#4185)** (1eb8272)
- **docs(gin): Replace broken link to documentation with valid (#4064)** (9d11234)
- **docs: trimmed some white spaces (#4070)** (299c6f3)
- **docs(readme): add Portuguese documentation. (#4078)** (b080116)
- **docs(context): fix some function names in comment (#4079)** (ad740d5)
- **docs: fix route group example code (#4020)** (f2c861a)
- **docs: fix typo in Gin Quick Start (#3997)** (9c081de)
- **docs(readme): replace godoc with pkg (#3985)** (64ead9e)
- **docs(readme): fix language and moved link (#3962)** (a569ed8)
- **docs(gin): update link to dont-trust-all-proxies section (#3938) (#3945)** (f5f5da8)
- **docs(engine): fix comments for the `With` (#3955)** (e60113d)
- **docs: update documentation and release notes for Gin v1.10.0 (#3953)** (490accf)

### Chore
- **ci: integrate Trivy vulnerability scanning into CI workflow (#4359)** (cb000f5)
- **ci: support Go 1.25 (#4341)** (2119046)
- **build(deps): upgrade github.com/bytedance/sonic from v1.13.2 to v1.14.0 (#4342)** (da372fc)
- **refactor(render): remove headers parameter from writeHeader (#4353)** (e198f6e)
- **chore(deps): bump google.golang.org/protobuf from 1.36.8 to 1.36.9 (#4356)** (cca98d2)
- **refactor(tree): replace string(/) with "/" in node.insertChild (#4354)** (9b1e353)
- **chore(deps): bump google.golang.org/protobuf from 1.36.6 to 1.36.8 (#4346)** (28172fa)
- **chore(deps): bump github.com/stretchr/testify from 1.10.0 to 1.11.1 (#4347)** (4615025)
- **chore(deps): bump actions/setup-go from 5 to 6 (#4351)** (e7693e6)
- **chore(deps): bump github.com/quic-go/quic-go from 0.53.0 to 0.54.0 (#4328)** (077a2f3)
- **chore(render): do not export tomlContentType anymore (#4319)** (17d0b55)
- **chore(response): prevention of Hijack() runtime panics (#4295)** (32065bb)
- **build: make automatically update package in golang (#4311)** (b987b62)
- **refactor(context): remove unused Context dependency in get method (#4304)** (e4c2a27)
- **chore(deps): bump golang.org/x/net from 0.41.0 to 0.42.0 (#4297)** (ae5be7f)
- **chore(mode): remove impossible case (empty value for mode) (#4303)** (57ec9e6)
- **chore(deps): bump github.com/go-playground/validator/v10 (#4289)** (545fd74)
- **chore(deps): bump github.com/ugorji/go/codec from 1.2.12 to 1.3.0 (#4268)** (a628782)
- **chore(deps): bump github.com/quic-go/quic-go from 0.52.0 to 0.53.0 (#4281)** (b7d6308)
- **chore(deps): bump golang.org/x/net from 0.40.0 to 0.41.0 (#4262)** (0a86488)
- **refactor(internal/bytesconv): replace rand usage with crypto/rand and rand.Int63 (#4259)** (77d70e5)
- **refactor(recovery): extract Authorization header masking into maskAuthorization func (#4143)** (e30123a)
- **chore(deps): bump github.com/quic-go/quic-go from 0.51.0 to 0.52.0 (#4250)** (61c2b1c)
- **refactor(context): refactor `Keys` type to `map[any]any` (#3963)** (41d8591)
- **refactor: replace interface{} with any in type declarations (#4249)** (848e1cd)
- **chore(bind): return 413 status code when error is `http.MaxBytesError` (#4227)** (40725d8)
- **ci(golangci-lint): update configuration and fix lint issues (#4247)** (c4287b1)
- **chore: fix some function names in comment (#4131)** (d00e6a5)
- **chore(deps): bump golang.org/x/net from 0.38.0 to 0.40.0 (#4229)** (ef68fa0)
- **chore(deps): bump github.com/pelletier/go-toml/v2 from 2.2.2 to 2.2.4 (#4212)** (cf32d2d)
- **chore(deps): bump google.golang.org/protobuf from 1.34.1 to 1.36.6 (#4198)** (4714c2a)
- **refactor: replace magic number 128 with unicode.MaxASCII in AsciiJSON Render (#4224)** (67c9d4e)
- **chore(deps): bump github.com/quic-go/quic-go from 0.48.2 to 0.50.1 (#4197)** (bb82473)
- **chore(deps): bump github.com/go-playground/validator/v10 (#4208)** (255af88)
- **chore(deps): bump github.com/gin-contrib/sse from 0.1.0 to 1.1.0 (#4216)** (afa0c31)
- **chore(deps): bump golang.org/x/net from 0.37.0 to 0.38.0 (#4221)** (56fccc3)
- **chore: update Go versions and dependencies for improved compatibility (#4187)** (90cf460)
- **chore(deps): bump golang.org/x/net from 0.33.0 to 0.37.0 (#4178)** (733ee09)
- **refactor(context):Avoid using filepath.Dir twice in SaveUploadedFile (#4181)** (a4baac6)
- **ci: add go version 1.24 to GitHub Actions (#4154)** (3b28645)
- **chore(deps): bump github.com/go-playground/validator/v10 from 10.20.0 to 10.22.1 (#4052)** (c3c8620)
- **chore(security): upgrade quic-go version to 0.48.2 (#4127)** (3f818c3)
- **ci(lint): update workflows and improve test request consistency (#4126)** (23d6961)
- **chore(security): update vendor to fix CVE (#4121)** (e2e80f3)
- **refactor(context): add an optional permission parameter to the SaveUploadedFile method (#4068) (#4088)** (e46bd52)
- **ci(lint): enable usestdlibvars linter (#4091)** (e8d34d0)
- **ci(lint): enable perfsprint linter (#4090)** (02c1144)
- **chore(context): test context initialization and handler logic (#4087)** (f875d87)
- **refactor(context): simplify "GetType()" functions (#4080)** (c8a3adc)
- **refactor(context): refactor context handling and improve test robustness (#4066)** (647311a)
- **chore(deps): bump golang.org/x/net from 0.25.0 to 0.27.0 (#4013)** (cc4e114)
- **ci(lint): enable testifylint linter (#4010)** (5f55c6a)
- **chore(tree): replace the self-defined 'min' to official one (#3975)** (334160b)
- **refactor(slice): simplify SliceValidationError Error method (#3910)** (3f5b0af)
- **ci(Makefile): added help and descriptions to targets (#3964)** (40131af)
- **build: update Gin minimum Go version to 1.21 (#3960)** (7e29806)
- **ci: update Go version requirements and remove test files (#3957)** (b1c1e7b)
- **refactor(binding): use strings.Cut to replace strings.Index (#3522)** (8dd0889)

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