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)
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.
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)
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)
28 [#1107](https://github.com/haskell-servant/servant/pull/1107)
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)
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)
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`.
93- `Stream` takes a status code argument
96 -Stream method framing ctype a
97 +Stream method status framing ctype a
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
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
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:
127 ReqBody '[JSON] Int :> Post '[PlainText] Int
128 :<|> ReqBody '[PlainText] Int :> Post '[PlainText] Int
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))
139- Support `base-compat-0.10`
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))
154* Added `hoistServer` member to the `HasServer` class, which is `HasServer`
156 ([#804](https://github.com/haskell-servant/servant/pull/804))
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))
170* Add `err418`, `err422` error codes
171 ([#739](https://github.com/haskell-servant/servant/pull/739))
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
183 ([#649](https://github.com/haskell-servant/servant/pull/649))
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))
206* Remove module `Servant.Server.Internal.Enter` (https://github.com/haskell-servant/servant/pull/478)
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
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.
236* Query parameters that can't be parsed result in a `400` (was `404`).
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
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
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
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)
286* Fix consuming request body issue
287 (https://github.com/haskell-servant/servant/issues/3)
288* Make code sample in Servant.Server complete
keysesc to close
- j k
- move down, up
- enter
- open
- esc
- back, or up a level
- 1 2 3 4
- readme, files, commits, refs
- /
- filter
- y
- copy the clone command
- c
- compare the chosen commit with another (or shift-click both)
- ?
- show or hide this list