...

Text file src/github.com/gin-gonic/gin/CHANGELOG.md

Documentation: github.com/gin-gonic/gin

     1# Gin ChangeLog
     2
     3## Gin v1.9.1
     4
     5### BUG FIXES 
     6
     7* fix Request.Context() checks [#3512](https://github.com/gin-gonic/gin/pull/3512)
     8
     9### SECURITY
    10
    11* fix lack of escaping of filename in Content-Disposition [#3556](https://github.com/gin-gonic/gin/pull/3556) 
    12
    13### ENHANCEMENTS
    14
    15* refactor: use bytes.ReplaceAll directly [#3455](https://github.com/gin-gonic/gin/pull/3455)
    16* convert strings and slices using the officially recommended way [#3344](https://github.com/gin-gonic/gin/pull/3344)
    17* improve render code coverage [#3525](https://github.com/gin-gonic/gin/pull/3525)
    18
    19### DOCS
    20
    21* docs: changed documentation link for trusted proxies [#3575](https://github.com/gin-gonic/gin/pull/3575)
    22* chore: improve linting, testing, and GitHub Actions setup [#3583](https://github.com/gin-gonic/gin/pull/3583)
    23
    24## Gin v1.9.0
    25
    26### BREAK CHANGES
    27
    28* Stop useless panicking in context and render [#2150](https://github.com/gin-gonic/gin/pull/2150)
    29
    30### BUG FIXES
    31
    32* fix(router): tree bug where loop index is not decremented. [#3460](https://github.com/gin-gonic/gin/pull/3460)
    33* fix(context): panic on NegotiateFormat - index out of range [#3397](https://github.com/gin-gonic/gin/pull/3397)
    34* Add escape logic for header [#3500](https://github.com/gin-gonic/gin/pull/3500) and [#3503](https://github.com/gin-gonic/gin/pull/3503)
    35
    36### SECURITY
    37
    38* Fix the GO-2022-0969 and GO-2022-0288 vulnerabilities [#3333](https://github.com/gin-gonic/gin/pull/3333)
    39* fix(security): vulnerability GO-2023-1571 [#3505](https://github.com/gin-gonic/gin/pull/3505)
    40
    41### ENHANCEMENTS
    42
    43* feat: add sonic json support [#3184](https://github.com/gin-gonic/gin/pull/3184)
    44* chore(file): Creates a directory named path [#3316](https://github.com/gin-gonic/gin/pull/3316)
    45* fix: modify interface check way [#3327](https://github.com/gin-gonic/gin/pull/3327)
    46* remove deprecated of package io/ioutil [#3395](https://github.com/gin-gonic/gin/pull/3395)
    47* refactor: avoid calling strings.ToLower twice [#3343](https://github.com/gin-gonic/gin/pull/3433)
    48* console logger HTTP status code bug fixed [#3453](https://github.com/gin-gonic/gin/pull/3453)
    49* chore(yaml): upgrade dependency to v3 version [#3456](https://github.com/gin-gonic/gin/pull/3456)
    50* chore(router): match method added to routergroup for multiple HTTP methods supporting [#3464](https://github.com/gin-gonic/gin/pull/3464)
    51* chore(http): add support for go1.20 http.rwUnwrapper to gin.responseWriter [#3489](https://github.com/gin-gonic/gin/pull/3489)
    52
    53### DOCS
    54
    55* docs: update markdown format [#3260](https://github.com/gin-gonic/gin/pull/3260)
    56* docs(readme): Add the TOML rendering example [#3400](https://github.com/gin-gonic/gin/pull/3400)
    57* docs(readme): move more example to docs/doc.md [#3449](https://github.com/gin-gonic/gin/pull/3449)
    58* docs: update markdown format [#3446](https://github.com/gin-gonic/gin/pull/3446)
    59
    60## Gin v1.8.2
    61
    62### BUG FIXES
    63
    64* fix(route): redirectSlash bug ([#3227]((https://github.com/gin-gonic/gin/pull/3227)))
    65* fix(engine): missing route params for CreateTestContext ([#2778]((https://github.com/gin-gonic/gin/pull/2778))) ([#2803]((https://github.com/gin-gonic/gin/pull/2803)))
    66
    67### SECURITY
    68
    69* Fix the GO-2022-1144 vulnerability ([#3432]((https://github.com/gin-gonic/gin/pull/3432)))
    70
    71## Gin v1.8.1
    72
    73### ENHANCEMENTS
    74
    75* feat(context): add ContextWithFallback feature flag [#3172](https://github.com/gin-gonic/gin/pull/3172)
    76
    77## Gin v1.8.0
    78
    79### BREAK CHANGES
    80
    81* TrustedProxies: Add default IPv6 support and refactor [#2967](https://github.com/gin-gonic/gin/pull/2967). Please replace `RemoteIP() (net.IP, bool)` with `RemoteIP() net.IP`
    82* gin.Context with fallback value from gin.Context.Request.Context() [#2751](https://github.com/gin-gonic/gin/pull/2751)
    83
    84### BUG FIXES
    85
    86* Fixed SetOutput() panics on go 1.17 [#2861](https://github.com/gin-gonic/gin/pull/2861)
    87* Fix: wrong when wildcard follows named param [#2983](https://github.com/gin-gonic/gin/pull/2983)
    88* Fix: missing sameSite when do context.reset() [#3123](https://github.com/gin-gonic/gin/pull/3123)
    89
    90### ENHANCEMENTS
    91
    92* Use Header() instead of deprecated HeaderMap [#2694](https://github.com/gin-gonic/gin/pull/2694)
    93* RouterGroup.Handle regular match optimization of http method [#2685](https://github.com/gin-gonic/gin/pull/2685)
    94* Add support go-json, another drop-in json replacement [#2680](https://github.com/gin-gonic/gin/pull/2680)
    95* Use errors.New to replace fmt.Errorf will much better [#2707](https://github.com/gin-gonic/gin/pull/2707)
    96* Use Duration.Truncate for truncating precision [#2711](https://github.com/gin-gonic/gin/pull/2711)
    97* Get client IP when using Cloudflare [#2723](https://github.com/gin-gonic/gin/pull/2723)
    98* Optimize code adjust [#2700](https://github.com/gin-gonic/gin/pull/2700/files)
    99* Optimize code and reduce code cyclomatic complexity [#2737](https://github.com/gin-gonic/gin/pull/2737)
   100* Improve sliceValidateError.Error performance [#2765](https://github.com/gin-gonic/gin/pull/2765)
   101* Support custom struct tag [#2720](https://github.com/gin-gonic/gin/pull/2720)
   102* Improve router group tests [#2787](https://github.com/gin-gonic/gin/pull/2787)
   103* Fallback Context.Deadline() Context.Done() Context.Err() to Context.Request.Context() [#2769](https://github.com/gin-gonic/gin/pull/2769)
   104* Some codes optimize [#2830](https://github.com/gin-gonic/gin/pull/2830) [#2834](https://github.com/gin-gonic/gin/pull/2834) [#2838](https://github.com/gin-gonic/gin/pull/2838) [#2837](https://github.com/gin-gonic/gin/pull/2837) [#2788](https://github.com/gin-gonic/gin/pull/2788) [#2848](https://github.com/gin-gonic/gin/pull/2848) [#2851](https://github.com/gin-gonic/gin/pull/2851) [#2701](https://github.com/gin-gonic/gin/pull/2701)
   105* TrustedProxies: Add default IPv6 support and refactor [#2967](https://github.com/gin-gonic/gin/pull/2967)
   106* Test(route): expose performRequest func [#3012](https://github.com/gin-gonic/gin/pull/3012)
   107* Support h2c with prior knowledge [#1398](https://github.com/gin-gonic/gin/pull/1398)
   108* Feat attachment filename support utf8 [#3071](https://github.com/gin-gonic/gin/pull/3071)
   109* Feat: add StaticFileFS [#2749](https://github.com/gin-gonic/gin/pull/2749)
   110* Feat(context): return GIN Context from Value method [#2825](https://github.com/gin-gonic/gin/pull/2825)
   111* Feat: automatically SetMode to TestMode when run go test [#3139](https://github.com/gin-gonic/gin/pull/3139)
   112* Add TOML bining for gin [#3081](https://github.com/gin-gonic/gin/pull/3081)
   113* IPv6 add default trusted proxies [#3033](https://github.com/gin-gonic/gin/pull/3033)
   114
   115### DOCS
   116
   117* Add note about nomsgpack tag to the readme [#2703](https://github.com/gin-gonic/gin/pull/2703)
   118
   119## Gin v1.7.7
   120
   121### BUG FIXES
   122
   123* Fixed X-Forwarded-For unsafe handling of CVE-2020-28483 [#2844](https://github.com/gin-gonic/gin/pull/2844), closed issue [#2862](https://github.com/gin-gonic/gin/issues/2862).
   124* Tree: updated the code logic for `latestNode` [#2897](https://github.com/gin-gonic/gin/pull/2897), closed issue [#2894](https://github.com/gin-gonic/gin/issues/2894) [#2878](https://github.com/gin-gonic/gin/issues/2878).
   125* Tree: fixed the misplacement of adding slashes [#2847](https://github.com/gin-gonic/gin/pull/2847), closed issue [#2843](https://github.com/gin-gonic/gin/issues/2843).
   126* Tree: fixed tsr with mixed static and wildcard paths [#2924](https://github.com/gin-gonic/gin/pull/2924), closed issue [#2918](https://github.com/gin-gonic/gin/issues/2918).
   127
   128### ENHANCEMENTS
   129
   130* TrustedProxies: make it backward-compatible [#2887](https://github.com/gin-gonic/gin/pull/2887), closed issue [#2819](https://github.com/gin-gonic/gin/issues/2819).
   131* TrustedPlatform: provide custom options for another CDN services [#2906](https://github.com/gin-gonic/gin/pull/2906).
   132
   133### DOCS
   134
   135* NoMethod: added usage annotation ([#2832](https://github.com/gin-gonic/gin/pull/2832#issuecomment-929954463)).
   136
   137## Gin v1.7.6
   138
   139### BUG FIXES
   140
   141* bump new release to fix v1.7.5 release error by using v1.7.4 codes.
   142
   143## Gin v1.7.4
   144
   145### BUG FIXES
   146
   147* bump new release to fix checksum mismatch
   148
   149## Gin v1.7.3
   150
   151### BUG FIXES
   152
   153* fix level 1 router match [#2767](https://github.com/gin-gonic/gin/issues/2767), [#2796](https://github.com/gin-gonic/gin/issues/2796)
   154
   155## Gin v1.7.2
   156
   157### BUG FIXES
   158
   159* Fix conflict between param and exact path [#2706](https://github.com/gin-gonic/gin/issues/2706). Close issue [#2682](https://github.com/gin-gonic/gin/issues/2682) [#2696](https://github.com/gin-gonic/gin/issues/2696).
   160
   161## Gin v1.7.1
   162
   163### BUG FIXES
   164
   165* fix: data race with trustedCIDRs from [#2674](https://github.com/gin-gonic/gin/issues/2674)([#2675](https://github.com/gin-gonic/gin/pull/2675))
   166
   167## Gin v1.7.0
   168
   169### BUG FIXES
   170
   171* fix compile error from [#2572](https://github.com/gin-gonic/gin/pull/2572) ([#2600](https://github.com/gin-gonic/gin/pull/2600))
   172* fix: print headers without Authorization header on broken pipe ([#2528](https://github.com/gin-gonic/gin/pull/2528))
   173* fix(tree): reassign fullpath when register new node ([#2366](https://github.com/gin-gonic/gin/pull/2366))
   174
   175### ENHANCEMENTS
   176
   177* Support params and exact routes without creating conflicts ([#2663](https://github.com/gin-gonic/gin/pull/2663))
   178* chore: improve render string performance ([#2365](https://github.com/gin-gonic/gin/pull/2365))
   179* Sync route tree to httprouter latest code ([#2368](https://github.com/gin-gonic/gin/pull/2368))
   180* chore: rename getQueryCache/getFormCache to initQueryCache/initFormCa ([#2375](https://github.com/gin-gonic/gin/pull/2375))
   181* chore(performance): improve countParams ([#2378](https://github.com/gin-gonic/gin/pull/2378))
   182* Remove some functions that have the same effect as the bytes package ([#2387](https://github.com/gin-gonic/gin/pull/2387))
   183* update:SetMode function ([#2321](https://github.com/gin-gonic/gin/pull/2321))
   184* remove an unused type SecureJSONPrefix ([#2391](https://github.com/gin-gonic/gin/pull/2391))
   185* Add a redirect sample for POST method ([#2389](https://github.com/gin-gonic/gin/pull/2389))
   186* Add CustomRecovery builtin middleware ([#2322](https://github.com/gin-gonic/gin/pull/2322))
   187* binding: avoid 2038 problem on 32-bit architectures ([#2450](https://github.com/gin-gonic/gin/pull/2450))
   188* Prevent panic in Context.GetQuery() when there is no Request ([#2412](https://github.com/gin-gonic/gin/pull/2412))
   189* Add GetUint and GetUint64 method on gin.context ([#2487](https://github.com/gin-gonic/gin/pull/2487))
   190* update content-disposition header to MIME-style ([#2512](https://github.com/gin-gonic/gin/pull/2512))
   191* reduce allocs and improve the render `WriteString` ([#2508](https://github.com/gin-gonic/gin/pull/2508))
   192* implement ".Unwrap() error" on Error type ([#2525](https://github.com/gin-gonic/gin/pull/2525)) ([#2526](https://github.com/gin-gonic/gin/pull/2526))
   193* Allow bind with a map[string]string ([#2484](https://github.com/gin-gonic/gin/pull/2484))
   194* chore: update tree ([#2371](https://github.com/gin-gonic/gin/pull/2371))
   195* Support binding for slice/array obj [Rewrite] ([#2302](https://github.com/gin-gonic/gin/pull/2302))
   196* basic auth: fix timing oracle ([#2609](https://github.com/gin-gonic/gin/pull/2609))
   197* Add mixed param and non-param paths (port of httprouter[#329](https://github.com/gin-gonic/gin/pull/329)) ([#2663](https://github.com/gin-gonic/gin/pull/2663))
   198* feat(engine): add trustedproxies and remoteIP ([#2632](https://github.com/gin-gonic/gin/pull/2632))
   199
   200## Gin v1.6.3
   201
   202### ENHANCEMENTS
   203
   204  * Improve performance: Change `*sync.RWMutex` to `sync.RWMutex` in context. [#2351](https://github.com/gin-gonic/gin/pull/2351)
   205
   206## Gin v1.6.2
   207
   208### BUG FIXES
   209
   210  * fix missing initial sync.RWMutex [#2305](https://github.com/gin-gonic/gin/pull/2305)
   211
   212### ENHANCEMENTS
   213
   214  * Add set samesite in cookie. [#2306](https://github.com/gin-gonic/gin/pull/2306)
   215
   216## Gin v1.6.1
   217
   218### BUG FIXES
   219
   220  * Revert "fix accept incoming network connections" [#2294](https://github.com/gin-gonic/gin/pull/2294)
   221
   222## Gin v1.6.0
   223
   224### BREAKING
   225
   226  * chore(performance): Improve performance for adding RemoveExtraSlash flag [#2159](https://github.com/gin-gonic/gin/pull/2159)
   227  * drop support govendor [#2148](https://github.com/gin-gonic/gin/pull/2148)
   228  * Added support for SameSite cookie flag [#1615](https://github.com/gin-gonic/gin/pull/1615)
   229
   230### FEATURES
   231
   232  * add yaml negotiation [#2220](https://github.com/gin-gonic/gin/pull/2220)
   233  * FileFromFS [#2112](https://github.com/gin-gonic/gin/pull/2112)
   234
   235### BUG FIXES
   236
   237  * Unix Socket Handling [#2280](https://github.com/gin-gonic/gin/pull/2280)
   238  * Use json marshall in context json to fix breaking new line issue. Fixes #2209 [#2228](https://github.com/gin-gonic/gin/pull/2228)
   239  * fix accept incoming network connections [#2216](https://github.com/gin-gonic/gin/pull/2216)
   240  * Fixed a bug in the calculation of the maximum number of parameters [#2166](https://github.com/gin-gonic/gin/pull/2166)
   241  * [FIX] allow empty headers on DataFromReader [#2121](https://github.com/gin-gonic/gin/pull/2121)
   242  * Add mutex for protect Context.Keys map [#1391](https://github.com/gin-gonic/gin/pull/1391)
   243
   244### ENHANCEMENTS
   245
   246  * Add mitigation for log injection [#2277](https://github.com/gin-gonic/gin/pull/2277)
   247  * tree: range over nodes values [#2229](https://github.com/gin-gonic/gin/pull/2229)
   248  * tree: remove duplicate assignment [#2222](https://github.com/gin-gonic/gin/pull/2222)
   249  * chore: upgrade go-isatty and json-iterator/go [#2215](https://github.com/gin-gonic/gin/pull/2215)
   250  * path: sync code with httprouter [#2212](https://github.com/gin-gonic/gin/pull/2212)
   251  * Use zero-copy approach to convert types between string and byte slice [#2206](https://github.com/gin-gonic/gin/pull/2206)
   252  * Reuse bytes when cleaning the URL paths [#2179](https://github.com/gin-gonic/gin/pull/2179)
   253  * tree: remove one else statement [#2177](https://github.com/gin-gonic/gin/pull/2177)
   254  * tree: sync httprouter update (#2173) (#2172) [#2171](https://github.com/gin-gonic/gin/pull/2171)
   255  * tree: sync part httprouter codes and reduce if/else [#2163](https://github.com/gin-gonic/gin/pull/2163)
   256  * use http method constant [#2155](https://github.com/gin-gonic/gin/pull/2155)
   257  * upgrade go-validator to v10 [#2149](https://github.com/gin-gonic/gin/pull/2149)
   258  * Refactor redirect request in gin.go [#1970](https://github.com/gin-gonic/gin/pull/1970)
   259  * Add build tag nomsgpack [#1852](https://github.com/gin-gonic/gin/pull/1852)
   260
   261### DOCS
   262
   263  * docs(path): improve comments [#2223](https://github.com/gin-gonic/gin/pull/2223)
   264  * Renew README to fit the modification of SetCookie method [#2217](https://github.com/gin-gonic/gin/pull/2217)
   265  * Fix spelling [#2202](https://github.com/gin-gonic/gin/pull/2202)
   266  * Remove broken link from README. [#2198](https://github.com/gin-gonic/gin/pull/2198)
   267  * Update docs on Context.Done(), Context.Deadline() and Context.Err() [#2196](https://github.com/gin-gonic/gin/pull/2196)
   268  * Update validator to v10 [#2190](https://github.com/gin-gonic/gin/pull/2190)
   269  * upgrade go-validator to v10 for README [#2189](https://github.com/gin-gonic/gin/pull/2189)
   270  * Update to currently output [#2188](https://github.com/gin-gonic/gin/pull/2188)
   271  * Fix "Custom Validators" example [#2186](https://github.com/gin-gonic/gin/pull/2186)
   272  * Add project to README [#2165](https://github.com/gin-gonic/gin/pull/2165)
   273  * docs(benchmarks): for gin v1.5 [#2153](https://github.com/gin-gonic/gin/pull/2153)
   274  * Changed wording for clarity in README.md [#2122](https://github.com/gin-gonic/gin/pull/2122)
   275
   276### MISC
   277
   278  * ci support go1.14 [#2262](https://github.com/gin-gonic/gin/pull/2262)
   279  * chore: upgrade depend version [#2231](https://github.com/gin-gonic/gin/pull/2231)
   280  * Drop support go1.10 [#2147](https://github.com/gin-gonic/gin/pull/2147)
   281  * fix comment in `mode.go` [#2129](https://github.com/gin-gonic/gin/pull/2129)
   282
   283## Gin v1.5.0
   284
   285- [FIX] Use DefaultWriter and DefaultErrorWriter for debug messages [#1891](https://github.com/gin-gonic/gin/pull/1891)
   286- [NEW] Now you can parse the inline lowercase start structure [#1893](https://github.com/gin-gonic/gin/pull/1893)
   287- [FIX] Some code improvements [#1909](https://github.com/gin-gonic/gin/pull/1909)
   288- [FIX] Use encode replace json marshal increase json encoder speed [#1546](https://github.com/gin-gonic/gin/pull/1546)
   289- [NEW] Hold matched route full path in the Context [#1826](https://github.com/gin-gonic/gin/pull/1826)
   290- [FIX] Fix context.Params race condition on Copy() [#1841](https://github.com/gin-gonic/gin/pull/1841)
   291- [NEW] Add context param query cache [#1450](https://github.com/gin-gonic/gin/pull/1450)
   292- [FIX] Improve GetQueryMap performance [#1918](https://github.com/gin-gonic/gin/pull/1918)
   293- [FIX] Improve get post data [#1920](https://github.com/gin-gonic/gin/pull/1920)
   294- [FIX] Use context instead of x/net/context [#1922](https://github.com/gin-gonic/gin/pull/1922)
   295- [FIX] Attempt to fix PostForm cache bug [#1931](https://github.com/gin-gonic/gin/pull/1931)
   296- [NEW] Add support of multipart multi files [#1949](https://github.com/gin-gonic/gin/pull/1949)
   297- [NEW] Support bind http header param [#1957](https://github.com/gin-gonic/gin/pull/1957)
   298- [FIX] Drop support for go1.8 and go1.9 [#1933](https://github.com/gin-gonic/gin/pull/1933)
   299- [FIX] Bugfix for the FullPath feature [#1919](https://github.com/gin-gonic/gin/pull/1919)
   300- [FIX] Gin1.5 bytes.Buffer to strings.Builder [#1939](https://github.com/gin-gonic/gin/pull/1939)
   301- [FIX] Upgrade github.com/ugorji/go/codec [#1969](https://github.com/gin-gonic/gin/pull/1969)
   302- [NEW] Support bind unix time [#1980](https://github.com/gin-gonic/gin/pull/1980)
   303- [FIX] Simplify code [#2004](https://github.com/gin-gonic/gin/pull/2004)
   304- [NEW] Support negative Content-Length in DataFromReader [#1981](https://github.com/gin-gonic/gin/pull/1981)
   305- [FIX] Identify terminal on a RISC-V architecture for auto-colored logs [#2019](https://github.com/gin-gonic/gin/pull/2019)
   306- [BREAKING] `Context.JSONP()` now expects a semicolon (`;`) at the end [#2007](https://github.com/gin-gonic/gin/pull/2007)
   307- [BREAKING] Upgrade default `binding.Validator` to v9 (see [its changelog](https://github.com/go-playground/validator/releases/tag/v9.0.0)) [#1015](https://github.com/gin-gonic/gin/pull/1015)
   308- [NEW] Add `DisallowUnknownFields()` in `Context.BindJSON()` [#2028](https://github.com/gin-gonic/gin/pull/2028)
   309- [NEW] Use specific `net.Listener` with `Engine.RunListener()` [#2023](https://github.com/gin-gonic/gin/pull/2023)
   310- [FIX] Fix some typo [#2079](https://github.com/gin-gonic/gin/pull/2079) [#2080](https://github.com/gin-gonic/gin/pull/2080)
   311- [FIX] Relocate binding body tests [#2086](https://github.com/gin-gonic/gin/pull/2086)
   312- [FIX] Use Writer in Context.Status [#1606](https://github.com/gin-gonic/gin/pull/1606)
   313- [FIX] `Engine.RunUnix()` now returns the error if it can't change the file mode [#2093](https://github.com/gin-gonic/gin/pull/2093)
   314- [FIX] `RouterGroup.StaticFS()` leaked files. Now it closes them. [#2118](https://github.com/gin-gonic/gin/pull/2118)
   315- [FIX] `Context.Request.FormFile` leaked file. Now it closes it. [#2114](https://github.com/gin-gonic/gin/pull/2114)
   316- [FIX] Ignore walking on `form:"-"` mapping [#1943](https://github.com/gin-gonic/gin/pull/1943)
   317
   318### Gin v1.4.0
   319
   320- [NEW] Support for [Go Modules](https://github.com/golang/go/wiki/Modules)  [#1569](https://github.com/gin-gonic/gin/pull/1569)
   321- [NEW] Refactor of form mapping multipart request [#1829](https://github.com/gin-gonic/gin/pull/1829)
   322- [FIX] Truncate Latency precision in long running request [#1830](https://github.com/gin-gonic/gin/pull/1830)
   323- [FIX] IsTerm flag should not be affected by DisableConsoleColor method. [#1802](https://github.com/gin-gonic/gin/pull/1802)
   324- [NEW] Supporting file binding [#1264](https://github.com/gin-gonic/gin/pull/1264)
   325- [NEW] Add support for mapping arrays [#1797](https://github.com/gin-gonic/gin/pull/1797)
   326- [FIX] Readme updates [#1793](https://github.com/gin-gonic/gin/pull/1793) [#1788](https://github.com/gin-gonic/gin/pull/1788) [1789](https://github.com/gin-gonic/gin/pull/1789)
   327- [FIX] StaticFS: Fixed Logging two log lines on 404.  [#1805](https://github.com/gin-gonic/gin/pull/1805), [#1804](https://github.com/gin-gonic/gin/pull/1804)
   328- [NEW] Make context.Keys available as LogFormatterParams [#1779](https://github.com/gin-gonic/gin/pull/1779)
   329- [NEW] Use internal/json for Marshal/Unmarshal [#1791](https://github.com/gin-gonic/gin/pull/1791)
   330- [NEW] Support mapping time.Duration [#1794](https://github.com/gin-gonic/gin/pull/1794)
   331- [NEW] Refactor form mappings [#1749](https://github.com/gin-gonic/gin/pull/1749)
   332- [NEW] Added flag to context.Stream indicates if client disconnected in middle of stream [#1252](https://github.com/gin-gonic/gin/pull/1252)
   333- [FIX] Moved [examples](https://github.com/gin-gonic/examples) to stand alone Repo [#1775](https://github.com/gin-gonic/gin/pull/1775)
   334- [NEW] Extend context.File to allow for the content-disposition attachments via a new method context.Attachment [#1260](https://github.com/gin-gonic/gin/pull/1260)
   335- [FIX] Support HTTP content negotiation wildcards [#1112](https://github.com/gin-gonic/gin/pull/1112)
   336- [NEW] Add prefix from X-Forwarded-Prefix in redirectTrailingSlash [#1238](https://github.com/gin-gonic/gin/pull/1238)
   337- [FIX] context.Copy() race condition [#1020](https://github.com/gin-gonic/gin/pull/1020)
   338- [NEW] Add context.HandlerNames() [#1729](https://github.com/gin-gonic/gin/pull/1729)
   339- [FIX] Change color methods to public in the defaultLogger. [#1771](https://github.com/gin-gonic/gin/pull/1771)
   340- [FIX] Update writeHeaders method to use http.Header.Set [#1722](https://github.com/gin-gonic/gin/pull/1722)
   341- [NEW] Add response size to LogFormatterParams [#1752](https://github.com/gin-gonic/gin/pull/1752)
   342- [NEW] Allow ignoring field on form mapping [#1733](https://github.com/gin-gonic/gin/pull/1733)
   343- [NEW] Add a function to force color in console output. [#1724](https://github.com/gin-gonic/gin/pull/1724)
   344- [FIX] Context.Next() - recheck len of handlers on every iteration. [#1745](https://github.com/gin-gonic/gin/pull/1745)
   345- [FIX] Fix all errcheck warnings [#1739](https://github.com/gin-gonic/gin/pull/1739) [#1653](https://github.com/gin-gonic/gin/pull/1653)
   346- [NEW] context: inherits context cancellation and deadline from http.Request context for Go>=1.7 [#1690](https://github.com/gin-gonic/gin/pull/1690)
   347- [NEW] Binding for URL Params [#1694](https://github.com/gin-gonic/gin/pull/1694)
   348- [NEW] Add LoggerWithFormatter method [#1677](https://github.com/gin-gonic/gin/pull/1677)
   349- [FIX] CI testing updates [#1671](https://github.com/gin-gonic/gin/pull/1671) [#1670](https://github.com/gin-gonic/gin/pull/1670) [#1682](https://github.com/gin-gonic/gin/pull/1682) [#1669](https://github.com/gin-gonic/gin/pull/1669)
   350- [FIX] StaticFS(): Send 404 when path does not exist [#1663](https://github.com/gin-gonic/gin/pull/1663)
   351- [FIX] Handle nil body for JSON binding [#1638](https://github.com/gin-gonic/gin/pull/1638)
   352- [FIX] Support bind uri param [#1612](https://github.com/gin-gonic/gin/pull/1612)
   353- [FIX] recovery: fix issue with syscall import on google app engine [#1640](https://github.com/gin-gonic/gin/pull/1640)
   354- [FIX] Make sure the debug log contains line breaks [#1650](https://github.com/gin-gonic/gin/pull/1650)
   355- [FIX] Panic stack trace being printed during recovery of broken pipe [#1089](https://github.com/gin-gonic/gin/pull/1089) [#1259](https://github.com/gin-gonic/gin/pull/1259)
   356- [NEW] RunFd method to run http.Server through a file descriptor [#1609](https://github.com/gin-gonic/gin/pull/1609)
   357- [NEW] Yaml binding support [#1618](https://github.com/gin-gonic/gin/pull/1618)
   358- [FIX] Pass MaxMultipartMemory when FormFile is called [#1600](https://github.com/gin-gonic/gin/pull/1600)
   359- [FIX] LoadHTML* tests [#1559](https://github.com/gin-gonic/gin/pull/1559)
   360- [FIX] Removed use of sync.pool from HandleContext [#1565](https://github.com/gin-gonic/gin/pull/1565)
   361- [FIX] Format output log to os.Stderr [#1571](https://github.com/gin-gonic/gin/pull/1571)
   362- [FIX] Make logger use a yellow background and a darkgray text for legibility [#1570](https://github.com/gin-gonic/gin/pull/1570)
   363- [FIX] Remove sensitive request information from panic log. [#1370](https://github.com/gin-gonic/gin/pull/1370)
   364- [FIX] log.Println() does not print timestamp [#829](https://github.com/gin-gonic/gin/pull/829) [#1560](https://github.com/gin-gonic/gin/pull/1560)
   365- [NEW] Add PureJSON renderer [#694](https://github.com/gin-gonic/gin/pull/694)
   366- [FIX] Add missing copyright and update if/else [#1497](https://github.com/gin-gonic/gin/pull/1497)
   367- [FIX] Update msgpack usage [#1498](https://github.com/gin-gonic/gin/pull/1498)
   368- [FIX] Use protobuf on render [#1496](https://github.com/gin-gonic/gin/pull/1496)
   369- [FIX] Add support for Protobuf format response [#1479](https://github.com/gin-gonic/gin/pull/1479)
   370- [NEW] Set default time format in form binding [#1487](https://github.com/gin-gonic/gin/pull/1487)
   371- [FIX] Add BindXML and ShouldBindXML [#1485](https://github.com/gin-gonic/gin/pull/1485)
   372- [NEW] Upgrade dependency libraries [#1491](https://github.com/gin-gonic/gin/pull/1491)
   373
   374
   375## Gin v1.3.0
   376
   377- [NEW] Add [`func (*Context) QueryMap`](https://godoc.org/github.com/gin-gonic/gin#Context.QueryMap), [`func (*Context) GetQueryMap`](https://godoc.org/github.com/gin-gonic/gin#Context.GetQueryMap), [`func (*Context) PostFormMap`](https://godoc.org/github.com/gin-gonic/gin#Context.PostFormMap) and [`func (*Context) GetPostFormMap`](https://godoc.org/github.com/gin-gonic/gin#Context.GetPostFormMap) to support `type map[string]string` as query string or form parameters, see [#1383](https://github.com/gin-gonic/gin/pull/1383)
   378- [NEW] Add [`func (*Context) AsciiJSON`](https://godoc.org/github.com/gin-gonic/gin#Context.AsciiJSON), see [#1358](https://github.com/gin-gonic/gin/pull/1358)
   379- [NEW] Add `Pusher()` in [`type ResponseWriter`](https://godoc.org/github.com/gin-gonic/gin#ResponseWriter) for supporting http2 push, see [#1273](https://github.com/gin-gonic/gin/pull/1273)
   380- [NEW] Add [`func (*Context) DataFromReader`](https://godoc.org/github.com/gin-gonic/gin#Context.DataFromReader) for serving dynamic data, see [#1304](https://github.com/gin-gonic/gin/pull/1304)
   381- [NEW] Add [`func (*Context) ShouldBindBodyWith`](https://godoc.org/github.com/gin-gonic/gin#Context.ShouldBindBodyWith) allowing to call binding multiple times, see [#1341](https://github.com/gin-gonic/gin/pull/1341)
   382- [NEW] Support pointers in form binding, see [#1336](https://github.com/gin-gonic/gin/pull/1336)
   383- [NEW] Add [`func (*Context) JSONP`](https://godoc.org/github.com/gin-gonic/gin#Context.JSONP), see [#1333](https://github.com/gin-gonic/gin/pull/1333)
   384- [NEW] Support default value in form binding, see [#1138](https://github.com/gin-gonic/gin/pull/1138)
   385- [NEW] Expose validator engine in [`type StructValidator`](https://godoc.org/github.com/gin-gonic/gin/binding#StructValidator), see [#1277](https://github.com/gin-gonic/gin/pull/1277)
   386- [NEW] Add [`func (*Context) ShouldBind`](https://godoc.org/github.com/gin-gonic/gin#Context.ShouldBind), [`func (*Context) ShouldBindQuery`](https://godoc.org/github.com/gin-gonic/gin#Context.ShouldBindQuery) and [`func (*Context) ShouldBindJSON`](https://godoc.org/github.com/gin-gonic/gin#Context.ShouldBindJSON), see [#1047](https://github.com/gin-gonic/gin/pull/1047)
   387- [NEW] Add support for `time.Time` location in form binding, see [#1117](https://github.com/gin-gonic/gin/pull/1117)
   388- [NEW] Add [`func (*Context) BindQuery`](https://godoc.org/github.com/gin-gonic/gin#Context.BindQuery), see [#1029](https://github.com/gin-gonic/gin/pull/1029)
   389- [NEW] Make [jsonite](https://github.com/json-iterator/go) optional with build tags, see [#1026](https://github.com/gin-gonic/gin/pull/1026)
   390- [NEW] Show query string in logger, see [#999](https://github.com/gin-gonic/gin/pull/999)
   391- [NEW] Add [`func (*Context) SecureJSON`](https://godoc.org/github.com/gin-gonic/gin#Context.SecureJSON), see [#987](https://github.com/gin-gonic/gin/pull/987) and [#993](https://github.com/gin-gonic/gin/pull/993)
   392- [DEPRECATE] `func (*Context) GetCookie` for [`func (*Context) Cookie`](https://godoc.org/github.com/gin-gonic/gin#Context.Cookie)
   393- [FIX] Don't display color tags if [`func DisableConsoleColor`](https://godoc.org/github.com/gin-gonic/gin#DisableConsoleColor) called, see [#1072](https://github.com/gin-gonic/gin/pull/1072)
   394- [FIX] Gin Mode `""` when calling [`func Mode`](https://godoc.org/github.com/gin-gonic/gin#Mode) now returns `const DebugMode`, see [#1250](https://github.com/gin-gonic/gin/pull/1250)
   395- [FIX] `Flush()` now doesn't overwrite `responseWriter` status code, see [#1460](https://github.com/gin-gonic/gin/pull/1460)
   396
   397## Gin 1.2.0
   398
   399- [NEW] Switch from godeps to govendor
   400- [NEW] Add support for Let's Encrypt via gin-gonic/autotls
   401- [NEW] Improve README examples and add extra at examples folder
   402- [NEW] Improved support with App Engine
   403- [NEW] Add custom template delimiters, see #860
   404- [NEW] Add Template Func Maps, see #962
   405- [NEW] Add \*context.Handler(), see #928
   406- [NEW] Add \*context.GetRawData()
   407- [NEW] Add \*context.GetHeader() (request)
   408- [NEW] Add \*context.AbortWithStatusJSON() (JSON content type)
   409- [NEW] Add \*context.Keys type cast helpers
   410- [NEW] Add \*context.ShouldBindWith()
   411- [NEW] Add \*context.MustBindWith()
   412- [NEW] Add \*engine.SetFuncMap()
   413- [DEPRECATE] On next release: \*context.BindWith(), see #855
   414- [FIX] Refactor render
   415- [FIX] Reworked tests
   416- [FIX] logger now supports cygwin
   417- [FIX] Use X-Forwarded-For before X-Real-Ip
   418- [FIX] time.Time binding (#904)
   419
   420## Gin 1.1.4
   421
   422- [NEW] Support google appengine for IsTerminal func
   423
   424## Gin 1.1.3
   425
   426- [FIX] Reverted Logger: skip ANSI color commands
   427
   428## Gin 1.1
   429
   430- [NEW] Implement QueryArray and PostArray methods
   431- [NEW] Refactor GetQuery and GetPostForm
   432- [NEW] Add contribution guide
   433- [FIX] Corrected typos in README
   434- [FIX] Removed additional Iota
   435- [FIX] Changed imports to gopkg instead of github in README (#733)
   436- [FIX] Logger: skip ANSI color commands if output is not a tty
   437
   438## Gin 1.0rc2 (...)
   439
   440- [PERFORMANCE] Fast path for writing Content-Type.
   441- [PERFORMANCE] Much faster 404 routing
   442- [PERFORMANCE] Allocation optimizations
   443- [PERFORMANCE] Faster root tree lookup
   444- [PERFORMANCE] Zero overhead, String() and JSON() rendering.
   445- [PERFORMANCE] Faster ClientIP parsing
   446- [PERFORMANCE] Much faster SSE implementation
   447- [NEW] Benchmarks suite
   448- [NEW] Bind validation can be disabled and replaced with custom validators.
   449- [NEW] More flexible HTML render
   450- [NEW] Multipart and PostForm bindings
   451- [NEW] Adds method to return all the registered routes
   452- [NEW] Context.HandlerName() returns the main handler's name
   453- [NEW] Adds Error.IsType() helper
   454- [FIX] Binding multipart form
   455- [FIX] Integration tests
   456- [FIX] Crash when binding non struct object in Context.
   457- [FIX] RunTLS() implementation
   458- [FIX] Logger() unit tests
   459- [FIX] Adds SetHTMLTemplate() warning
   460- [FIX] Context.IsAborted()
   461- [FIX] More unit tests
   462- [FIX] JSON, XML, HTML renders accept custom content-types
   463- [FIX] gin.AbortIndex is unexported
   464- [FIX] Better approach to avoid directory listing in StaticFS()
   465- [FIX] Context.ClientIP() always returns the IP with trimmed spaces.
   466- [FIX] Better warning when running in debug mode.
   467- [FIX] Google App Engine integration. debugPrint does not use os.Stdout
   468- [FIX] Fixes integer overflow in error type
   469- [FIX] Error implements the json.Marshaller interface
   470- [FIX] MIT license in every file
   471
   472
   473## Gin 1.0rc1 (May 22, 2015)
   474
   475- [PERFORMANCE] Zero allocation router
   476- [PERFORMANCE] Faster JSON, XML and text rendering
   477- [PERFORMANCE] Custom hand optimized HttpRouter for Gin
   478- [PERFORMANCE] Misc code optimizations. Inlining, tail call optimizations
   479- [NEW] Built-in support for golang.org/x/net/context
   480- [NEW] Any(path, handler). Create a route that matches any path
   481- [NEW] Refactored rendering pipeline (faster and static typed)
   482- [NEW] Refactored errors API
   483- [NEW] IndentedJSON() prints pretty JSON
   484- [NEW] Added gin.DefaultWriter
   485- [NEW] UNIX socket support
   486- [NEW] RouterGroup.BasePath is exposed
   487- [NEW] JSON validation using go-validate-yourself (very powerful options)
   488- [NEW] Completed suite of unit tests
   489- [NEW] HTTP streaming with c.Stream()
   490- [NEW] StaticFile() creates a router for serving just one file.
   491- [NEW] StaticFS() has an option to disable directory listing.
   492- [NEW] StaticFS() for serving static files through virtual filesystems
   493- [NEW] Server-Sent Events native support
   494- [NEW] WrapF() and WrapH() helpers for wrapping http.HandlerFunc and http.Handler
   495- [NEW] Added LoggerWithWriter() middleware
   496- [NEW] Added RecoveryWithWriter() middleware
   497- [NEW] Added DefaultPostFormValue()
   498- [NEW] Added DefaultFormValue()
   499- [NEW] Added DefaultParamValue()
   500- [FIX] BasicAuth() when using custom realm
   501- [FIX] Bug when serving static files in nested routing group
   502- [FIX] Redirect using built-in http.Redirect()
   503- [FIX] Logger when printing the requested path
   504- [FIX] Documentation typos
   505- [FIX] Context.Engine renamed to Context.engine
   506- [FIX] Better debugging messages
   507- [FIX] ErrorLogger
   508- [FIX] Debug HTTP render
   509- [FIX] Refactored binding and render modules
   510- [FIX] Refactored Context initialization
   511- [FIX] Refactored BasicAuth()
   512- [FIX] NoMethod/NoRoute handlers
   513- [FIX] Hijacking http
   514- [FIX] Better support for Google App Engine (using log instead of fmt)
   515
   516
   517## Gin 0.6 (Mar 9, 2015)
   518
   519- [NEW] Support multipart/form-data
   520- [NEW] NoMethod handler
   521- [NEW] Validate sub structures
   522- [NEW] Support for HTTP Realm Auth
   523- [FIX] Unsigned integers in binding
   524- [FIX] Improve color logger
   525
   526
   527## Gin 0.5 (Feb 7, 2015)
   528
   529- [NEW] Content Negotiation
   530- [FIX] Solved security bug that allow a client to spoof ip
   531- [FIX] Fix unexported/ignored fields in binding
   532
   533
   534## Gin 0.4 (Aug 21, 2014)
   535
   536- [NEW] Development mode
   537- [NEW] Unit tests
   538- [NEW] Add Content.Redirect()
   539- [FIX] Deferring WriteHeader()
   540- [FIX] Improved documentation for model binding
   541
   542
   543## Gin 0.3 (Jul 18, 2014)
   544
   545- [PERFORMANCE] Normal log and error log are printed in the same call.
   546- [PERFORMANCE] Improve performance of NoRouter()
   547- [PERFORMANCE] Improve context's memory locality, reduce CPU cache faults.
   548- [NEW] Flexible rendering API
   549- [NEW] Add Context.File()
   550- [NEW] Add shortcut RunTLS() for http.ListenAndServeTLS
   551- [FIX] Rename NotFound404() to NoRoute()
   552- [FIX] Errors in context are purged
   553- [FIX] Adds HEAD method in Static file serving
   554- [FIX] Refactors Static() file serving
   555- [FIX] Using keyed initialization to fix app-engine integration
   556- [FIX] Can't unmarshal JSON array, #63
   557- [FIX] Renaming Context.Req to Context.Request
   558- [FIX] Check application/x-www-form-urlencoded when parsing form
   559
   560
   561## Gin 0.2b (Jul 08, 2014)
   562- [PERFORMANCE] Using sync.Pool to allocatio/gc overhead
   563- [NEW] Travis CI integration
   564- [NEW] Completely new logger
   565- [NEW] New API for serving static files. gin.Static()
   566- [NEW] gin.H() can be serialized into XML
   567- [NEW] Typed errors. Errors can be typed. Internet/external/custom.
   568- [NEW] Support for Godeps
   569- [NEW] Travis/Godocs badges in README
   570- [NEW] New Bind() and BindWith() methods for parsing request body.
   571- [NEW] Add Content.Copy()
   572- [NEW] Add context.LastError()
   573- [NEW] Add shortcut for OPTIONS HTTP method
   574- [FIX] Tons of README fixes
   575- [FIX] Header is written before body
   576- [FIX] BasicAuth() and changes API a little bit
   577- [FIX] Recovery() middleware only prints panics
   578- [FIX] Context.Get() does not panic anymore. Use MustGet() instead.
   579- [FIX] Multiple http.WriteHeader() in NotFound handlers
   580- [FIX] Engine.Run() panics if http server can't be set up
   581- [FIX] Crash when route path doesn't start with '/'
   582- [FIX] Do not update header when status code is negative
   583- [FIX] Setting response headers before calling WriteHeader in context.String()
   584- [FIX] Add MIT license
   585- [FIX] Changes behaviour of ErrorLogger() and Logger()

View as plain text