v1.12.0
- 192ac89eefc1c30f7c97ae48a9ffb1c6f1c8c8bc: feat(binding): add support for encoding.UnmarshalText in uri/query binding (#4203) (@takanuva15)
- 53410d2e07054369e0960fbe2eed97e1b9966f12: feat(context): add GetError and GetErrorSlice methods for error retrieval (#4502) (@raju-mechatronics)
- acc55e049e33b401e810dbd8c0d6dcb6b3ba2b05: feat(context): add Protocol Buffers support to content negotiation (#4423) (@1911860538)
- 38e765119241d990705169bedb5002a29ae0cbd1: feat(context): implemented Delete method (@Spyder01)
- 771dcc6476d7bc6abb9ec0235ecefa4d38fe6fb0: feat(gin): add option to use escaped path (#4420) (@ldesauw)
- 4dec17afdff48e8018c83618fbbe69fceeb2b41d: feat(logger): color latency (#4146) (@wsyqn6)
- d7776de7d444935ea4385999711bd6331a98fecb: feat(render): add bson protocol (#4145) (@laurentcau)
- b917b14ff9d189f16a7492be79d123a47806ee19: fix(binding): empty value error (#2169) (@guonaihong)
- c3d1092b3b48addf6f9cd00fe274ec3bd14650eb: fix(binding): improve empty slice/array handling in form binding (#4380) (@1911860538)
- 9914178584e42458ff7d23891463a880f58c9d86: fix(context): ClientIP handling for multiple X-Forwarded-For header values (#4472) (@Nurysso)
- 2a794cd0b0faa7d829291375b27a3467ea972b0d: fix(debug): version mismatch (#4403) (@zeek0x)
- c3d5a28ed6d3849da820195b6774d212bcc038a9: fix(gin): close os.File in RunFd to prevent resource leak (#4422) (@1911860538)
- 5fad976b372e381312f8de69f0969f1284d229d3: fix(gin): literal colon routes not working with engine.Handler() (#4415) (@pawannn)
- 63dd3e60cab89c27fb66bce1423bd268d52abad1: fix(recover): suppress http.ErrAbortHandler in recover (#4336) (@MondayCha)
- 5c00df8afadd06cc5be530dde00fe6d9fa4a2e4a: fix(render): write content length in Data.Render (#4206) (@dengaleev)
- 234a6d4c00cb77af9852aca0b8289745d5529b4b: fix(response): refine hijack behavior for response lifecycle (#4373) (@appleboy)
- 472d086af2acd924cb4b9d7be0525f7d790f69bc: fix(tree): panic in findCaseInsensitivePathRec with RedirectFixedPath (#4535) (@veeceey)
- 8e07d37c63e5536eb25f4af4c91eabeee4011fba: fix: Correct typos, improve documentation clarity, and remove dead code (#4511) (@mahanadh)
- ba093d19477b896ac89a7fc3246af23d290b8e26: chore(binding): upgrade bson dependency to mongo-driver v2 (#4549) (@BobDu)
- b2b489dbf4826c2c630717a77fd5e42774625410: chore(context): always trust xff headers from unix socket (#3359) (@WeidiDeng)
- 22c274c84ba5a502ce6453a9d2bb9e05ed91b911: chore(deps): bump actions/cache from 4 to 5 in the actions group (#4469) (@dependabot[bot])
- 52ecf029bd2e9b4d2652f96dd2b753f8bc6b6e95: chore(deps): bump actions/checkout from 5 to 6 in the actions group (#4446) (@dependabot[bot])
- f5c267d2f84ba8192dd9c4c67b0490abfa3dfe7a: chore(deps): bump aquasecurity/trivy-action in the actions group (#4534) (@dependabot[bot])
- 0c219e7902e88b27be1736d46efb241e4482b30f: chore(deps): bump aquasecurity/trivy-action in the actions group (#4544) (@dependabot[bot])
- 87c207a14093666fae281e9ebabe3ce6dd0b5ecd: chore(deps): bump github.com/bytedance/sonic from 1.14.0 to 1.14.2 (#4410) (@dependabot[bot])
- 5f424ff6f6316511b7f1598ea6dba62ea1a62eb8: chore(deps): bump github.com/bytedance/sonic from 1.14.2 to 1.15.0 (#4539) (@dependabot[bot])
- 48a5dca087085e64fbfe757a4cf9de1c3b583dda: chore(deps): bump github.com/go-playground/validator/v10 (#4385) (@dependabot[bot])
- 81dba468722f41347ed74ee66e9c1781d72f68a5: chore(deps): bump github.com/go-playground/validator/v10 (#4509) (@dependabot[bot])
- fad706f1216e6d12bdd51d28d5a40ec27e6c6453: chore(deps): bump github.com/goccy/go-yaml from 1.18.0 to 1.19.0 (#4458) (@dependabot[bot])
- d9e5cdf9c6f9c1643be6e081516469c71645d93d: chore(deps): bump github.com/goccy/go-yaml from 1.19.0 to 1.19.1 (#4476) (@dependabot[bot])
- 71cefce08e9ee91f6fb841a668207ccfda1df169: chore(deps): bump github.com/goccy/go-yaml from 1.19.1 to 1.19.2 (#4507) (@dependabot[bot])
- df2753778e7bc5c2dd559361cf0c97b2b313e9bb: chore(deps): bump github.com/quic-go/quic-go from 0.54.0 to 0.54.1 (#4379) (@dependabot[bot])
- 053e5765fd6b31093928a2208e2a09ec1049653b: chore(deps): bump github.com/quic-go/quic-go from 0.54.1 to 0.55.0 (#4384) (@dependabot[bot])
- a9401cd238378d6ecaf4fe90f7c825f624bd8ea1: chore(deps): bump github.com/quic-go/quic-go from 0.55.0 to 0.56.0 (#4430) (@dependabot[bot])
- 6e3ac82fa71efda7d042b009b58215ca321f32ae: chore(deps): bump github.com/quic-go/quic-go from 0.57.1 to 0.59.0 (#4532) (@dependabot[bot])
- 52f70cf18a61939ab25696fa335ecb8934512fb6: chore(deps): bump github.com/ugorji/go/codec from 1.3.0 to 1.3.1 (#4409) (@dependabot[bot])
- 0bd10a84f9d49ded6dd043d108b78c6b08e86cdf: chore(deps): bump github/codeql-action from 3 to 4 in the actions group (#4387) (@dependabot[bot])
- 0c0e99d2538609d38c757b0a32f708b4dcf424c9: chore(deps): bump github/codeql-action from 3 to 4 in the actions group (#4425) (@dependabot[bot])
- bf52b077c812e1917d17944cb6f109ab4f462ae7: chore(deps): bump go.mongodb.org/mongo-driver from 1.17.7 to 1.17.9 (#4533) (@dependabot[bot])
- 0d085ed9fe2053e3c35971aa1870ebfebf90b2ef: chore(deps): bump golang.org/x/net from 0.43.0 to 0.46.0 (#4391) (@dependabot[bot])
- 19c2d5c0d1d096e1014fb7be62116ee9025d0f56: chore(deps): bump golang.org/x/net from 0.46.0 to 0.47.0 (#4433) (@dependabot[bot])
- 882f42b0ed7bbb0e5f381ea45ab8fa36638b85d8: chore(deps): bump golang.org/x/net from 0.47.0 to 0.49.0 (#4508) (@dependabot[bot])
- 5260de6a83283abb87e827130accd495ad543cf3: chore(deps): bump golang.org/x/net from 0.49.0 to 0.50.0 (#4538) (@dependabot[bot])
- 38534e2bf98a06e1f62d6b24384e90b5f78699bf: chore(deps): bump golang.org/x/net from 0.50.0 to 0.51.0 (#4548) (@dependabot[bot])
- d1bcabc7ee4cbd3631c71f5a25da14bf1b84a0d5: chore(deps): bump golangci/golangci-lint-action in the actions group (#4431) (@dependabot[bot])
- 8ca975441f077e30c5dac73e51bad99ad00f0d4e: chore(deps): bump google.golang.org/protobuf from 1.36.9 to 1.36.10 (#4383) (@dependabot[bot])
- ac95fa6bbcf5ec102bc81fbbb70e8fccba90f0b1: chore(deps): bump goreleaser/goreleaser-action from 5 to 6 (#3992) (@dependabot[bot])
- 1b414bd54e467cb7278de8877401af07f185edb0: chore(deps): bump goreleaser/goreleaser-action in the actions group (#4546) (@dependabot[bot])
- 048f6fb8849b35be6a4e655076a2247f29f7c284: chore(deps): bump the actions group with 2 updates (#4368) (@dependabot[bot])
- ecb3f7b5e2f3915bf1db240ed5eee572f8dbea36: chore(deps): upgrade golang.org/x/crypto to v0.45.0 (#4449) (@appleboy)
- af6e8b70b8261bb0c99ad094fe552ab92991620a: chore(deps): upgrade quic-go to v0.57.1 (@appleboy)
- db309081bc5c137b2aa15701ef53f7f19788da25: chore(logger): allow skipping query string output (#4547) (@USA-RedDragon)
- 26c3a628655cad2388380cb8102d6ce7d4875f3b: chore(response): prevent Flush() panic when
http.Flusher(#4479) (@Twacqwq) - 5dd833f1f26de0eb30eae47b17e05ced2482dc41: chore: bump minimum Go version to 1.24 and update workflows (#4388) (@appleboy)
- 39858a0859c914bd26948fa950477e11bd8d3823: refactor(binding): use maps.Copy for cleaner map handling (#4352) (@russcoss)
- c0048f645ee945c4db30593afdea10123e2c30a6: refactor(context): omit the return value names (#4395) (@wanghaolong613)
- 915e4c90d28ec4cffc6eb146e208ab5a65eac772: refactor(context): replace hardcoded localhost IPs with constants (#4481) (@pauloappbr)
- 414de60574449457f3192a7a1d5528940db2836d: refactor(context): using maps.Clone (#4333) (@cuiweixie)
- 59e9d4a794f12c4f9a6c7bed441b9644e5f6d99b: refactor(ginS): use sync.OnceValue to simplify engine function (#4314) (@1911860538)
- 3ab698dc5110af1977d57226e4995c57dd34c233: refactor(recovery): smart error comparison (#4142) (@zeek0x)
- d1a15347b1e45a8ee816193d3578a93bfd73b70f: refactor(utils): move util functions to utils.go (#4467) (@zeek0x)
- e3118cc378d263454098924ebbde7e8d1dd2e904: refactor: for loop can be modernized using range over int (#4392) (@wanghaolong613)
- 488f8c3ffa579a8d19beb2bae95ff8ef36b3d53f: refactor: replace magic numbers with named constants in bodyAllowedForStatus (#4529) (@veeceey)
- 9968c4bf9d5a99edc3eee2c068a4c9160ece8915: refactor: use b.Loop() to simplify the code and improve performance (#4389) (@reddaisyy)
- a85ef5ce4d0cda8834c59c855068ed48b51192d1: refactor: use b.Loop() to simplify the code and improve performance (#4432) (@efcking)
- 61b67de522a189b568aced4c5c16917c558e3387: ci(bot): increase frequency and group updates for dependencies (#4367) (@appleboy)
- fb27ef26c2fdfe25344b4c039d8a53551f9e912c: ci(lint): refactor test assertions and linter configuration (#4436) (@appleboy)
- 93ff771e6dbf10e432864b30f3719ac5c84a4d4a: ci(sec): improve type safety and server organization in HTTP middleware (#4437) (@appleboy)
- e88fc8927a52b74f55bec0351604a56ac0aa1c51: ci(sec): schedule Trivy security scans to run daily at midnight UTC (#4439) (@appleboy)
- 5e5ff3ace496a31b138b0820136a146bfb5de0ef: ci: replace vulnerability scanning workflow with Trivy integration (#4421) (@appleboy)
- 00900fb3e1ea9dde33985a0e4f6afec793d5e786: ci: update CI workflows and standardize Trivy config quotes (#4531) (@appleboy)
- ae3f524974fc4f55d18c9e7fae4614503c015226: ci: update Go version support to 1.25+ across CI and docs (#4550) (@appleboy)
- dceb61e6e76337b388109f6c553b026d3b6ff026: docs(README): add a Trivy security scan badge (#4426) (@appleboy)
- 58135f06cf206a9ff713eb14150ef04a05b031d4: docs(context): add example comments for ShouldBind* methods (#4428) (@AtoriUzawa)
- c221133ee80c46e3a6c50717ca6f1b41d4ab7711: docs(context): fix some comments (#4396) (@letreturn)
- 731374fb3682af61cb153dabeec89aae401f1ede: docs(context): fix wrong function name in comment (#4382) (@goldlinker)
- 4dd00f81b1124d1a72e3d0fe050a224ff0ffcb88: docs(readme): revamp and expand documentation for clarity and completeness (#4362) (@appleboy)
- 1bbbec0baf6370bfb74e07a9060292939534290d: docs: announce Gin 1.11.0 release with blog link (#4363) (@appleboy)
- e292e5caa777bce70b66fe08c94cbe9cef3e2ec9: docs: document and finalize Gin v1.12.0 release (#4551) (@appleboy)
- 792541470403dac0487b6213a22c7c2491084d83: docs: revamp GitHub contribution and support templates (#4364) (@appleboy)
- 6a1d1218c3dbfc11427abc1ba39b86e81dff1e54: docs: revamp contributing guidelines with comprehensive instructions (#4365) (@appleboy)
- 73726dc606796a025971fe451f0aa6f1b9b847f6: docs: update documentation to reflect Go version changes (#4552) (@appleboy)
- f3a5e787199f9ee1821fda15e93aec76737631ed: docs: update feature documentation instructions for broken doc link (@appleboy)
- 440eb14ab8ed503d4a31dfecc9946a90cd73b955: perf(path): replace regex with custom functions in redirectTrailingSlash (#4414) (@1911860538)
- 64a6ed9a41ab72076506bd590dc4b916ca4b66a5: perf(recovery): optimize line reading in stack function (#4466) (@1911860538)
- 2e22e5085960205fbb11c25776f6ea76b8053253: perf(tree): optimize path parsing using strings.Count (#4246) (@1911860538)
- cad29c5e3f50a9764edbfc4787825c6caabd8579: perf(tree): reduce allocations in findCaseInsensitivePath (#4417) (@arturmelanchyk)
- ed150e72544949a96e7eb0b7d1151cf1907068fb: test(benchmarks): fix the incorrect function name (#4375) (@mengxunQAQ)
- 583db590ec2a488ebcf7f8dc6232d11c7db62eac: test(bytesconv): add tests for empty/nil cases (#4454) (@miladev95)
- fb2583442c4d9bccb75e6d26f1aa6e7c01950db6: test(context): use http.StatusContinue constant instead of magic number 100 (#4542) (@mehrdadbn9)
- 19b877fa50cbbb9282763099fb177a1e5cc5c850: test(debug): improve the test coverage of debug.go to 100% (#4404) (@zeek0x)
- c358d5656d0feb8b310d4ec379bccde46ccc8cc7: test(gin): Add comprehensive test coverage for ginS package (#4442) (@miladev95)
- f416d1e594a027063e73f66ac873a82113036fd8: test(gin): resolve race conditions in integration tests (#4453) (@Planckbaka)
- 6f1d5fe3cdb171a08928c3c9dd3fbcfc9ee1b521: test(render): add comprehensive error handling tests (#4541) (@Amirhf1)
- 216a4a7c283bae102c4e365662566c895dbdad50: test(render): add comprehensive tests for MsgPack render (#4537) (@Amirhf1)
v1.11.0
- 6ca8ddb1aed78d9ffaf984e5489111838242fedb: feat(binding): add BindPlain (#3904) (@guonaihong)
- 4ccfa7c275c449990818e46759d5974a953cc1c1: feat(binding): add support for unixMilli and unixMicro (#4190) (@takanuva15)
- 9d7c0e9e1a301f417df9dc89a8cadc3bf9063db2: feat(context): GetXxx added support for more go native types (#3633) (@CC11001100)
- fb09c825e8e13134daaa90debfda198520e1b347: feat(context): add SetCookieData (#4240) (@Narita-1095305)
- f05f966a0824b1d302ee556183e2579c91954266: feat(form): Support default values for collections in form binding (#4048) (@takanuva15)
- 3cb30679b5e3021db16c776ed7e70d380586e9ce: feat(form): add array collection format in form binding (#3986) (@slowhigh)
- 24d67647cb9b4e0bbdcdec7f0c2086e8004e1572: feat(form): add custom string slice for form tag unmarshal (#3970) (#3971) (@bruceNu1l)
- 8791c96960e719ff2f41e24163c5898656cee474: feat(fs): Export, test and document OnlyFilesFS (#3939) (@joeig)
- 71496abe6836462e2ed70436b7d72ea2a3585417: feat(fs): Implement loading HTML from http.FileSystem (#4053) (@sunshineplan)
- 3ac729dc4a497d360a23b9d7e766c622b3c99f51: feat(gin): support http3 using quic-go/quic-go (#3210) (@thinkerou)
- 4621b7ac982335d9a74432e182dd2bfc6d841431: feat(router): add literal colon support (#1432) (#2857) (@wssccc)
- dbd8a2515093ad47cadc5c1fface89861a0b765c: feat: added
AbortWithStatusPureJSON()inContext(#4290) (@ddevsr) - 688a429d19d8c804447bb889d3635e2c31a5564d: feat: support custom json codec at runtime (#3391) (@timandy)
- 8fb3136664254d7c592127f00d52849caba18a67: Revert "fix(time): binding time with empty value (#4103)" (#4245) (@appleboy)
- e737e3e267beb4dc3bab16cc8be59e3902d98a94: fix(binding): prevent duplicate decoding and add validation in decodeToml (#4193) (@revevide)
- 4f339e6a35b163d31b30916b37f4176d385f41bd: fix(context): YAML judgment logic in Negotiate (#3966) (@RedCrazyGhost)
- 36b0dede4b8c4a67d92c4107cebc5a068364321d: fix(context): check handler is nil (#3413) (@hktalent)
- e0d46ded6cb6974d55a255ab122d1aa6ca0cd60e: fix(context): verify URL is Non-nil in initQueryCache() (#3969) (@adrianosela)
- dd33ff793861cee3baa77d575ff319119c366f3a: fix(docs): missing go markdown codeblock (#4266) (@vdusart)
- b38c59de7fef67400a1c98efeae700a689c45783: fix(errors): change Unwrap method receiver to value type (#4232) (@OrkhanAlikhanov)
- 28e57f58b184b2305ace192e02496bb89f6fd8cb: fix(form): Set default value for form fields (#4047) (@ahmadSaeedGoda)
- 626d55b0c02937645c21774cacc021713de88604: fix(gin): Do not panic when handling method not allowed on empty tree (#4003) (@phsym)
- 7d147928ee232fce156ea7ce8ae6329e148aeb41: fix(gin): data race warning for gin mode (#1580) (@kplachkov)
- c677ccc40a60386565dd0d755efacb85d153feca: fix(go): invalid Go toolchain version (#3961) (@thinkerou)
- 3319038418656a268c889393cb2dd4224c4469ec: fix(readme): fix broken link to English documentation (#4222) (@eduardo-ax)
- 674522db91d637d179c16c372d87756ea26fa089: fix(time): binding time with empty value (#4103) (@ksw2000)
- ea53388e6ee4a6a0a1647b390c56eeed780e7e56: fix(tree): Keep panic infos consistent when wildcard type build faild (#4077) (@kingcanfish)
- 8763f33c65f7df8be5b9fe7504ab7fcf20abb41d: fix: prevent middleware re-entry issue in HandleContext (#3987) (@bound2)
- 7a1b655074c313f9491c83bb8ea164cdc4a9afe9: fix: sonic on arm64 (#4234) (@yashgorana)
- 5826722a87cf5855fcc4b794cbef11612352771d: fix: version number discrepancy (#4299) (@suwakei)
- 40725d85badd647870df6f9fa7a75ac76341f804: chore(bind): return 413 status code when error is
http.MaxBytesError(#4227) (@ItalyPaleAle) - f875d8728306c2c2c6f504900ab08cd1d8c47f12: chore(context): test context initialization and handler logic (#4087) (@appleboy)
- e7693e67c23005743502962d3bb9839a354d6688: chore(deps): bump actions/setup-go from 5 to 6 (#4351) (@dependabot[bot])
- afa0c31d97e1b112ccfe7652957f7d8514580c72: chore(deps): bump github.com/gin-contrib/sse from 0.1.0 to 1.1.0 (#4216) (@dependabot[bot])
- 255af882db4baf0ed6209f1a5471f1663c5d0060: chore(deps): bump github.com/go-playground/validator/v10 (#4208) (@dependabot[bot])
- 545fd74379a0b167a918e38626ae5f7eb83fb243: chore(deps): bump github.com/go-playground/validator/v10 (#4289) (@dependabot[bot])
- c3c8620a7fb4e09c7845feca4e8e8a8678a2685d: chore(deps): bump github.com/go-playground/validator/v10 from 10.20.0 to 10.22.1 (#4052) (@dependabot[bot])
- cf32d2dcf8c7534f59727c5e213e45f2412c593a: chore(deps): bump github.com/pelletier/go-toml/v2 from 2.2.2 to 2.2.4 (#4212) (@dependabot[bot])
- bb824731032856460aa3ffc23bd90e11bf7d5199: chore(deps): bump github.com/quic-go/quic-go from 0.48.2 to 0.50.1 (#4197) (@dependabot[bot])
- 61c2b1c28f0c5a754330545e31f02cd6d6f7944e: chore(deps): bump github.com/quic-go/quic-go from 0.51.0 to 0.52.0 (#4250) (@dependabot[bot])
- b7d6308bcc84066df79a047ae363a6120fe87808: chore(deps): bump github.com/quic-go/quic-go from 0.52.0 to 0.53.0 (#4281) (@dependabot[bot])
- 077a2f39c85700ba0823f85ed29cec0c8f2cbdfc: chore(deps): bump github.com/quic-go/quic-go from 0.53.0 to 0.54.0 (#4328) (@dependabot[bot])
- 46150257b3eec60e3e0bf1cee7c03439099aef83: chore(deps): bump github.com/stretchr/testify from 1.10.0 to 1.11.1 (#4347) (@dependabot[bot])
- a6287825c95821a378a34f8a5c9139ea1f6ebd96: chore(deps): bump github.com/ugorji/go/codec from 1.2.12 to 1.3.0 (#4268) (@dependabot[bot])
- cc4e11438cd6c0bcc632fe3492d3817dfa21c337: chore(deps): bump golang.org/x/net from 0.25.0 to 0.27.0 (#4013) (@dependabot[bot])
- 733ee094fc4aaf016fb05820f553eeb0b81d0f1f: chore(deps): bump golang.org/x/net from 0.33.0 to 0.37.0 (#4178) (@dependabot[bot])
- 56fccc39ec5cbe30e39fa34e67371219354f14cd: chore(deps): bump golang.org/x/net from 0.37.0 to 0.38.0 (#4221) (@dependabot[bot])
- ef68fa032c0e6ce637db56e89ec734c0de0a9f5e: chore(deps): bump golang.org/x/net from 0.38.0 to 0.40.0 (#4229) (@dependabot[bot])
- 0a864884de806386e275ee096f681520799911fb: chore(deps): bump golang.org/x/net from 0.40.0 to 0.41.0 (#4262) (@dependabot[bot])
- ae5be7fcb726ac6417f6b5deb70afd4a274f64f0: chore(deps): bump golang.org/x/net from 0.41.0 to 0.42.0 (#4297) (@dependabot[bot])
- 4714c2a9a39f0877ccb38089894263f052025a6b: chore(deps): bump google.golang.org/protobuf from 1.34.1 to 1.36.6 (#4198) (@dependabot[bot])
- 28172fa68206b2ced9df3417fad50bcabd6d9eb6: chore(deps): bump google.golang.org/protobuf from 1.36.6 to 1.36.8 (#4346) (@dependabot[bot])
- cca98d2d266d3797a8bf70f5903c2fbe32e8bf86: chore(deps): bump google.golang.org/protobuf from 1.36.8 to 1.36.9 (#4356) (@dependabot[bot])
- 57ec9e603642dd8a48fbd860e1f4fc5de7be37c0: chore(mode): remove impossible case (empty value for mode) (#4303) (@mask-pp)
- 17d0b553eac2a32fe82b06e3b4fa0d0cac3bff57: chore(render): do not export tomlContentType anymore (#4319) (@VarusHsu)
- 32065bbd4298d566d060d234e452bbf44e92161d: chore(response): prevention of Hijack() runtime panics (#4295) (@suwakei)
- e2e80f33472bd02094f242da3c3efde2cec0a037: chore(security): update vendor to fix CVE (#4121) (@xlgao-zju)
- 3f818c3fa69e03feb46d2b49d2a8084c425cbed6: chore(security): upgrade quic-go version to 0.48.2 (#4127) (@appleboy)
- 334160bab772f6f93767b870f9d07c176cd4aa2b: chore(tree): replace the self-defined 'min' to official one (#3975) (@EndlessParadox1)
- d00e6a5695c14933081faaba74e92d95cca9377f: chore: fix some function names in comment (#4131) (@yangquanshi)
- 90cf4602698dcbce18df3165b2d24e2940670a41: chore: update Go versions and dependencies for improved compatibility (#4187) (@appleboy)
- 8dd088927ab50b3b37be1f7ba14931c8eddafe07: refactor(binding): use strings.Cut to replace strings.Index (#3522) (@lgbgbl)
- e46bd521859fdfc83c508f1d42c92cb7f91e9fcb: refactor(context): add an optional permission parameter to the SaveUploadedFile method (#4068) (#4088) (@haesuo566)
- 41d8591eb16bf23732de9ae2b699d6cae54c2ae8: refactor(context): refactor
Keystype tomap[any]any(#3963) (@flc1125) - 647311aba203dd7262b24f973503e7689e00389d: refactor(context): refactor context handling and improve test robustness (#4066) (@kingcanfish)
- e4c2a2762448fbd094463a2022e97bc5be98ec63: refactor(context): remove unused Context dependency in get method (#4304) (@1911860538)
- c8a3adc65703d8958265c07689662e54f037038c: refactor(context): simplify "GetType()" functions (#4080) (@KaymeKaydex)
- a4baac6e5e030ca707e519a3bf209d25699e3902: refactor(context):Avoid using filepath.Dir twice in SaveUploadedFile (#4181) (@nezhafan)
- e30123ad7314411664a693f23ed0ade498ccdaf0: refactor(recovery): extract Authorization header masking into maskAuthorization func (#4143) (@zeek0x)
- e198f6e859220afd35bc2fb2fd5d404d7c0882ca: refactor(render): remove headers parameter from writeHeader (#4353) (@1911860538)
- 3f5b0afa2ac85ea79638ca08f4140ce64b8246e5: refactor(slice): simplify SliceValidationError Error method (#3910) (@1911860538)
- 9b1e3533e2d17b6152b05efeab8280f450e68e52: refactor(tree): replace string(/) with "/" in node.insertChild (#4354) (@1911860538)
- 848e1cdd0d1525ce0a99b7e6a2a1cf0d84d76156: refactor: replace interface{} with any in type declarations (#4249) (@flc1125)
- 67c9d4ee110e9adfe33063ef847dba56717c148a: refactor: replace magic number 128 with unicode.MaxASCII in AsciiJSON Render (#4224) (@1911860538)
- da372fc77840b3badf4efef5ec2d203cdc73f1db: build(deps): upgrade github.com/bytedance/sonic from v1.13.2 to v1.14.0 (#4342) (@flc1125)
- b987b6206f13a4c244739e4f4e6c6a2b7dfff9d3: build: make automatically update package in golang (#4311) (@ddevsr)
- 7e298066baab19316aa2ffc946f1bbc44a68a607: build: update Gin minimum Go version to 1.21 (#3960) (@appleboy)
- 40131af1243ef90e026859bf8ff9c30a5a230351: ci(Makefile): added help and descriptions to targets (#3964) (@tr1sm0s1n)
- c4287b1300363cb3dc2c8408299d3ba6deded485: ci(golangci-lint): update configuration and fix lint issues (#4247) (@flc1125)
- 02c1144f312eaf18767475a578bc421ddbcc4b82: ci(lint): enable perfsprint linter (#4090) (@mmorel-35)
- 5f55c6a711376c77834bc6b25d35c8985de1d311: ci(lint): enable testifylint linter (#4010) (@mmorel-35)
- e8d34d053f7008858886b8e4f76b3e8564105870: ci(lint): enable usestdlibvars linter (#4091) (@mmorel-35)
- 23d6961aeb9d2670a7b36c77cb180f479e220580: ci(lint): update workflows and improve test request consistency (#4126) (@appleboy)
- 3b28645dc95d58e0df36b8aff7a6c64f7c0ca5e9: ci: add go version 1.24 to GitHub Actions (#4154) (@appleboy)
- cb000f570c127a503535fa5be9c0237823ea7e4d: ci: integrate Trivy vulnerability scanning into CI workflow (#4359) (@appleboy)
- 2119046230f0119c7c88f86a6b441d9d3aaad03e: ci: support Go 1.25 (#4341) (@flc1125)
- b1c1e7b572f76071fb0e0e7884a0697e0458aa7c: ci: update Go version requirements and remove test files (#3957) (@appleboy)
- 7858527c8c2a15bddf27ea71162f8f70c82f2cdf: docs(changelog): update release notes for Gin v1.10.1 (#4360) (@appleboy)
- 6ad6205e9c94a4b8a320219e28c37c29d22a7a2c: docs(changelog): upgrade Gin to v1.11.0 and add release notes (#4361) (@appleboy)
- 9708475b3b2a4e1ac09cdf31f34398cab1b3e277: docs(context): fix AbortWithStatusPureJSON comment typo (#4310) (@1911860538)
- ad740d508f3e98b53ecafda35b66e6a32f6758ac: docs(context): fix some function names in comment (#4079) (@wangjingcun)
- e60113dc9531779a15dcb761655d986a56273ea2: docs(engine): fix comments for the
With(#3955) (@flc1125) - 9d11234efec1e5517b2887a6e7dfbc9c017bc52c: docs(gin): Replace broken link to documentation with valid (#4064) (@M3DZIK)
- f5f5da8fa09d12a22225c493fa8191fb14bdd5bf: docs(gin): update link to dont-trust-all-proxies section (#3938) (#3945) (@codespearhead)
- b080116a7f5c71f023e1059ebb9e99a799938909: docs(readme): add Portuguese documentation. (#4078) (@YlanzinhoY)
- 19f5a13fb421fd71c10a06f244734bba317f63a6: docs(readme): add gin-gonic/contrib (#4134) (@123liuziming)
- a569ed8f26a13b10c02920de103eba79c7102cd7: docs(readme): fix language and moved link (#3962) (@truecrunchyfrog)
- 64ead9e6bd924d431f4dd612349bc5e13300e6fc: docs(readme): replace godoc with pkg (#3985) (@mengzhuo)
- 42f93283cf4a37bf16ac045284b335a24b44aeca: docs(test): improved GoDoc in test_helpers.go (#4270) (@suwakei)
- 1b53a477904c783c82cd6cc402aece4b9558a66e: docs: Fixing English grammar mistakes and awkward sentence structure in doc/doc.md (#4207) (@boyczuk)
- 3afff295a2e638075fcfbd2c38ee89a4263637d3: docs: add Upd language list (#4211) (@andreybolonin)
- 4bdcd9d0f1154ea5e07fbe7855dd09ee14a6f1e9: docs: added available
IDdocumentation (#4287) (@ddevsr) - bdc1ad7987b6931801af9d50e2df25667fdfaaf4: docs: added comment in doc.go (#4274) (@suwakei)
- ad4f436ae9823ec577b746d0560201557f8c9691: docs: correct article usage in comments (#4301) (@Caplost)
- 1eb827240e520804ea83b1aafcbaf7ba728b81dd: docs: fix case error of X-Real-IP (#4185) (@nezhafan)
- 49e9137c68e6dfaa529a2d0c9fe64d9e69a8554e: docs: fix comment (#4205) (@nezhafan)
- f2c861a24f204f53dd6e6755b6d4efece7e373ea: docs: fix route group example code (#4020) (@demouth)
- 9c081de9cdd1948f521d47d170d18cbc2981c33a: docs: fix typo in Gin Quick Start (#3997) (@demouth)
- a9c5b36578be3bb817c3578d13de666b0d4c8549: docs: small changes (#4261) (@eqsdxr)
- 299c6f30e3df4c5a257c517a91f421ff3ea63a8e: docs: trimmed some white spaces (#4070) (@tsukasaI)
- 490accf5d7d49138f0af806318826d92513b1395: docs: update documentation and release notes for Gin v1.10.0 (#3953) (@appleboy)
- 76dd08d512504b80ef76a76c9e6bd1831e121b71: docs: wrong badge workflow in README.md (#4286) (@ddevsr)
- cf4775283ec30cda685355b5016c5abd2a56884e: chroe: migrate yaml package to github.com/goccy/go-yaml (#4272) (@milhamsuryapratama)
- 8f7c340577e19245827f7ba71ef3e0143cc7eeee: context_test.go: fix useless asserts (#4115) (@deining)
- ebe5e2a6bfdca50fd44074b470ad486392e2933f: fix(golangci.yml): move fiximports to goimports section and replace exportloopref with copyloopvar (#4167) (@1911860538)
- 3d8e288c64aa3d3064df6264ab1b5445a28b709d: perf(all): use strings.Cut to replace strings.SplitN (#4239) (@1911860538)
- f9bd00a6b7939b941fde3fdd239367f4a7d6b137: perf(context): optimize getMapFromFormData performance (#4339) (@1911860538)
- 3c12d2a80e40930632fc4a4a4e1a45140f33fb12: perf(recover): replace bytes with strings in function for better performance (#4252) (@1911860538)
- 45b805f6d59ba0b4f315adffe81ed4a82a51a591: perf(recovery): optimize the log output of CustomRecoveryWithWriter (#4258) (@1911860538)
- 0eb99493c28b09cee339061b0d8a11c9a4f31399: perf: optimize AsciiJSON.Render method by using fmt.Appendf and reusing temp buffer (#4175) (@1911860538)
- 77d70e5858278193abfab732164b0c1415d8d4ba: refactor(internal/bytesconv): replace rand usage with crypto/rand and rand.Int63 (#4259) (@1911860538)
- c8af82af15dd00d684113334d12e05f589f33ff3: test(context): add cleanup for uploaded file in SaveUploadedFile test (#4248) (@flc1125)
- dab5944a7bca8ae37d947dda02ac591afc1177d3: test(context): add comprehensive unit tests for
Context.File()method (#4307) (@Caplost) - 2e2bd1f408fdaa5e522bc56972e3f109fd7502fd: test(internal/fs): fix test function name (#4235) (@salimabsi)
- a4ac275e079d46d493965491d686bfe72d121e85: test(route): add some test for routergroup (#4291) (@chenhuiluo)
- da67cc1b988ed6498eccaecb989467e87b555dfd: test: fix lint failures (#4244) (@sid-maddy)
v1.10.0
- 5f458dd1a6d631f324e4af9a4f5429ffdf199342: feat(auth): add proxy-server authentication (#3877) (@EndlessParadox1)
- 7a865dcf1dbe6ec52e074b1ddce830d278eb72cf: feat(bind): ShouldBindBodyWith shortcut and change doc (#3871) (@RedCrazyGhost)
- a18219566ca25fc51e6d2886bed849c6c3a0cd12: feat(binding): Support custom BindUnmarshaler for binding. (#3933) (@dkkb)
- fd1faaded01aef14a3955ec076f1cbeb9cb87775: feat(binding): support override default binding implement (#3514) (@ssfyn)
- ac5e84d93ce34359bfd2f346cb2971ea754d83e3: feat(engine): Added
OptionFuncandWith(#3572) (@flc1125) - c6ae2e69666a2b36203b29650ee75d172c725c66: feat(logger): ability to skip logs based on user-defined logic (#3593) (@palvaneh)
- d4e413648824333726ef65de5defc457e9dbf095: Revert "fix(uri): query binding bug (#3236)" (#3899) (@appleboy)
- 3dc1cd6572b4e3a0cd170a15debe546c2c72294f: fix(binding): binding error while not upload file (#3819) (#3820) (@clearcodecn)
- 82bcd6d39bfe9c22032764ff3b0b6f8ef1673e49: fix(binding): dereference pointer to struct (#3199) (@echovl)
- 2b1da2b0b38dfc5d5841266037c0c8b249eca1dd: fix(context): make context Value method adhere to Go standards (#3897) (@FarmerChillax)
- f70dd00b00bc0a46cb18b55bfe1f918d5d29b511: fix(engine): fix unit test (#3878) (@flc1125)
- 86ff4a64c7efe1a1c875529835eeef9e15de1e86: fix(header): Allow header according to RFC 7231 (HTTP 405) (#3759) (@Crocmagnon)
- 09f8224593e31edf3c58ab3f13bc31ef53473733: fix(route): Add fullPath in context copy (#3784) (@KarthikReddyPuli)
- 9f598a31aafb92d675f38f1c8371e4ac76f858bf: fix(router): catch-all conflicting wildcard (#3812) (@FirePing32)
- 4a40f8f1a49b9086b461d97e167c3b9628d8b923: fix(sec): upgrade golang.org/x/crypto to 0.17.0 (#3832) (@chncaption)
- 386d244068db3693f938db4ead6d1f5f85942e3f: fix(tree): correctly expand the capacity of params (#3502) (@georgijd-form3)
- 8790d08909fc4d193c6c787c9c72f3089168f411: fix(uri): query binding bug (#3236) (@illiafox)
- 44d0dd70924dd154e3b98bc340accc53484efa9c: fix: Add pointer support for url query params (#3659) (#3666) (@omkar-foss)
- 646312aef6a34095476ac846b0920db5fb24b2ea: fix: protect Context.Keys map when call Copy method (#3873) (@kingcanfish)
- d4a64265f21993368c90602c18e778bf04ef36db: chore(CI): update release args (#3595) (@qloog)
- bb3519d26f52835cf00e5e430b52651a9c378c97: chore(IP): add TrustedPlatform constant for Fly.io. (#3839) (@ab)
- 1b3c0859693fc85290c01ba098b1440d4776549f: chore(debug): add ability to override the debugPrint statement (#2337) (@josegonzalez)
- a64286a7760be2031209686ce4d36e99d42dd419: chore(deps): update dependencies to latest versions (#3835) (@appleboy)
- 9c61295efeea99f6c9d1722294f1bf61d8e464d6: chore(header): Add support for RFC 9512: application/yaml (#3851) (@vincentbernat)
- a481ee2897af1e368de5c919fbeb21b89aa26fc7: chore(http): use white color for HTTP 1XX (#3741) (@viralparmarme)
- c964ad370bbe007f1b18a7570f058a66f05fbe1f: chore(optimize): the ShouldBindUri method of the Context struct (#3911) (@1911860538)
- 739d2d9c80e0298dafb5df1c30bae35d63935d6c: chore(perf): Optimize the Copy method of the Context struct (#3859) (@1911860538)
- 3ea8bd99fbb4e499d70a0c8e1ce2ce4b7c6348b6: chore(refactor): modify interface check way (#3855) (@demoManito)
- ab8042e9e5370bbe0e93ea5adc6e74ae4c5df95e: chore(request): check reader if it's nil before reading (#3419) (@noahyao1024)
- 0d9dbbb44551a872d30fd89d4d55ba0515d646fd: chore(security): upgrade Protobuf for CVE-2024-24786 (#3893) (@Fotkurz)
- ecdbbbe9483dd12222f2085f717a2c7cb5ac55fe: chore: refactor CI and update dependencies (#3848) (@appleboy)
- 39089af62535b27aa63608f341c0a339aa88f64e: chore: refactor configuration files for better readability (#3951) (@appleboy)
- 160c1730efd30046239c802d5b9f895a708c3f4c: chore: update GitHub Actions configuration (#3792) (@appleboy)
- 0397e5e0c0f8f8176c29f7edd8f1bff8e45df780: chore: update changelog categories and improve documentation (#3917) (@appleboy)
- 62b50cfbc0de877207ff74c160a23dff6394f563: chore: update dependencies to latest versions (#3694) (@appleboy)
- 638aa19e7d30513f7bc777c62ff8558fd5f90ea5: chore: update external dependencies to latest versions (#3950) (@appleboy)
- c6f90df4e0c888c69524307cc35952ec2e7ead41: chore: update various Go dependencies to latest versions (#3901) (@appleboy)
- 78f4687875d72d10392f8a77008cbefdec4c0aa0: build(codecov): Added a codecov configuration (#3891) (@flc1125)
- 56dc72c4d5b1076fc9c6b81f57299739c11910b8: ci(Makefile): vet command add .PHONY (#3915) (@imalasong)
- 8ab47c694ea93fdb442b617961ce9b3171151749: ci(lint): update tooling and workflows for consistency (#3834) (@appleboy)
- 8acbe657f1c140e3fba38f869978cab2376500c9: ci(release): refactor changelog regex patterns and exclusions (#3914) (@appleboy)
- 000fdb3ac95c7c318440afbd98eaf60f7430a1db: ci(testing): add go1.22 version (#3842) (@appleboy)
- 990c44aebf20f0796d99051e53d6ee75b7ed52fb: docs(context): Added deprecation comments to BindWith (#3880) (@flc1125)
- 861ffb9181dc811dc5d76fc450b36d3e68850b95: docs(middleware): comments to function
BasicAuthForProxy(#3881) (@EndlessParadox1) - ee70b30a97205ac1f32889f41d8a494b3b2c81a5: docs: Add document to constant
AuthProxyUserKeyandBasicAuthForProxy. (#3887) (@EndlessParadox1) - f75144a356e57c95bd21a048f0a40492dcdb33c5: docs: fix typo in comment (#3868) (@testwill)
- 83fc7673f9797b4c7d8d1c41b94e9922303e6275: docs: fix typo in function documentation (#3872) (@TotomiEcio)
- 49f45a542719df661bd71dd48f1595f0bc1ff6f7: docs: remove redundant comments (#3765) (@WeiTheShinobi)
- 75ccf94d605a05fe24817fc2f166f6f2959d5cea: feat: update version constant to v1.10.0 (#3952) (@appleboy)
- 02e754be9c4889f7ee56db0660cc611eb82b61d6: Upgrade golang.org/x/net -> v0.13.0 (#3684) (@cpcf)
- 97eab7d09a8b048cab4a3d8ebd6c0ea78284c716: test(git): gitignore add develop tools (#3370) (@demoManito)
- ae15646aba14cd8245fbebd263cc7740c6789ef3: test(http): use constant instead of numeric literal (#3863) (@testwill)
- fd60a24ab76c3c92955ba253c1f7eda9e4981c3c: test(path): Optimize unit test execution results (#3883) (@flc1125)
- bb2d8cf486bde2dc69bf05ea917095260ac13723: test(render): increased unit tests coverage (#3691) (@araujo88)
v1.9.0
- Stop useless panicking in context and render #2150
- fix(router): tree bug where loop index is not decremented. #3460
- fix(context): panic on NegotiateFormat - index out of range #3397
- Add escape logic for header #3500 and #3503
- Fix the GO-2022-0969 and GO-2022-0288 vulnerabilities #3333
- fix(security): vulnerability GO-2023-1571 #3505
- feat: add sonic json support #3184
- chore(file): Creates a directory named path #3316
- fix: modify interface check way #3327
- remove deprecated of package io/ioutil #3395
- refactor: avoid calling strings.ToLower twice #3343
- console logger HTTP status code bug fixed #3453
- chore(yaml): upgrade dependency to v3 version #3456
- chore(router): match method added to routergroup for multiple HTTP methods supporting #3464
- chore(http): add support for go1.20 http.rwUnwrapper to gin.responseWriter #3489
v1.8.0
- TrustedProxies: Add default IPv6 support and refactor #2967. Please replace
RemoteIP() (net.IP, bool)withRemoteIP() net.IP - gin.Context with fallback value from gin.Context.Request.Context() #2751
- Fixed SetOutput() panics on go 1.17 #2861
- Fix: wrong when wildcard follows named param #2983
- Fix: missing sameSite when do context.reset() #3123
- Use Header() instead of deprecated HeaderMap #2694
- RouterGroup.Handle regular match optimization of http method #2685
- Add support go-json, another drop-in json replacement #2680
- Use errors.New to replace fmt.Errorf will much better #2707
- Use Duration.Truncate for truncating precision #2711
- Get client IP when using Cloudflare #2723
- Optimize code adjust #2700
- Optimize code and reduce code cyclomatic complexity #2737
- gin.Context with fallback value from gin.Context.Request.Context() #2751
- Improve sliceValidateError.Error performance #2765
- Support custom struct tag #2720
- Improve router group tests #2787
- Fallback Context.Deadline() Context.Done() Context.Err() to Context.Request.Context() #2769
- Some codes optimize #2830 #2834 #2838 #2837 #2788 #2848 #2851 #2701
- Test(route): expose performRequest func #3012
- Support h2c with prior knowledge #1398
- Feat attachment filename support utf8 #3071
- Feat: add StaticFileFS #2749
- Feat(context): return GIN Context from Value method #2825
- Feat: automatically SetMode to TestMode when run go test #3139
- Add TOML bining for gin #3081
- IPv6 add default trusted proxies #3033
- Add note about nomsgpack tag to the readme #2703
Release v1.7.7
- Fixed X-Forwarded-For unsafe handling of CVE-2020-28483 #2844, closed issue #2862
- Tree: updated the code logic for
latestNode#2897, closed issue #2894 #2878 - Tree: fixed the misplacement of adding slashes #2847, closed issue #2843
- Tree: fixed tsr with mixed static and wildcard paths #2924, closed issue #2918
- TrustedProxies: make it backward-compatible #2887, closed issue #2819
- TrustedPlatform: provide custom options for another CDN services #2906
- NoMethod: added usage annotation (#2832)