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- Streaming refactoring.
8 [#991](https://github.com/haskell-servant/servant/pull/991)
9 [#1076](https://github.com/haskell-servant/servant/pull/1076)
10 [#1077](https://github.com/haskell-servant/servant/pull/1077)
12 The streaming functionality (`Servant.API.Stream`) is refactored to use
13 `servant`'s own `SourceIO` type (see `Servant.Types.SourceT` documentation),
14 which replaces both `StreamGenerator` and `ResultStream` types.
16 New conversion type-classes are `ToSourceIO` and `FromSourceIO`
17 (replacing `ToStreamGenerator` and `BuildFromStream`).
18 There are instances for *conduit*, *pipes* and *machines* in new packages:
19 [servant-conduit](https://hackage.haskell.org/package/servant-conduit)
20 [servant-pipes](https://hackage.haskell.org/package/servant-pipes) and
21 [servant-machines](https://hackage.haskell.org/package/servant-machines)
24 Writing new framing strategies is simpler. Check existing strategies for examples.
26 This change shouldn't affect you, if you don't use streaming endpoints.
28- Drop support for GHC older than 8.0
29 [#1008](https://github.com/haskell-servant/servant/pull/1008)
30 [#1009](https://github.com/haskell-servant/servant/pull/1009)
32- *servant* NewlineFraming encodes newline after each element (i.e last)
33 [#1079](https://github.com/haskell-servant/servant/pull/1079)
34 [#1011](https://github.com/haskell-servant/servant/issues/1011)
36- *servant* Add `lookupResponseHeader :: ... => Headers headers r -> ResponseHeader h a`
37 [#1064](https://github.com/haskell-servant/servant/pull/1064)
39- *servant-server* Add `MonadMask Handler`
40 [#1068](https://github.com/haskell-servant/servant/pull/1068)
42- *servant* Export `GetHeaders'`
43 [#1052](https://github.com/haskell-servant/servant/pull/1052)
45- *servant* Add `Bitraversable` and other `Bi-` instances for `:<|>`
46 [#1032](https://github.com/haskell-servant/servant/pull/1032)
48- *servant* Add `PutCreated` method type alias
49 [#1024](https://github.com/haskell-servant/servant/pull/1024)
51- *servant* Add `ToSourceIO (NonEmpty a)` instance
52 [#988](https://github.com/haskell-servant/servant/pull/988)
57- Merge in `servant-generic` (by [Patrick Chilton](https://github.com/chpatrick))
58 into `servant` (`Servant.API.Generic`),
59 `servant-client-code` (`Servant.Client.Generic`)
60 and `servant-server` (`Servant.Server.Generic`).
62- *servant-server* Deprecate `Servant.Utils.StaticUtils`, use `Servant.Server.StaticUtils`.
67- `Stream` takes a status code argument
70 -Stream method framing ctype a
71 +Stream method status framing ctype a
74 ([#966](https://github.com/haskell-servant/servant/pull/966)
75 [#972](https://github.com/haskell-servant/servant/pull/972))
77- `ToStreamGenerator` definition changed, so it's possible to write an instance
81 -class ToStreamGenerator f a where
82 - toStreamGenerator :: f a -> StreamGenerator a
83 +class ToStreamGenerator a b | a -> b where
84 + toStreamGenerator :: a -> StreamGenerator b
87 ([#959](https://github.com/haskell-servant/servant/pull/959))
89- Added `NoFraming` streaming strategy
90 ([#959](https://github.com/haskell-servant/servant/pull/959))
92- *servant-server* File serving in polymorphic monad.
93 i.e. Generalised types of `serveDirectoryFileServer` etc functions in
94 `Servant.Utils.StaticFiles`
95 ([#953](https://github.com/haskell-servant/servant/pull/953))
97- *servant-server* `ReqBody` content type check is recoverable.
98 This allows writing APIs like:
101 ReqBody '[JSON] Int :> Post '[PlainText] Int
102 :<|> ReqBody '[PlainText] Int :> Post '[PlainText] Int
105 which is useful when handlers are subtly different,
106 for example may do less work.
107 ([#937](https://github.com/haskell-servant/servant/pull/937))
113- Support `base-compat-0.10`
118- Streaming endpoint support.
119 ([#836](https://github.com/haskell-servant/servant/pull/836))
120- *servant* Add `Servant.API.Modifiers`
121 ([#873](https://github.com/haskell-servant/servant/pull/873))
128* Added `hoistServer` member to the `HasServer` class, which is `HasServer`
130 ([#804](https://github.com/haskell-servant/servant/pull/804))
137* Changed `HasServer` instances for `Header` to throw 400 when parsing fails
138 ([#724](https://github.com/haskell-servant/servant/pull/724))
139* Added `headersD` block to `Delayed`
140 ([#724](https://github.com/haskell-servant/servant/pull/724))
144* Add `err418`, `err422` error codes
145 ([#739](https://github.com/haskell-servant/servant/pull/739))
152* `Handler` is now an abstract datatype. Migration hint: change `throwE` to `throwError`.
153 ([#641](https://github.com/haskell-servant/servant/issues/641))
155* Changed `HasServer` instances for `QueryParam` and `QueryParam` to throw 400
157 ([#649](https://github.com/haskell-servant/servant/pull/649))
161* Added `paramsD` block to `Delayed`
163* Add `err422` Unprocessable Entity
164 ([#646](https://github.com/haskell-servant/servant/pull/646))
166* Deprecate `serveDirectory` and introduce `serveDirectoryFileServer`,
167 `serveDirectoryWebApp`, `serveDirectoryWebAppLookup`, `serveDirectoryEmbedded`
168 and `serveDirectoryWith` which offer 4 default options and a more flexible
169 one for serving static files.
170 ([#658](https://github.com/haskell-servant/servant/pull/658))
172* `DelayedIO` is an instance of `MonadResource`, allowing safe resource handling.
173 ([#622](https://github.com/haskell-servant/servant/pull/622)
174 , [#674](https://github.com/haskell-servant/servant/pull/674)
175 , [#675](https://github.com/haskell-servant/servant/pull/675))
180* Remove module `Servant.Server.Internal.Enter` (https://github.com/haskell-servant/servant/pull/478)
186* The `Router` type has been changed. Static router tables should now
187 be properly shared between requests, drastically increasing the
188 number of situations where servers will be able to route requests
189 efficiently. Functions `layout` and `layoutWithContext` have been
190 added to visualize the router layout for debugging purposes. Test
191 cases for expected router layouts have been added.
192* If an endpoint is discovered to have a non-matching "accept header",
193 this is now a recoverable rather than a fatal failure, allowing
194 different endpoints for the same route, but with different content
195 types to be specified modularly.
196* Export `throwError` from module `Servant`
197* Add `Handler` type synonym
202* If servers use the `BasicAuth` combinator and receive requests with missing or
203 invalid credentials, the resulting error responses (401 and 403) could be
204 overwritten by subsequent alternative routes. Now `BasicAuth` uses `FailFatal`
205 and the error responses can't be overwritten anymore.
210* Query parameters that can't be parsed result in a `400` (was `404`).
215* Add `Config` machinery (https://github.com/haskell-servant/servant/pull/327).
216 This is a breaking change, as the signatures of both `route`, `serve` and the
217 typeclass `HasServer` now take an additional parameter.
218* Support for the `HttpVersion`, `IsSecure`, `RemoteHost` and `Vault` combinators
219* Drop `EitherT` in favor of `ExceptT`
220* Use `http-api-data` instead of `Servant.Common.Text`
221* Remove matrix params.
222* Remove `RouteMismatch`.
223* Redefined constructors of `RouteResult`.
224* Added `Delayed` and related functions (`addMethodCheck`, `addAcceptCheck`, `addBodyCheck`, `runDelayed`)
225* Added support for Basic Authentication
226* Add generalized authentication support via the `AuthServerData` type family and `AuthHandler` handler
230* Bump attoparsec upper bound to < 0.14
231* Bump wai-app-static upper bound to < 3.2
232* Bump either upper bound to < 4.5
236* `Delete` now is like `Get`, `Post`, `Put`, and `Patch` and returns a response body
237* Add a `RouteMismatch` constructor for arbitrary HTTP response codes (https://github.com/haskell-servant/servant-server/pull/22)
238* Add support for the `Patch` combinator
239* Support for `Accept`/`Content-type` headers and for the content-type aware combinators in *servant-0.4*
240* Export `toApplication` from `Servant.Server` (https://github.com/haskell-servant/servant-server/pull/29)
241* Support other Monads than just `EitherT (Int, String) IO` (https://github.com/haskell-servant/servant-server/pull/21)
242* Make methods return status code 204 if they return () (https://github.com/haskell-servant/servant-server/issues/28)
243* Add server support for response headers
244* Use `ServantErr` instead of `(Int,String)` in `EitherT` handlers
245* Add `errXXX` functions for HTTP errors with sensible default reason strings
246* Add `enter` function for applying natural transformations to handlers
250* Added support for matrix parameters, see e.g. http://www.w3.org/DesignIssues/MatrixURIs.html
251* Add support for serializing based on Accept header
252 (https://github.com/haskell-servant/servant-server/issues/9)
253* Ignore trailing slashes
254 (https://github.com/haskell-servant/servant-server/issues/5)
260* Fix consuming request body issue
261 (https://github.com/haskell-servant/servant/issues/3)
262* 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