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