1# CHANGELOG 2 3### Gin 1.2 4 5- [NEW] Switch from godeps to govendor 6- [NEW] Add support for Let's Encrypt via gin-gonic/autotls 7- [NEW] Improve README examples and add extra at examples folder 8- [NEW] Improved support with App Engine 9- [NEW] Add custom template delimiters, see #860 10- [NEW] Add Template Func Maps, see #962 11- [NEW] Add \*context.Handler(), see #928 12- [NEW] Add \*context.GetRawData() 13- [NEW] Add \*context.GetHeader() (request) 14- [NEW] Add \*context.AbortWithStatusJSON() (JSON content type) 15- [NEW] Add \*context.Keys type cast helpers 16- [NEW] Add \*context.ShouldBindWith() 17- [NEW] Add \*context.MustBindWith() 18- [NEW] Add \*engine.SetFuncMap() 19- [DEPRECATE] On next release: \*context.BindWith(), see #855 20- [FIX] Refactor render 21- [FIX] Reworked tests 22- [FIX] logger now supports cygwin 23- [FIX] Use X-Forwarded-For before X-Real-Ip 24- [FIX] time.Time binding (#904) 25 26### Gin 1.1.4 27 28- [NEW] Support google appengine for IsTerminal func 29 30### Gin 1.1.3 31 32- [FIX] Reverted Logger: skip ANSI color commands 33 34### Gin 1.1 35 36- [NEW] Implement QueryArray and PostArray methods 37- [NEW] Refactor GetQuery and GetPostForm 38- [NEW] Add contribution guide 39- [FIX] Corrected typos in README 40- [FIX] Removed additional Iota 41- [FIX] Changed imports to gopkg instead of github in README (#733) 42- [FIX] Logger: skip ANSI color commands if output is not a tty 43 44### Gin 1.0rc2 (...) 45 46- [PERFORMANCE] Fast path for writing Content-Type. 47- [PERFORMANCE] Much faster 404 routing 48- [PERFORMANCE] Allocation optimizations 49- [PERFORMANCE] Faster root tree lookup 50- [PERFORMANCE] Zero overhead, String() and JSON() rendering. 51- [PERFORMANCE] Faster ClientIP parsing 52- [PERFORMANCE] Much faster SSE implementation 53- [NEW] Benchmarks suite 54- [NEW] Bind validation can be disabled and replaced with custom validators. 55- [NEW] More flexible HTML render 56- [NEW] Multipart and PostForm bindings 57- [NEW] Adds method to return all the registered routes 58- [NEW] Context.HandlerName() returns the main handler's name 59- [NEW] Adds Error.IsType() helper 60- [FIX] Binding multipart form 61- [FIX] Integration tests 62- [FIX] Crash when binding non struct object in Context. 63- [FIX] RunTLS() implementation 64- [FIX] Logger() unit tests 65- [FIX] Adds SetHTMLTemplate() warning 66- [FIX] Context.IsAborted() 67- [FIX] More unit tests 68- [FIX] JSON, XML, HTML renders accept custom content-types 69- [FIX] gin.AbortIndex is unexported 70- [FIX] Better approach to avoid directory listing in StaticFS() 71- [FIX] Context.ClientIP() always returns the IP with trimmed spaces. 72- [FIX] Better warning when running in debug mode. 73- [FIX] Google App Engine integration. debugPrint does not use os.Stdout 74- [FIX] Fixes integer overflow in error type 75- [FIX] Error implements the json.Marshaller interface 76- [FIX] MIT license in every file 77 78 79### Gin 1.0rc1 (May 22, 2015) 80 81- [PERFORMANCE] Zero allocation router 82- [PERFORMANCE] Faster JSON, XML and text rendering 83- [PERFORMANCE] Custom hand optimized HttpRouter for Gin 84- [PERFORMANCE] Misc code optimizations. Inlining, tail call optimizations 85- [NEW] Built-in support for golang.org/x/net/context 86- [NEW] Any(path, handler). Create a route that matches any path 87- [NEW] Refactored rendering pipeline (faster and static typeded) 88- [NEW] Refactored errors API 89- [NEW] IndentedJSON() prints pretty JSON 90- [NEW] Added gin.DefaultWriter 91- [NEW] UNIX socket support 92- [NEW] RouterGroup.BasePath is exposed 93- [NEW] JSON validation using go-validate-yourself (very powerful options) 94- [NEW] Completed suite of unit tests 95- [NEW] HTTP streaming with c.Stream() 96- [NEW] StaticFile() creates a router for serving just one file. 97- [NEW] StaticFS() has an option to disable directory listing. 98- [NEW] StaticFS() for serving static files through virtual filesystems 99- [NEW] Server-Sent Events native support 100- [NEW] WrapF() and WrapH() helpers for wrapping http.HandlerFunc and http.Handler 101- [NEW] Added LoggerWithWriter() middleware 102- [NEW] Added RecoveryWithWriter() middleware 103- [NEW] Added DefaultPostFormValue() 104- [NEW] Added DefaultFormValue() 105- [NEW] Added DefaultParamValue() 106- [FIX] BasicAuth() when using custom realm 107- [FIX] Bug when serving static files in nested routing group 108- [FIX] Redirect using built-in http.Redirect() 109- [FIX] Logger when printing the requested path 110- [FIX] Documentation typos 111- [FIX] Context.Engine renamed to Context.engine 112- [FIX] Better debugging messages 113- [FIX] ErrorLogger 114- [FIX] Debug HTTP render 115- [FIX] Refactored binding and render modules 116- [FIX] Refactored Context initialization 117- [FIX] Refactored BasicAuth() 118- [FIX] NoMethod/NoRoute handlers 119- [FIX] Hijacking http 120- [FIX] Better support for Google App Engine (using log instead of fmt) 121 122 123### Gin 0.6 (Mar 9, 2015) 124 125- [NEW] Support multipart/form-data 126- [NEW] NoMethod handler 127- [NEW] Validate sub structures 128- [NEW] Support for HTTP Realm Auth 129- [FIX] Unsigned integers in binding 130- [FIX] Improve color logger 131 132 133### Gin 0.5 (Feb 7, 2015) 134 135- [NEW] Content Negotiation 136- [FIX] Solved security bug that allow a client to spoof ip 137- [FIX] Fix unexported/ignored fields in binding 138 139 140### Gin 0.4 (Aug 21, 2014) 141 142- [NEW] Development mode 143- [NEW] Unit tests 144- [NEW] Add Content.Redirect() 145- [FIX] Deferring WriteHeader() 146- [FIX] Improved documentation for model binding 147 148 149### Gin 0.3 (Jul 18, 2014) 150 151- [PERFORMANCE] Normal log and error log are printed in the same call. 152- [PERFORMANCE] Improve performance of NoRouter() 153- [PERFORMANCE] Improve context's memory locality, reduce CPU cache faults. 154- [NEW] Flexible rendering API 155- [NEW] Add Context.File() 156- [NEW] Add shorcut RunTLS() for http.ListenAndServeTLS 157- [FIX] Rename NotFound404() to NoRoute() 158- [FIX] Errors in context are purged 159- [FIX] Adds HEAD method in Static file serving 160- [FIX] Refactors Static() file serving 161- [FIX] Using keyed initialization to fix app-engine integration 162- [FIX] Can't unmarshal JSON array, #63 163- [FIX] Renaming Context.Req to Context.Request 164- [FIX] Check application/x-www-form-urlencoded when parsing form 165 166 167### Gin 0.2b (Jul 08, 2014) 168- [PERFORMANCE] Using sync.Pool to allocatio/gc overhead 169- [NEW] Travis CI integration 170- [NEW] Completely new logger 171- [NEW] New API for serving static files. gin.Static() 172- [NEW] gin.H() can be serialized into XML 173- [NEW] Typed errors. Errors can be typed. Internet/external/custom. 174- [NEW] Support for Godeps 175- [NEW] Travis/Godocs badges in README 176- [NEW] New Bind() and BindWith() methods for parsing request body. 177- [NEW] Add Content.Copy() 178- [NEW] Add context.LastError() 179- [NEW] Add shorcut for OPTIONS HTTP method 180- [FIX] Tons of README fixes 181- [FIX] Header is written before body 182- [FIX] BasicAuth() and changes API a little bit 183- [FIX] Recovery() middleware only prints panics 184- [FIX] Context.Get() does not panic anymore. Use MustGet() instead. 185- [FIX] Multiple http.WriteHeader() in NotFound handlers 186- [FIX] Engine.Run() panics if http server can't be setted up 187- [FIX] Crash when route path doesn't start with '/' 188- [FIX] Do not update header when status code is negative 189- [FIX] Setting response headers before calling WriteHeader in context.String() 190- [FIX] Add MIT license 191- [FIX] Changes behaviour of ErrorLogger() and Logger() 192