Bump version to 0.17

This commit is contained in:
Oleg Grenrus 2020-01-23 12:31:41 +02:00
parent 837243631d
commit 3bf4b100a8
13 changed files with 160 additions and 60 deletions

View file

@ -4,7 +4,7 @@
# #
# For more information, see https://github.com/haskell-CI/haskell-ci # For more information, see https://github.com/haskell-CI/haskell-ci
# #
# version: 0.9.20200110 # version: 0.9.20200121
# #
version: ~> 1.0 version: ~> 1.0
language: c language: c
@ -75,11 +75,6 @@ before_install:
- echo $HCNUMVER - echo $HCNUMVER
- CABAL="$CABAL -vnormal+nowrap" - CABAL="$CABAL -vnormal+nowrap"
- set -o pipefail - set -o pipefail
install:
- ${CABAL} --version
- echo "$(${HC} --version) [$(${HC} --print-project-git-commit-id 2> /dev/null || echo '?')]"
- node --version
- echo $GHCJS
- TEST=--enable-tests - TEST=--enable-tests
- BENCH=--enable-benchmarks - BENCH=--enable-benchmarks
- HEADHACKAGE=false - HEADHACKAGE=false
@ -100,14 +95,11 @@ install:
echo " prefix: $CABALHOME" >> $CABALHOME/config echo " prefix: $CABALHOME" >> $CABALHOME/config
echo "repository hackage.haskell.org" >> $CABALHOME/config echo "repository hackage.haskell.org" >> $CABALHOME/config
echo " url: http://hackage.haskell.org/" >> $CABALHOME/config echo " url: http://hackage.haskell.org/" >> $CABALHOME/config
echo " secure: True" >> $CABALHOME/config install:
echo " key-threshold: 3" >> $CABALHOME/config - ${CABAL} --version
echo " root-keys:" >> $CABALHOME/config - echo "$(${HC} --version) [$(${HC} --print-project-git-commit-id 2> /dev/null || echo '?')]"
echo " fe331502606802feac15e514d9b9ea83fee8b6ffef71335479a2e68d84adc6b0" >> $CABALHOME/config - node --version
echo " 1ea9ba32c526d1cc91ab5e5bd364ec5e9e8cb67179a471872f6e26f0ae773d42" >> $CABALHOME/config - echo $GHCJS
echo " 2c6c3627bd6c982990239487f1abd02e08a02e6cf16edb105a8012d444d870c3" >> $CABALHOME/config
echo " 0a5c7ea47cd1b15f01f5f51a33adda7e655bc0f0b0615baa8e271f4c3351e21d" >> $CABALHOME/config
echo " 51f0161b906011b52c6613376b1ae937670da69322113a246a09f807c62f6921" >> $CABALHOME/config
- GHCJOBS=-j2 - GHCJOBS=-j2
- | - |
echo "program-default-options" >> $CABALHOME/config echo "program-default-options" >> $CABALHOME/config
@ -157,6 +149,9 @@ install:
echo "allow-newer: io-streams-1.5.1.0:network" >> cabal.project echo "allow-newer: io-streams-1.5.1.0:network" >> cabal.project
echo "allow-newer: io-streams-1.5.1.0:primitive" >> cabal.project echo "allow-newer: io-streams-1.5.1.0:primitive" >> cabal.project
echo "allow-newer: openssl-streams-1.2.2.0:network" >> cabal.project echo "allow-newer: openssl-streams-1.2.2.0:network" >> cabal.project
echo "allow-newer: servant" >> cabal.project
echo "allow-newer: servant-server" >> cabal.project
echo "allow-newer: servant-client" >> cabal.project
echo "optimization: False" >> cabal.project echo "optimization: False" >> cabal.project
- "for pkg in $($HCPKG list --simple-output); do echo $pkg | sed 's/-[^-]*$//' | (grep -vE -- '^(cookbook-basic-auth|cookbook-basic-streaming|cookbook-curl-mock|cookbook-db-postgres-pool|cookbook-file-upload|cookbook-generic|cookbook-pagination|cookbook-structuring-apis|cookbook-testing|cookbook-using-custom-monad|cookbook-using-free-client|servant|servant-client|servant-client-core|servant-conduit|servant-docs|servant-foreign|servant-http-streams|servant-machines|servant-pipes|servant-server|tutorial)$' || true) | sed 's/^/constraints: /' | sed 's/$/ installed/' >> cabal.project.local; done" - "for pkg in $($HCPKG list --simple-output); do echo $pkg | sed 's/-[^-]*$//' | (grep -vE -- '^(cookbook-basic-auth|cookbook-basic-streaming|cookbook-curl-mock|cookbook-db-postgres-pool|cookbook-file-upload|cookbook-generic|cookbook-pagination|cookbook-structuring-apis|cookbook-testing|cookbook-using-custom-monad|cookbook-using-free-client|servant|servant-client|servant-client-core|servant-conduit|servant-docs|servant-foreign|servant-http-streams|servant-machines|servant-pipes|servant-server|tutorial)$' || true) | sed 's/^/constraints: /' | sed 's/$/ installed/' >> cabal.project.local; done"
- cat cabal.project || true - cat cabal.project || true
@ -259,6 +254,9 @@ script:
echo "allow-newer: io-streams-1.5.1.0:network" >> cabal.project echo "allow-newer: io-streams-1.5.1.0:network" >> cabal.project
echo "allow-newer: io-streams-1.5.1.0:primitive" >> cabal.project echo "allow-newer: io-streams-1.5.1.0:primitive" >> cabal.project
echo "allow-newer: openssl-streams-1.2.2.0:network" >> cabal.project echo "allow-newer: openssl-streams-1.2.2.0:network" >> cabal.project
echo "allow-newer: servant" >> cabal.project
echo "allow-newer: servant-server" >> cabal.project
echo "allow-newer: servant-client" >> cabal.project
echo "optimization: False" >> cabal.project echo "optimization: False" >> cabal.project
- "for pkg in $($HCPKG list --simple-output); do echo $pkg | sed 's/-[^-]*$//' | (grep -vE -- '^(cookbook-basic-auth|cookbook-basic-streaming|cookbook-curl-mock|cookbook-db-postgres-pool|cookbook-file-upload|cookbook-generic|cookbook-pagination|cookbook-structuring-apis|cookbook-testing|cookbook-using-custom-monad|cookbook-using-free-client|servant|servant-client|servant-client-core|servant-conduit|servant-docs|servant-foreign|servant-http-streams|servant-machines|servant-pipes|servant-server|tutorial)$' || true) | sed 's/^/constraints: /' | sed 's/$/ installed/' >> cabal.project.local; done" - "for pkg in $($HCPKG list --simple-output); do echo $pkg | sed 's/-[^-]*$//' | (grep -vE -- '^(cookbook-basic-auth|cookbook-basic-streaming|cookbook-curl-mock|cookbook-db-postgres-pool|cookbook-file-upload|cookbook-generic|cookbook-pagination|cookbook-structuring-apis|cookbook-testing|cookbook-using-custom-monad|cookbook-using-free-client|servant|servant-client|servant-client-core|servant-conduit|servant-docs|servant-foreign|servant-http-streams|servant-machines|servant-pipes|servant-server|tutorial)$' || true) | sed 's/^/constraints: /' | sed 's/$/ installed/' >> cabal.project.local; done"
- cat cabal.project || true - cat cabal.project || true
@ -318,5 +316,5 @@ script:
- if ! $GHCJS ; then ${CABAL} v2-haddock $WITHCOMPILER --with-haddock $HADDOCK ${TEST} ${BENCH} all ; fi - if ! $GHCJS ; then ${CABAL} v2-haddock $WITHCOMPILER --with-haddock $HADDOCK ${TEST} ${BENCH} all ; fi
- echo -en 'travis_fold:end:haddock\\r' - echo -en 'travis_fold:end:haddock\\r'
# REGENDATA ("0.9.20200110",["--config=cabal.haskell-ci","--output=.travis.yml","cabal.project"]) # REGENDATA ("0.9.20200121",["--config=cabal.haskell-ci","--output=.travis.yml","cabal.project"])
# EOF # EOF

