dejafu: Systematic testing for Haskell concurrency.

[ concurrency, library, mit ] [ Propose Tags ]

[Déjà Fu is] A martial art in which the user's limbs move in time as well as space, […] It is best described as "the feeling that you have been kicked in the head this way before" -- Terry Pratchett, Thief of Time

Concurrency is nice, deadlocks and race conditions not so much. The Par monad family, as defined in abstract-par provides deterministic parallelism, but sometimes we can tolerate a bit of nondeterminism.

This package builds on the concurrency package by enabling you to systematically and deterministically test your concurrent programs.

Déjà Fu with IO:

The core assumption underlying Déjà Fu is that any apparent nondeterminism arises purely from the scheduling behaviour. To put it another way, a given computation, parametrised with a fixed set of scheduling decisions, is deterministic.

Whilst this assumption may not hold in general when IO is involved, you should strive to produce test cases where it does.

Memory Model

The testing functionality supports a few different memory models, for computations which use non-synchronised CRef operations. The supported models are:

If a testing function does not take the memory model as a parameter, it uses TSO.

See the README for more details.

Versions [faq],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, (info)
Dependencies base (>=4.8 && <5), concurrency (==1.1.0.*), containers (==0.5.*), deepseq (>=1.1 && <2), exceptions (>=0.7 && <0.9), monad-loops (==0.4.*), mtl (==2.2.*), random (>=1.0 && <1.2), ref-fd (==0.4.*), semigroups (>=0.16 && <0.19), transformers (>=0.4 && <0.6), transformers-base (==0.4.*) [details]
License MIT
Author Michael Walker
Category Concurrency
Home page
Source repo head: git clone
this: git clone dejafu-
Uploaded by barrucadu at 2017-02-25T06:06:08Z
Distributions LTSHaskell:, NixOS:, Stackage:
Downloads 35416 total (57 in the last 30 days)
Rating 2.0 (votes: 1) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Hackage Matrix CI
Docs available [build log]
Last success reported on 2017-02-25 [all 1 reports]




Maintainer's Corner

For package maintainers and hackage trustees