git.iko.soy/typeable/servant
on servant-client-0.16.0.1 help sign in
288 lines 10 kB history raw
1[The latest version of this document is on GitHub.](https://github.com/haskell-servant/servant/blob/master/servant-server/CHANGELOG.md)
2[Changelog for `servant` package contains significant entries for all core packages.](https://github.com/haskell-servant/servant/blob/master/servant/CHANGELOG.md)
40.16.2
5------
7* `singleton-bool-0.1.5` (`SBool` is re-exported)
8 - Add `discreteBool :: Dec (a :~: b)` (GHC-7.8+)
9 - Add `Show`, `Eq`, `Ord` `SBool b` instances.
10* dependencies update
120.16.1
13------
15* Use `http-api-data-0.4.1` (a part of its API is re-exported)
16 [#1181](https://github.com/haskell-servant/servant/pull/1181)
180.16
19----
21- Rename `ServantError` to `ClientError`, `ServantErr` to `ServerError`
22 [#1131](https://github.com/haskell-servant/servant/pull/1131)
23- *servant-server* Reorder HTTP failure code priorities
24 [#1103](https://github.com/haskell-servant/servant/pull/1103)
25- *servant-server* Re-organise internal modules
26 [#1139](https://github.com/haskell-servant/servant/pull/1139)
27- Allow `network-3.0`
28 [#1107](https://github.com/haskell-servant/servant/pull/1107)
300.15
31----
33- Streaming refactoring.
34 [#991](https://github.com/haskell-servant/servant/pull/991)
35 [#1076](https://github.com/haskell-servant/servant/pull/1076)
36 [#1077](https://github.com/haskell-servant/servant/pull/1077)
38 The streaming functionality (`Servant.API.Stream`) is refactored to use
39 `servant`'s own `SourceIO` type (see `Servant.Types.SourceT` documentation),
40 which replaces both `StreamGenerator` and `ResultStream` types.
42 New conversion type-classes are `ToSourceIO` and `FromSourceIO`
43 (replacing `ToStreamGenerator` and `BuildFromStream`).
44 There are instances for *conduit*, *pipes* and *machines* in new packages:
45 [servant-conduit](https://hackage.haskell.org/package/servant-conduit)
46 [servant-pipes](https://hackage.haskell.org/package/servant-pipes) and
47 [servant-machines](https://hackage.haskell.org/package/servant-machines)
48 respectively.
50 Writing new framing strategies is simpler. Check existing strategies for examples.
52 This change shouldn't affect you, if you don't use streaming endpoints.
54- Drop support for GHC older than 8.0
55 [#1008](https://github.com/haskell-servant/servant/pull/1008)
56 [#1009](https://github.com/haskell-servant/servant/pull/1009)
58- *servant* NewlineFraming encodes newline after each element (i.e last)
59 [#1079](https://github.com/haskell-servant/servant/pull/1079)
60 [#1011](https://github.com/haskell-servant/servant/issues/1011)
62- *servant* Add `lookupResponseHeader :: ... => Headers headers r -> ResponseHeader h a`
63 [#1064](https://github.com/haskell-servant/servant/pull/1064)
65- *servant-server* Add `MonadMask Handler`
66 [#1068](https://github.com/haskell-servant/servant/pull/1068)
68- *servant* Export `GetHeaders'`
69 [#1052](https://github.com/haskell-servant/servant/pull/1052)
71- *servant* Add `Bitraversable` and other `Bi-` instances for `:<|>`
72 [#1032](https://github.com/haskell-servant/servant/pull/1032)
74- *servant* Add `PutCreated` method type alias
75 [#1024](https://github.com/haskell-servant/servant/pull/1024)
77- *servant* Add `ToSourceIO (NonEmpty a)` instance
78 [#988](https://github.com/haskell-servant/servant/pull/988)
800.14.1
81------
83- Merge in `servant-generic` (by [Patrick Chilton](https://github.com/chpatrick))
84 into `servant` (`Servant.API.Generic`),
85 `servant-client-code` (`Servant.Client.Generic`)
86 and `servant-server` (`Servant.Server.Generic`).
88- *servant-server* Deprecate `Servant.Utils.StaticUtils`, use `Servant.Server.StaticUtils`.
900.14
91----
93- `Stream` takes a status code argument
95 ```diff
96 -Stream method framing ctype a
97 +Stream method status framing ctype a
98 ```
100 ([#966](https://github.com/haskell-servant/servant/pull/966)
101 [#972](https://github.com/haskell-servant/servant/pull/972))
103- `ToStreamGenerator` definition changed, so it's possible to write an instance
104 for conduits.
106 ```diff
107 -class ToStreamGenerator f a where
108 - toStreamGenerator :: f a -> StreamGenerator a
109 +class ToStreamGenerator a b | a -> b where
110 + toStreamGenerator :: a -> StreamGenerator b
111 ```
113 ([#959](https://github.com/haskell-servant/servant/pull/959))
115- Added `NoFraming` streaming strategy
116 ([#959](https://github.com/haskell-servant/servant/pull/959))
118- *servant-server* File serving in polymorphic monad.
119 i.e. Generalised types of `serveDirectoryFileServer` etc functions in
120 `Servant.Utils.StaticFiles`
121 ([#953](https://github.com/haskell-servant/servant/pull/953))
123- *servant-server* `ReqBody` content type check is recoverable.
124 This allows writing APIs like:
126 ```haskell
127 ReqBody '[JSON] Int :> Post '[PlainText] Int
128 :<|> ReqBody '[PlainText] Int :> Post '[PlainText] Int
129 ```
131 which is useful when handlers are subtly different,
132 for example may do less work.
133 ([#937](https://github.com/haskell-servant/servant/pull/937))
1360.13.0.1
137--------
139- Support `base-compat-0.10`
1410.13
142----
144- Streaming endpoint support.
145 ([#836](https://github.com/haskell-servant/servant/pull/836))
146- *servant* Add `Servant.API.Modifiers`
147 ([#873](https://github.com/haskell-servant/servant/pull/873))
1490.12
150----
152### Breaking changes
154* Added `hoistServer` member to the `HasServer` class, which is `HasServer`
155 specific `enter`.
156 ([#804](https://github.com/haskell-servant/servant/pull/804))
1580.11
159----
161### Breaking changes
163* Changed `HasServer` instances for `Header` to throw 400 when parsing fails
164 ([#724](https://github.com/haskell-servant/servant/pull/724))
165* Added `headersD` block to `Delayed`
166 ([#724](https://github.com/haskell-servant/servant/pull/724))
168### Other changes
170* Add `err418`, `err422` error codes
171 ([#739](https://github.com/haskell-servant/servant/pull/739))
1730.10
174----
176### Breaking changes
178* `Handler` is now an abstract datatype. Migration hint: change `throwE` to `throwError`.
179 ([#641](https://github.com/haskell-servant/servant/issues/641))
181* Changed `HasServer` instances for `QueryParam` and `QueryParam` to throw 400
182 when parsing fails
183 ([#649](https://github.com/haskell-servant/servant/pull/649))
185### Other changes
187* Added `paramsD` block to `Delayed`
189* Add `err422` Unprocessable Entity
190 ([#646](https://github.com/haskell-servant/servant/pull/646))
192* Deprecate `serveDirectory` and introduce `serveDirectoryFileServer`,
193 `serveDirectoryWebApp`, `serveDirectoryWebAppLookup`, `serveDirectoryEmbedded`
194 and `serveDirectoryWith` which offer 4 default options and a more flexible
195 one for serving static files.
196 ([#658](https://github.com/haskell-servant/servant/pull/658))
198* `DelayedIO` is an instance of `MonadResource`, allowing safe resource handling.
199 ([#622](https://github.com/haskell-servant/servant/pull/622)
200 , [#674](https://github.com/haskell-servant/servant/pull/674)
201 , [#675](https://github.com/haskell-servant/servant/pull/675))
2030.7.1
204------
206* Remove module `Servant.Server.Internal.Enter` (https://github.com/haskell-servant/servant/pull/478)
207* Support GHC 8.0
2090.7
210---
212* The `Router` type has been changed. Static router tables should now
213 be properly shared between requests, drastically increasing the
214 number of situations where servers will be able to route requests
215 efficiently. Functions `layout` and `layoutWithContext` have been
216 added to visualize the router layout for debugging purposes. Test
217 cases for expected router layouts have been added.
218* If an endpoint is discovered to have a non-matching "accept header",
219 this is now a recoverable rather than a fatal failure, allowing
220 different endpoints for the same route, but with different content
221 types to be specified modularly.
222* Export `throwError` from module `Servant`
223* Add `Handler` type synonym
2250.6.1
226-----
228* If servers use the `BasicAuth` combinator and receive requests with missing or
229 invalid credentials, the resulting error responses (401 and 403) could be
230 overwritten by subsequent alternative routes. Now `BasicAuth` uses `FailFatal`
231 and the error responses can't be overwritten anymore.
2330.6
234---
236* Query parameters that can't be parsed result in a `400` (was `404`).
2380.5
239---
241* Add `Config` machinery (https://github.com/haskell-servant/servant/pull/327).
242 This is a breaking change, as the signatures of both `route`, `serve` and the
243 typeclass `HasServer` now take an additional parameter.
244* Support for the `HttpVersion`, `IsSecure`, `RemoteHost` and `Vault` combinators
245* Drop `EitherT` in favor of `ExceptT`
246* Use `http-api-data` instead of `Servant.Common.Text`
247* Remove matrix params.
248* Remove `RouteMismatch`.
249* Redefined constructors of `RouteResult`.
250* Added `Delayed` and related functions (`addMethodCheck`, `addAcceptCheck`, `addBodyCheck`, `runDelayed`)
251* Added support for Basic Authentication
252* Add generalized authentication support via the `AuthServerData` type family and `AuthHandler` handler
2540.4.1
255-----
256* Bump attoparsec upper bound to < 0.14
257* Bump wai-app-static upper bound to < 3.2
258* Bump either upper bound to < 4.5
2600.4
261---
262* `Delete` now is like `Get`, `Post`, `Put`, and `Patch` and returns a response body
263* Add a `RouteMismatch` constructor for arbitrary HTTP response codes (https://github.com/haskell-servant/servant-server/pull/22)
264* Add support for the `Patch` combinator
265* Support for `Accept`/`Content-type` headers and for the content-type aware combinators in *servant-0.4*
266* Export `toApplication` from `Servant.Server` (https://github.com/haskell-servant/servant-server/pull/29)
267* Support other Monads than just `EitherT (Int, String) IO` (https://github.com/haskell-servant/servant-server/pull/21)
268* Make methods return status code 204 if they return () (https://github.com/haskell-servant/servant-server/issues/28)
269* Add server support for response headers
270* Use `ServantErr` instead of `(Int,String)` in `EitherT` handlers
271* Add `errXXX` functions for HTTP errors with sensible default reason strings
272* Add `enter` function for applying natural transformations to handlers
2740.2.4
275-----
276* Added support for matrix parameters, see e.g. http://www.w3.org/DesignIssues/MatrixURIs.html
277* Add support for serializing based on Accept header
278 (https://github.com/haskell-servant/servant-server/issues/9)
279* Ignore trailing slashes
280 (https://github.com/haskell-servant/servant-server/issues/5)
2830.2.3
284-----
286* Fix consuming request body issue
287 (https://github.com/haskell-servant/servant/issues/3)
288* Make code sample in Servant.Server complete