View file

@ -65,3 +65,8 @@ constraints: base-compat ^>=0.11
-- needed for doctests -- needed for doctests
write-ghc-environment-files: always write-ghc-environment-files: always
-- servant-0.17
allow-newer: servant
allow-newer: servant-server
allow-newer: servant-client

View file

@ -1,6 +1,6 @@
cabal-version: >=1.10 cabal-version: >=1.10
name: servant-client-core name: servant-client-core
version: 0.16 version: 0.17
synopsis: Core functionality and class for client function generation for servant APIs synopsis: Core functionality and class for client function generation for servant APIs
category: Servant, Web category: Servant, Web
@ -69,7 +69,7 @@ library
-- Servant dependencies -- Servant dependencies
build-depends: build-depends:
servant >= 0.16 && <0.17 servant >= 0.17 && <0.18
-- Other dependencies: Lower bound around what is in the latest Stackage LTS. -- Other dependencies: Lower bound around what is in the latest Stackage LTS.
-- Here can be exceptions if we really need features from the newer versions. -- Here can be exceptions if we really need features from the newer versions.

View file

@ -1,6 +1,6 @@
cabal-version: >=1.10 cabal-version: >=1.10
name: servant-client name: servant-client
version: 0.16.0.1 version: 0.17
synopsis: Automatic derivation of querying functions for servant synopsis: Automatic derivation of querying functions for servant
category: Servant, Web category: Servant, Web
@ -62,8 +62,8 @@ library
-- Servant dependencies. -- Servant dependencies.
-- Strict dependency on `servant-client-core` as we re-export things. -- Strict dependency on `servant-client-core` as we re-export things.
build-depends: build-depends:
servant == 0.16.* servant == 0.17.*
, servant-client-core >= 0.16 && <0.16.1 , servant-client-core >= 0.17 && <0.17.1
-- Other dependencies: Lower bound around what is in the latest Stackage LTS. -- Other dependencies: Lower bound around what is in the latest Stackage LTS.
-- Here can be exceptions if we really need features from the newer versions. -- Here can be exceptions if we really need features from the newer versions.
@ -127,8 +127,8 @@ test-suite spec
, HUnit >= 1.6.0.0 && < 1.7 , HUnit >= 1.6.0.0 && < 1.7
, network >= 2.8.0.0 && < 3.2 , network >= 2.8.0.0 && < 3.2
, QuickCheck >= 2.12.6.1 && < 2.14 , QuickCheck >= 2.12.6.1 && < 2.14
, servant == 0.16.* , servant == 0.17.*
, servant-server == 0.16.* , servant-server == 0.17.*
, tdigest >= 0.2 && < 0.3 , tdigest >= 0.2 && < 0.3
build-tool-depends: build-tool-depends:

