You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
Intolerable a2e003367d
Add HasStatus instance for Headers (that defers StatusOf to underlying value) (#1649)
1 month ago
.github Provisionally disable the Stack CI, it's too flaky. (#1639) 3 months ago
changelog.d Add HasStatus instance for Headers (that defers StatusOf to underlying value) (#1649) 1 month ago
doc Fix haddock code examples in HasClient (#1640) 2 months ago
nix Upgrade GHCJS to 8.6 1 year ago
servant Add HasStatus instance for Headers (that defers StatusOf to underlying value) (#1649) 1 month ago
servant-auth Fix haddock code examples in HasClient (#1640) 2 months ago
servant-client Allow mtl-2.3, require jose-0.10 (#1627) 4 months ago
servant-client-core Fix haddock code examples in HasClient (#1640) 2 months ago
servant-client-ghcjs Allow mtl-2.3, require jose-0.10 (#1627) 4 months ago
servant-conduit Allow resourcet-1.3 in servant-server and servant-conduit (#1632) 2 months ago
servant-docs Fix haddock code examples in HasClient (#1640) 2 months ago
servant-foreign WithResource combinator for Servant-managed resources (#1630) 3 months ago
servant-http-streams Allow mtl-2.3, require jose-0.10 (#1627) 4 months ago
servant-machines Allow mtl-2.3, require jose-0.10 (#1627) 4 months ago
servant-pipes Allow mtl-2.3, require jose-0.10 (#1627) 4 months ago
servant-server Require wai >= 3.2.2.1 (#1644) 2 months ago
servant-swagger WithResource combinator for Servant-managed resources (#1630) 3 months ago
.gitignore Add details about AddHeaders instances (#1490) 1 year ago
.stylish-haskell.yaml Reformat servant 5 years ago
CONTRIBUTING.md Update docs: #haskell-servant is now on libera.chat (#1503) 1 year ago
README.md Update IRC link in readme to point at libera 2 years ago
cabal.ghcjs.project Fix tested-with fields in Cabal files 1 year ago
cabal.project WithResource combinator for Servant-managed resources (#1630) 3 months ago
default.nix Build servant repo with nix. (#1288) 3 years ago
ghcjs.nix Upgrade GHCJS to 8.6 1 year ago
hlint.yaml Update hlint.yaml and fix some hints in servant and servant-server 5 years ago
servant.png polish up cabal file, add a README 8 years ago
setup.py Add simple setup.py for RTD 5 years ago
sources.txt Support http-client’s CookieJar in servant-client 5 years ago
stack-ghcjs.yaml Add stack file for testing GHCJS. 5 years ago
stack.yaml Add servant-swagger to stack.yaml 1 year ago
stack.yaml.lock Add serveWithContextT, ServerContext (#1441) 2 years ago
streaming-benchmark.sh Refactor Stream stuff 4 years ago

README.md

servant - A Type-Level Web DSL

servant

Getting Started

We have a tutorial that introduces the core features of servant. After this article, you should be able to write your first servant webservices, learning the rest from the haddocks' examples.

The core documentation can be found here. Other blog posts, videos and slides can be found on the website.

If you need help, drop by the IRC channel (#haskell-servant on libera.chat) or mailing list.

Contributing

See CONTRIBUTING.md

Release process outline (by phadej)

  • Update changelog and bump versions in master
    • git log --oneline v0.12.. | grep 'Merge pull request' is a good starting point (use correct previous release tag)
  • Create a release branch, e.g. release-0.13
    • Release branch is useful for backporting fixes from master
  • Smoke test in servant-universe
    • git submodule foreach git checkout master and git submodule foreach git pull to get newest of everything.
    • cabal new-build --enable-tests all to verify that everything builds, and cabal new-test all to run tests
      • It's a good idea to separate these steps, as tests often pass, if they compile :)
    • See cabal.project to selectively allow-newer
    • If some packages are broken, on your discretisation there are two options:
      • Fix them and make PRs: it's a good idea to test against older servant version too.
      • Temporarily comment out broken package
    • If you make a commit for servant-universe, you can use it as submodule in private projects to test even more
  • When ripples are cleared out:
    • git tag -s the release
    • git push --tags
    • cabal sdist and cabal upload

TechEmpower framework benchmarks

We develop and maintain the servant TFB entry in https://github.com/haskell-servant/FrameworkBenchmarks/

To verify (i.e. compile and test that it works)

./tfb --mode verify --test servant servant-beam servant-psql-simple --type json plaintext db fortune

To compare with warp

./tfb --mode benchmark --test warp servant servant-beam servant-psql-simple --type json plaintext db fortune

To compare with reitit (Clojure framework)

./tfb --mode benchmark --test reitit reitit-async reitit-jdbc servant servant-beam servant-psql-simple --type json plaintext db fortune

You can see the visualised results at https://www.techempower.com/benchmarks/#section=test

Nix

A developer shell.nix file is provided in the nix directory

See nix/README.md