|author||Loïc Hoguin <[email protected]>||2014-10-04 15:50:53 +0300|
|committer||Loïc Hoguin <[email protected]>||2014-10-04 15:50:53 +0300|
Diffstat (limited to 'CHANGELOG.md')
1 files changed, 84 insertions, 0 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 16863e9..a29963a 100644
@@ -1,6 +1,90 @@
+ * Drop R16 support
+ * Breaking update of the cowboy_req interface
+ Simplify the interface for most cowboy_req functions. They all return
+ a single value except the four body reading functions. The reply functions
+ now only return a Req value.
+ Access functions do not return a Req anymore.
+ Functions that used to cache results do not have a cache anymore.
+ The interface for accessing query string and cookies has therefore
+ been changed.
+ None of the functions return an error tuple anymore. It either works
+ or crashes. Cowboy will attempt to provide an appropriate status code
+ in the response of crashed handlers.
+ As a result, the content decode function has its return value changed
+ to a simple binary, and the body reading functions only return on success.
+ * Change interface for reading the query string and cookies
+ There are now three query string functions: qs/1 provides access
+ to the raw query string value; parse_qs/1 returns the query string
+ as a list of key/values; match_qs/2 returns a map containing the
+ values requested in the second argument, after applying constraints
+ and default value.
+ Similarly, there are two cookie functions: parse_cookies/1 and
+ match_cookies/2. More match functions will be added in future commits.
+ * Unify the init and terminate callbacks
+ `init/3` becomes `init/2`, its first argument was removed. Its return
+ value has changed, it now returns an `ok` tuple or a `Mod` tuple, the
+ latter allowing to switch to a different handler type and also able
+ to take timeout and hibernate options. The sub protocol interface has
+ been changed and receives these options now.
+ rest_init/2 and rest_terminate/2 have been removed.
+ websocket_init/3 and websocket_terminate/3 have been removed.
+ terminate/3 is now optional. It is called regardless of
+ the type of handler, including REST and Websocket.
+ Terminate reasons for all handler types have been documented.
+ The terminate callback is now appropriately called in all cases
+ (or should be).
+ * Plain HTTP handlers are virtually removed
+ You can use the `init/2` function to do the work of a plain HTTP
+ handler. The behavior is defined in `cowboy_handler`.
+ * Loop handlers are now the `cowboy_loop` sub protocol
+ * Loop handlers now use the same return values as Websocket
+ * Behaviors have been moved into the module implementing them
+ That means `cowboy_loop`, `cowboy_rest` and `cowboy_websocket`.
+ * Change the format for constraints used by the router
+ * Remove the onrequest hook
+ Use a middleware instead.
+ * Remove the `error` return value from middlewares
+ * Remove the REST `known_content_type` callback
+ * Improve absolute URI support
+ * Fix two edge cases when the request-line is invalid
+ * Guide reorganization and partial rewrite