View file

@ -1,7 +1,7 @@
cabal-version: >=1.10 cabal-version: >=1.10
name: servant-conduit name: servant-conduit
version: 0.15 version: 0.15
x-revision: 1 x-revision: 3
synopsis: Servant Stream support for conduit. synopsis: Servant Stream support for conduit.
category: Servant, Web, Enumerator category: Servant, Web, Enumerator
@ -39,7 +39,7 @@ library
, conduit >=1.3.1 && <1.4 , conduit >=1.3.1 && <1.4
, mtl >=2.2.2 && <2.3 , mtl >=2.2.2 && <2.3
, resourcet >=1.2.2 && <1.3 , resourcet >=1.2.2 && <1.3
, servant >=0.15 && <0.17 , servant >=0.15 && <0.18
, unliftio-core >=0.1.2.0 && <0.2 , unliftio-core >=0.1.2.0 && <0.2
hs-source-dirs: src hs-source-dirs: src
default-language: Haskell2010 default-language: Haskell2010
@ -60,8 +60,8 @@ test-suite example
, resourcet , resourcet
, servant , servant
, servant-conduit , servant-conduit
, servant-server >=0.15 && <0.17 , servant-server >=0.15 && <0.18
, servant-client >=0.15 && <0.17 , servant-client >=0.15 && <0.18
, wai >=3.2.1.2 && <3.3 , wai >=3.2.1.2 && <3.3
, warp >=3.2.25 && <3.4 , warp >=3.2.25 && <3.4
, http-client , http-client

View file

@ -1,6 +1,6 @@
cabal-version: >=1.10 cabal-version: >=1.10
name: servant-docs name: servant-docs
version: 0.11.4 version: 0.11.5
synopsis: generate API docs for your servant webservice synopsis: generate API docs for your servant webservice
category: Servant, Web category: Servant, Web
@ -52,7 +52,7 @@ library
-- Servant dependencies -- Servant dependencies
build-depends: build-depends:
servant >= 0.15 && <0.17 servant >= 0.17 && <0.18
-- Other dependencies: Lower bound around what is in the latest Stackage LTS. -- Other dependencies: Lower bound around what is in the latest Stackage LTS.
-- Here can be exceptions if we really need features from the newer versions. -- Here can be exceptions if we really need features from the newer versions.

