dejafu/dejafu.cabal
Michael Walker c12cbcf707 Implement BPOR for SCT, return to listy predicates.
This performs better with "real" code (the Par monad) but surprisingly does far
worse with the included tests! The next thing to do is implement the orthogonal
sleep sets algorithm to cut down on available choices even further and
hopefully correct this issue.

See also: "Bounded Partial-Order Reduction" [Coons, Musuvathi, McKinley 2013]
2015-07-16 22:32:30 +01:00

102 lines
3.5 KiB
Plaintext
Executable File

-- Initial monad-conc.cabal generated by cabal init. For further
-- documentation, see http://haskell.org/cabal/users-guide/
name: dejafu
version: 0.0.0.0
synopsis: Overloadable primitives for testable, potentially non-deterministic, concurrency.
description:
Concurrency is nice, deadlocks and race conditions not so much. The
@Par@ monad family, as defined in
<https://hackage.haskell.org/package/abstract-par/docs/Control-Monad-Par-Class.html abstract-par>
provides deterministic parallelism, but sometimes we can tolerate a
bit of nondeterminism.
.
This package provides a class of monads for potentially
nondeterministic concurrency, with an interface very much in the
spirit of @Par@, but slightly more relaxed. Specifically,
@MonadConc@'s @IVar@ equivalent, @CVar@s, can be written to multiple
times.
.
== @MonadConc@ with 'IO':
.
The intention of the @MonadConc@ class is to provide concurrency
where 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. This
assumption is used by the testing functionality provided by
Test.DejaFu.
.
Whilst this assumption may not hold in general when 'IO' is
involved, you should strive to produce test cases where it does.
.
See the <https://github.com/barrucadu/dejafu README> for more
details.
homepage: https://github.com/barrucadu/dejafu
license: MIT
license-file: LICENSE
author: Michael Walker
maintainer: mike@barrucadu.co.uk
-- copyright:
category: Concurrency
build-type: Simple
-- extra-source-files:
cabal-version: >=1.10
source-repository head
type: git
location: https://github.com/barrucadu/dejafu.git
-- source-repository this
-- type: git
-- location: https://github.com/barrucadu/dejafu.git
-- tag:
library
exposed-modules: Control.Monad.Conc.Class
, Control.Monad.STM.Class
, Control.Concurrent.CVar
, Control.Concurrent.CVar.Strict
, Control.Concurrent.STM.CTVar
, Control.Concurrent.STM.CTMVar
, Test.DejaFu
, Test.DejaFu.Deterministic
, Test.DejaFu.Deterministic.IO
, Test.DejaFu.Deterministic.Schedule
, Test.DejaFu.SCT
, Test.DejaFu.STM
other-modules: Test.DejaFu.Deterministic.Internal
, Test.DejaFu.Deterministic.Internal.Common
, Test.DejaFu.Deterministic.Internal.CVar
, Test.DejaFu.Deterministic.Internal.Threading
, Test.DejaFu.SCT.Internal
, Test.DejaFu.STM.Internal
, Control.State
, Data.List.Extra
-- other-extensions:
build-depends: base >=4.5 && <5
, containers
, deepseq
, exceptions >=0.7
, monad-loops
, mtl
, random
, stm
, transformers
-- hs-source-dirs:
default-language: Haskell2010
ghc-options: -Wall
test-suite tests
hs-source-dirs: tests
type: exitcode-stdio-1.0
main-is: Tests.hs
build-depends: dejafu, base
default-language: Haskell2010