File ghc-servant.changes of Package ghc-servant
-------------------------------------------------------------------
Fri Jul 18 14:39:28 UTC 2025 - Peter Simons <psimons@suse.com>
- Update servant to version 0.20.3.0 revision 2.
Upstream has revised the Cabal build instructions on Hackage.
-------------------------------------------------------------------
Wed Jun 4 10:14:21 UTC 2025 - Peter Simons <psimons@suse.com>
- Update servant to version 0.20.3.0.
0.20.3.0
----
### Significant changes
- Remove -XStrictData from servant{,-server}'s cabal files [#1780](https://github.com/haskell-servant/servant/issues/1780) [#1781](https://github.com/haskell-servant/servant/pull/1781)
The addition of -XStrictData to servant.cabal and servant-server.cabal reduced the laziness
of routing, which would trigger unimplemented endpoints using `error` or `undefined`,
despite the fact that these endpoints themselves were not queried.
### Other changes
- Server-sent events (SSE) for client-side [#1811](https://github.com/haskell-servant/servant/issues/1811)
Implement Server-sent events (SSE) for the Servant client using a new
combinator "ServerSentEvents". The raw event messages, accumulated events and
JSON-processed events can be exposed.
- Integrate MultiVerb [#1766](https://github.com/haskell-servant/servant/pull/1766) [#1804](https://github.com/haskell-servant/servant/pull/1804)
Expose MultiVerb, a more ergonomic way of defining endpoints that return
many kinds of responses. Read the cookbook https://docs.servant.dev/en/master/cookbook/multiverb/MultiVerb.html
- Exported addQueryParam [#1232](https://github.com/haskell-servant/servant/issues/1232) [#1785](https://github.com/haskell-servant/servant/pull/1785)
`addQueryParams` is required to define custom `HasLink` instances which actually manipulate the
generated query params. This function was not exported earlier and now it is.
- Add Host API combinator [#1800](https://github.com/haskell-servant/servant/pull/1800)
Adding a Host combinator allows servant users to select APIs according
to the Host header provided by clients.
- Use newtype deriving for ToHttpApiData in the type Range [#1813](https://github.com/haskell-servant/servant/pull/1813)
- Add public re-export of renderCurlBasePath lens [#1706](https://github.com/haskell-servant/servant/pull/1706)
- Remove GHC <= 8.10.7 from the support window [#1778](https://github.com/haskell-servant/servant/pull/1778)
- Add Servant.API.Range type [#1805](https://github.com/haskell-servant/servant/pull/1805)
- Add missing HasLink instance for DeepQuery [#1784](https://github.com/haskell-servant/servant/issues/1784) [#1814](https://github.com/haskell-servant/servant/pull/1814)
-------------------------------------------------------------------
Wed Mar 26 15:12:39 UTC 2025 - Peter Simons <psimons@suse.com>
- Update servant to version 0.20.2 revision 1.
Upstream has revised the Cabal build instructions on Hackage.
-------------------------------------------------------------------
Fri Aug 30 02:25:17 UTC 2024 - Peter Simons <psimons@suse.com>
- Update servant to version 0.20.2.
0.20.2
----
- Full query string helpers [#1604](https://github.com/haskell-servant/servant/pull/1604)
This PR introduces `DeepQuery`, a route combinator that implements a pattern commonly known as deep objects.
It builds upon the convention of using `[]` for a list of parameters:
`books?filter[search]=value&filter[author][name]=value`.
The corresponding type would be `DeepQuery "filter" BookQuery :> Get '[JSON] [Book]`.
- Add IsIn instance for NamedRoutes [#1707](https://github.com/haskell-servant/servant/pull/1707)
- Renamed `AtLeastOneFragment` type class to `AtMostOneFragment` [#1727](https://github.com/haskell-servant/servant/pull/1727)
The previously named `AtLeastOneFragment` type class defined in the
`Servant.API.TypeLevel` module has been renamed to `AtMostOneFragment`,
since the previous name was misleading.
- Use `Header'` in response headers. [#1697](https://github.com/haskell-servant/servant/pull/1697)
Use `Header'` instead of `Header` in response, so it's possible to provide
`Description`, for example:
```
type PaginationTotalCountHeader =
Header'
'[ Description "Indicates to the client total count of items in collection"
, Optional
, Strict
]
"Total-Count"
Int
```
Note: if you want to add header with description you should use `addHeader'`
or `noHeader'` which accepts `Header'` with all modifiers.
-------------------------------------------------------------------
Mon Aug 12 07:27:41 UTC 2024 - Peter Simons <psimons@suse.com>
- Update servant to version 0.20.1 revision 5.
Upstream has revised the Cabal build instructions on Hackage.
-------------------------------------------------------------------
Fri May 17 21:02:02 UTC 2024 - Peter Simons <psimons@suse.com>
- Update servant to version 0.20.1 revision 4.
Upstream has revised the Cabal build instructions on Hackage.
-------------------------------------------------------------------
Mon Nov 27 21:41:34 UTC 2023 - Peter Simons <psimons@suse.com>
- Update servant to version 0.20.1 revision 2.
Upstream has revised the Cabal build instructions on Hackage.
-------------------------------------------------------------------
Mon Oct 2 07:39:09 UTC 2023 - Peter Simons <psimons@suse.com>
- Update servant to version 0.20.1.
0.20.1
----
- Support aeson-2.2 [#1695](https://github.com/haskell-servant/servant/pull/1695)
0.20
----
- Headers support in UVerb responses [#1570](https://github.com/haskell-servant/servant/issues/1570) [#1571](https://github.com/haskell-servant/servant/pull/1571)
- Generalize type of `Servant.Types.SourceT.source` to any foldable [#1593](https://github.com/haskell-servant/servant/pull/1593)
- Make `Mime(Un)Render PlainText String` instances encode/decode UTF-8 [#1645](https://github.com/haskell-servant/servant/issues/1645)
- Add HasStatus instance for Headers (that defers StatusOf to underlying value) [#1649](https://github.com/haskell-servant/servant/pull/1649)
- Make fromSourceIO run in IO [#1661](https://github.com/haskell-servant/servant/pull/1661)
Some streaming abstractions, like io-streams, require stateful
initialization. Since all actual call sites of `fromSourceIO`
are in a context where `IO` actions can be executed, these
streaming sources can be accomodated by having letting
`fromSourceIO` run in `IO`.
To migrate your existing `FromSourceIO` instance, simply put
a `pure`/`return` in front of it.
- Fix the handling of multiple headers with the same name. [#1666](https://github.com/haskell-servant/servant/pull/1666)
-------------------------------------------------------------------
Fri Jul 7 09:47:33 UTC 2023 - Peter Simons <psimons@suse.com>
- Update servant to version 0.19.1 revision 2.
Upstream has revised the Cabal build instructions on Hackage.
-------------------------------------------------------------------
Thu Mar 30 17:08:12 UTC 2023 - Peter Simons <psimons@suse.com>
- Updated spec file to conform with ghc-rpm-macros-2.5.2.
-------------------------------------------------------------------
Mon Mar 13 19:50:16 UTC 2023 - Peter Simons <psimons@suse.com>
- Update servant to version 0.19.1 revision 1.
Upstream has revised the Cabal build instructions on Hackage.
-------------------------------------------------------------------
Thu Oct 27 22:28:47 UTC 2022 - Peter Simons <psimons@suse.com>
- Update servant to version 0.19.1.
Upstream has edited the change log file since the last release in
a non-trivial way, i.e. they did more than just add a new entry
at the top. You can review the file at:
http://hackage.haskell.org/package/servant-0.19.1/src/CHANGELOG.md
-------------------------------------------------------------------
Mon Mar 21 14:55:15 UTC 2022 - Peter Simons <psimons@suse.com>
- Update servant to version 0.19 revision 4.
Upstream has revised the Cabal build instructions on Hackage.
-------------------------------------------------------------------
Wed Feb 23 10:01:26 UTC 2022 - Peter Simons <psimons@suse.com>
- Update servant to version 0.19 revision 1.
Upstream has revised the Cabal build instructions on Hackage.
-------------------------------------------------------------------
Wed Feb 2 13:15:43 UTC 2022 - Peter Simons <psimons@suse.com>
- Update servant to version 0.19.
Package versions follow the [Package Versioning Policy](https://pvp.haskell.org/): in A.B.C, bumps to either A or B represent major versions.
0.19
----
### Significant changes
- Drop support for GHC < 8.6.
- Support GHC 9.0 (GHC 9.2 should work as well, but isn't fully tested yet).
- Support Aeson 2 ([#1475](https://github.com/haskell-servant/servant/pull/1475)),
which fixes a [DOS vulnerability](https://github.com/haskell/aeson/issues/864)
related to hash collisions.
- Add `NamedRoutes` combinator, making support for records first-class in Servant
([#1388](https://github.com/haskell-servant/servant/pull/1388)).
Users can now directly mark part as an API as defined by a record, instead of
using `(:<|>)` to combine routes. Concretely, the anonymous:
```haskell
type API =
"version" :> Get '[JSON] String :<|>
"products" :> Get '[JSON] [Product]
```
can be replaced with the explicitly-named:
```haskell
type API = NamedRoutes NamedAPI
data NamedAPI mode = NamedAPI
{ version :: mode :- "version" :> Get '[JSON] String
, products :: mode :- "products" :> Get '[JSON] [Product]
}
```
`NamedRoutes` builds upon `servant-generic`, but improves usability by freeing
users from the need to perform `toServant` / `fromServant` conversions
manually. Serving `NamedRoutes NamedAPI` is now done directly by providing a
record of handlers, and servant generates clients directly as records as well.
In particular, it makes it much more practical to work with nested hierarchies
of named routes.
Two convenience functions, `(//)` and `(/:)`, have been added to make the
usage of named route hierarchies more pleasant:
```haskell
rootClient :: RootApi (AsClientT ClientM)
rootClient = client (Proxy @API)
hello :: String -> ClientM String
hello name = rootClient // hello /: name
endpointClient :: ClientM Person
endpointClient = client // subApi /: "foobar123" // endpoint
type Api = NamedRoutes RootApi
data RootApi mode = RootApi
{ subApi :: mode :- Capture "token" String :> NamedRoutes SubApi
, hello :: mode :- Capture "name" String :> Get '[JSON] String
, …
} deriving Generic
data SubApi mode = SubApi
{ endpoint :: mode :- Get '[JSON] Person
, …
} deriving Generic
```
- Add custom type errors for partially applied combinators
([#1289](https://github.com/haskell-servant/servant/pull/1289),
[#1486](https://github.com/haskell-servant/servant/pull/1486)).
For example, forgetting to document the expected type for a query parameter,
as in:
``` haskell
type API = QueryParam "param" :> Get '[JSON] NoContent
```
will raise to the following error when trying to serve the API:
```
• There is no instance for HasServer (QueryParam'
'[Optional, Strict] "param" :> ...)
QueryParam' '[Optional, Strict] "1" expects 1 more arguments
```
As a consequence of this change, unsaturated types are now forbidden before `(:>)`.
- Add a `HeadNoContent` verb ([#1502](https://github.com/haskell-servant/servant/pull/1502)).
- *servant-client* / *servant-client-core* / *servant-http-streams*:
Fix erroneous behavior, where only 2XX status codes would be considered
successful, irrelevant of the status parameter specified by the verb
combinator. ([#1469](https://github.com/haskell-servant/servant/pull/1469))
- *servant-client* / *servant-client-core*: Fix `Show` instance for
`Servant.Client.Core.Request`.
- *servant-client* / *servant-client-core*: Allow passing arbitrary binary data
in Query parameters.
([#1432](https://github.com/haskell-servant/servant/pull/1432)).
- *servant-docs*: Generate sample cURL requests
([#1401](https://github.com/haskell-servant/servant/pull/1401/files)).
Breaking change: requires sample header values to be supplied with `headers`.
### Other changes
- Various bit rotten cookbooks have been updated and re-introduced on
[docs.servant.dev](https://docs.servant.dev).
- Various version bumps.
-------------------------------------------------------------------
Tue Sep 7 18:47:40 UTC 2021 - Ondřej Súkup <mimi.vx@gmail.com>
- relax constraints on base-compat
-------------------------------------------------------------------
Tue Aug 17 15:25:19 UTC 2021 - Ondřej Súkup <mimi.vx@gmail.com>
- relax constraints on transformers-compat
-------------------------------------------------------------------
Thu Jun 24 12:02:53 UTC 2021 - psimons@suse.com
- Update servant to version 0.18.3.
0.18.3
------
### Significant changes
- Add response header support to UVerb (#1420).
- Use Capture Description if available (#1423).
### Other changes
- Support GHC-9.0.1.
- Bump `bytestring`, `attoparsec`, `hspec` and `singleton-bool` dependencies.
-------------------------------------------------------------------
Sat May 15 15:56:17 UTC 2021 - psimons@suse.com
- Update servant to version 0.18.2 revision 1.
Upstream has revised the Cabal build instructions on Hackage.
-------------------------------------------------------------------
Tue Apr 6 13:22:48 UTC 2021 - Ondřej Súkup <mimi.vx@gmail.com>
- relax overconstrained deps on singleton-bool
-------------------------------------------------------------------
Thu Mar 25 15:46:03 UTC 2021 - Ondřej Súkup <mimi.vx@gmail.com>
- relax dep on attoparsec
-------------------------------------------------------------------
Tue Jan 19 20:10:01 UTC 2021 - Ondřej Súkup <mimi.vx@gmail.com>
- relax dep on http-api-data
-------------------------------------------------------------------
Thu Dec 17 12:20:00 UTC 2020 - Ondřej Súkup <mimi.vx@gmail.com>
- disable %{ix86} build
-------------------------------------------------------------------
Wed Dec 9 11:40:47 UTC 2020 - psimons@suse.com
- Add servant at version 0.18.2.