View file

@ -1,7 +1,6 @@
cabal-version: >=1.10 cabal-version: >=1.10
name: servant-foreign name: servant-foreign
version: 0.15 version: 0.15.1
x-revision: 1
synopsis: Helpers for generating clients for servant APIs in any programming language synopsis: Helpers for generating clients for servant APIs in any programming language
category: Servant, Web category: Servant, Web
@ -52,7 +51,7 @@ library
-- Servant dependencies -- Servant dependencies
build-depends: build-depends:
servant >=0.15 && <0.17 servant >=0.17 && <0.18
-- Other dependencies: Lower bound around what is in the latest Stackage LTS. -- Other dependencies: Lower bound around what is in the latest Stackage LTS.
-- Here can be exceptions if we really need features from the newer versions. -- Here can be exceptions if we really need features from the newer versions.

View file

@ -1,6 +1,6 @@
cabal-version: >=1.10 cabal-version: >=1.10
name: servant-http-streams name: servant-http-streams
version: 0.16 version: 0.17
synopsis: Automatic derivation of querying functions for servant synopsis: Automatic derivation of querying functions for servant
category: Servant, Web category: Servant, Web
@ -59,8 +59,8 @@ library
-- Servant dependencies. -- Servant dependencies.
-- Strict dependency on `servant-client-core` as we re-export things. -- Strict dependency on `servant-client-core` as we re-export things.
build-depends: build-depends:
servant == 0.16.* servant == 0.17.*
, servant-client-core >= 0.16 && <0.16.1 , servant-client-core >= 0.17 && <0.17.1
-- Other dependencies: Lower bound around what is in the latest Stackage LTS. -- Other dependencies: Lower bound around what is in the latest Stackage LTS.
-- Here can be exceptions if we really need features from the newer versions. -- Here can be exceptions if we really need features from the newer versions.
@ -121,8 +121,8 @@ test-suite spec
, HUnit >= 1.6.0.0 && < 1.7 , HUnit >= 1.6.0.0 && < 1.7
, network >= 2.8.0.0 && < 3.2 , network >= 2.8.0.0 && < 3.2
, QuickCheck >= 2.12.6.1 && < 2.14 , QuickCheck >= 2.12.6.1 && < 2.14
, servant == 0.16.* , servant == 0.17.*
, servant-server == 0.16.* , servant-server == 0.17.*
, tdigest >= 0.2 && < 0.3 , tdigest >= 0.2 && < 0.3
build-tool-depends: build-tool-depends:

View file

@ -1,7 +1,7 @@
cabal-version: >=1.10 cabal-version: >=1.10
name: servant-machines name: servant-machines
version: 0.15 version: 0.15
x-revision: 1 x-revision: 4
synopsis: Servant Stream support for machines synopsis: Servant Stream support for machines
category: Servant, Web, Enumerator category: Servant, Web, Enumerator
@ -38,7 +38,7 @@ library
, bytestring >=0.10.8.1 && <0.11 , bytestring >=0.10.8.1 && <0.11
, machines >=0.6.4 && <0.8 , machines >=0.6.4 && <0.8
, mtl >=2.2.2 && <2.3 , mtl >=2.2.2 && <2.3
, servant >=0.15 && <0.17 , servant >=0.15 && <0.18
hs-source-dirs: src hs-source-dirs: src
default-language: Haskell2010 default-language: Haskell2010
ghc-options: -Wall ghc-options: -Wall
@ -57,8 +57,8 @@ test-suite example
, servant , servant
, machines , machines
, servant-machines , servant-machines
, servant-server >=0.15 && <0.17 , servant-server >=0.15 && <0.18
, servant-client >=0.15 && <0.17 , servant-client >=0.15 && <0.18
, wai >=3.2.1.2 && <3.3 , wai >=3.2.1.2 && <3.3
, warp >=3.2.25 && <3.4 , warp >=3.2.25 && <3.4
, http-client , http-client

View file

@ -1,6 +1,7 @@
cabal-version: >=1.10 cabal-version: >=1.10
name: servant-pipes name: servant-pipes
version: 0.15.1 version: 0.15.1
x-revision: 1
synopsis: Servant Stream support for pipes synopsis: Servant Stream support for pipes
category: Servant, Web, Pipes category: Servant, Web, Pipes
@ -39,7 +40,7 @@ library
, pipes-safe >=2.3.1 && <2.4 , pipes-safe >=2.3.1 && <2.4
, mtl >=2.2.2 && <2.3 , mtl >=2.2.2 && <2.3
, monad-control >=1.0.2.3 && <1.1 , monad-control >=1.0.2.3 && <1.1
, servant >=0.15 && <0.17 , servant >=0.15 && <0.18
hs-source-dirs: src hs-source-dirs: src
default-language: Haskell2010 default-language: Haskell2010
ghc-options: -Wall ghc-options: -Wall
@ -60,8 +61,8 @@ test-suite example
, pipes-safe , pipes-safe
, servant-pipes , servant-pipes
, pipes-bytestring >=2.1.6 && <2.2 , pipes-bytestring >=2.1.6 && <2.2
, servant-server >=0.15 && <0.17 , servant-server >=0.15 && <0.18
, servant-client >=0.15 && <0.17 , servant-client >=0.15 && <0.18
, wai >=3.2.1.2 && <3.3 , wai >=3.2.1.2 && <3.3
, warp >=3.2.25 && <3.4 , warp >=3.2.25 && <3.4
, http-client , http-client

View file

@ -1,6 +1,6 @@
cabal-version: >=1.10 cabal-version: >=1.10
name: servant-server name: servant-server
version: 0.16 version: 0.17
synopsis: A family of combinators for defining webservices APIs and serving them synopsis: A family of combinators for defining webservices APIs and serving them
category: Servant, Web category: Servant, Web

View file

@ -1,5 +1,102 @@
[The latest version of this document is on GitHub.](https://github.com/haskell-servant/servant/blob/master/servant/CHANGELOG.md) [The latest version of this document is on GitHub.](https://github.com/haskell-servant/servant/blob/master/servant/CHANGELOG.md)
0.17
----
### Significant changes
- Add NoContentVerb [#1028](https://github.com/haskell-servant/servant/issues/1028) [#1219](https://github.com/haskell-servant/servant/pull/1219) [#1228](https://github.com/haskell-servant/servant/pull/1228)
The `NoContent` API endpoints should now use `NoContentVerb` combinator.
The API type changes are usually of the kind
```diff
- :<|> PostNoContent '[JSON] NoContent
+ :<|> PostNoContent
```
i.e. one doesn't need to specify the content-type anymore. There is no content.
- `Capture` can be `Lenient` [#1155](https://github.com/haskell-servant/servant/issues/1155) [#1156](https://github.com/haskell-servant/servant/pull/1156)
You can specify a lenient capture as
```haskell
:<|> "capture-lenient" :> Capture' '[Lenient] "foo" Int :> GET
```
which will make the capture always succeed. Handlers will be of the
type `Either String CapturedType`, where `Left err` represents
the possible parse failure.
- *servant-client* Added a function to create Client.Request in ClientEnv [#1213](https://github.com/haskell-servant/servant/pull/1213) [#1255](https://github.com/haskell-servant/servant/pull/1255)
The new member `makeClientRequest` of `ClientEnv` is used to create
`http-client` `Request` from `servant-client-core` `Request`.
This functionality can be used for example to set
dynamic timeouts for each request.
- *servant-server* use queryString to parse QueryParam, QueryParams and QueryFlag [#1249](https://github.com/haskell-servant/servant/pull/1249) [#1262](https://github.com/haskell-servant/servant/pull/1262)
Some APIs need query parameters rewriting, e.g. in order to support
for multiple casing (camel, snake, etc) or something to that effect.
This could be easily achieved by using WAI Middleware and modyfing
request's `Query`. But QueryParam, QueryParams and QueryFlag use
`rawQueryString`. By using `queryString` rather then `rawQueryString`
we can enable such rewritings.
- *servant* *servant-server* Make packages `build-type: Simple` [#1263](https://github.com/haskell-servant/servant/pull/1263)
We used `build-type: Custom`, but it's problematic e.g.
for cross-compiling. The benefit is small, as the doctests
can be run other ways too (though not so conviniently).
### Other changes
- *servant-client* *servant-client-core* *servant-http-streams* Fix Verb with headers checking content type differently [#1200](https://github.com/haskell-servant/servant/issues/1200) [#1204](https://github.com/haskell-servant/servant/pull/1204)
For `Verb`s with response `Headers`, the implementation didn't check
for the content-type of the response. Now it does.
- *servant-docs* Merge documentation from duplicate routes [#1240](https://github.com/haskell-servant/servant/issues/1240) [#1241](https://github.com/haskell-servant/servant/pull/1241)
Servant supports defining the same route multiple times with different
content-types and result-types, but servant-docs was only documenting
the first of copy of such duplicated routes. It now combines the
documentation from all the copies.
Unfortunately, it is not yet possible for the documentation to specify
multiple status codes.
- Add sponsorship button [#1190](https://github.com/haskell-servant/servant/pull/1190)
[Well-Typed](https://www.well-typed.com/) is a consultancy which could help you with `servant` issues
(See consultancies section on https://www.servant.dev/).
- Try changelog-d for changelog management [#1230](https://github.com/haskell-servant/servant/pull/1230)
Check the [CONTRIBUTING.md](https://github.com/haskell-servant/servant/blob/master/CONTRIBUTING.md) for details
- CI and testing tweaks. [#1154](https://github.com/haskell-servant/servant/pull/1154) [#1157](https://github.com/haskell-servant/servant/pull/1157) [#1182](https://github.com/haskell-servant/servant/pull/1182) [#1214](https://github.com/haskell-servant/servant/pull/1214) [#1229](https://github.com/haskell-servant/servant/pull/1229) [#1233](https://github.com/haskell-servant/servant/pull/1233) [#1242](https://github.com/haskell-servant/servant/pull/1242) [#1247](https://github.com/haskell-servant/servant/pull/1247) [#1250](https://github.com/haskell-servant/servant/pull/1250) [#1258](https://github.com/haskell-servant/servant/pull/1258)
We are experiencing some bitrotting of cookbook recipe dependencies,
therefore some of them aren't build as part of our CI anymore.
- New cookbook recipes [#1088](https://github.com/haskell-servant/servant/pull/1088) [#1171](https://github.com/haskell-servant/servant/pull/1171) [#1198](https://github.com/haskell-servant/servant/pull/1198)
- [OIDC Recipe](#TODO)
- [MySQL Recipe](#TODO)
- *servant-jsaddle* Progress on servant-jsaddle [#1216](https://github.com/haskell-servant/servant/pull/1216)
- *servant-docs* Prevent race-conditions in testing [#1194](https://github.com/haskell-servant/servant/pull/1194)
- *servant-client* *servant-http-streams* `HasClient` instance for `Stream` with `Headers` [#1170](https://github.com/haskell-servant/servant/issues/1170) [#1197](https://github.com/haskell-servant/servant/pull/1197)
- *servant* Remove unused extensions from cabal file [#1201](https://github.com/haskell-servant/servant/pull/1201)
- *servant-client* Redact the authorization header in Show and exceptions [#1238](https://github.com/haskell-servant/servant/pull/1238)
- Dependency upgrades [#1173](https://github.com/haskell-servant/servant/pull/1173) [#1181](https://github.com/haskell-servant/servant/pull/1181) [#1183](https://github.com/haskell-servant/servant/pull/1183) [#1188](https://github.com/haskell-servant/servant/pull/1188) [#1224](https://github.com/haskell-servant/servant/pull/1224) [#1245](https://github.com/haskell-servant/servant/pull/1245) [#1257](https://github.com/haskell-servant/servant/pull/1257)
- Documentation updates [#1162](https://github.com/haskell-servant/servant/pull/1162) [#1174](https://github.com/haskell-servant/servant/pull/1174) [#1175](https://github.com/haskell-servant/servant/pull/1175) [#1234](https://github.com/haskell-servant/servant/pull/1234) [#1244](https://github.com/haskell-servant/servant/pull/1244) [#1247](https://github.com/haskell-servant/servant/pull/1247)
0.16.2 0.16.2
------ ------

View file

@ -1,6 +1,6 @@
cabal-version: >=1.10 cabal-version: >=1.10
name: servant name: servant
version: 0.16 version: 0.17
synopsis: A family of combinators for defining webservices APIs synopsis: A family of combinators for defining webservices APIs
category: Servant, Web category: Servant, Web