Commit Graph

805 Commits

Author SHA1 Message Date
Michael Walker
6eaae0a589 Wrap predicate functions in a newtype & separate ty params
Also adds a Functor and Profunctor instance for predicates.  The old
predicate type is kept as an alias for the (common) case where both
tyvars are the same.
2017-12-12 14:07:22 +00:00
Michael Walker
3348c4705c Add bound-thread async function variants 2017-12-12 14:06:59 +00:00
Michael Walker
45256193c0 Implement bound threads
This also adds forkOS(N) and isCurrentThreadBound to MonadConc, a
breaking change.

Note: forkOSWithUnmask(N) is NOT added to MonadConc, as it isn't
supported in base-4.8 (GHC 7.10).  See #132 for the action on this.

A bound thread under test gets a dedicated worker thread, which is
forked bound using the underlying MonadConc.  This worker is used for
all lifted actions, with execution as normal otherwise.
2017-12-12 14:06:59 +00:00
Michael Walker
31d29c11ea Require a 'MonadConc n' instance to run 'ConcT r n' expressions
This is preparation for adding bound threads.  The instance isn't used
in this commit, but the diff is large enough that I feel this should
be a separate commit for ease of review.

Fallout:

- The MonadBaseControl IO instance is gone, as I'm not sure how to do
  it generally.
- The pure/IO split is gone, everything is now monadic.
- The execution, SCT, and dejafu functions are of the form (MonadConc
  n, MonadRef r n) => ...
2017-12-12 14:06:59 +00:00
Michael Walker
99cae72b42 Pick version numbers for next-supermajor release 2017-12-12 14:06:59 +00:00
Michael Walker
0c8e387339 dejafu-0.9.1.2 release 2017-12-12 13:51:34 +00:00
Michael Walker
94dfe4b61a Update leancheck dependency 2017-12-12 13:50:35 +00:00
Michael Walker
8c2bf9d784 dejafu-0.9.1.1 release 2017-12-08 14:25:10 +00:00
Michael Walker
4791333dc0 Reduce default number of quickcheck tests in dejafu-tests 2017-12-08 14:21:51 +00:00
Michael Walker
455a0f4ba7 Fix depstate being one step out of sync in backtracking
Fixes #161
2017-12-08 14:21:51 +00:00
Michael Walker
be64ba90ab Add weeder exclude rules for optional dependencies 2017-12-08 14:20:39 +00:00
Michael Walker
d750342c77 hunit-dejafu-0.7.1.1 and tasty-dejafu-0.7.1.1 releases 2017-11-30 22:08:56 +00:00
Michael Walker
fa1836c3a8 Add missing haddock @since annotations 2017-11-30 22:08:38 +00:00
Michael Walker
82966c43f3 hunit-dejafu-0.7.1.0 and tasty-dejafu-0.7.1.0 releases 2017-11-30 21:43:12 +00:00
Michael Walker
417415937a Add testPropertyFor to {hunit,tasty}-dejafu
Closes #159
2017-11-30 21:40:25 +00:00
Michael Walker
e2a8882764 concurrency-1.2.3.0 release 2017-11-30 21:25:51 +00:00
Michael Walker
e408dcb40b Add named-thread variants of the 'withAsync*' functions
Closes #148
2017-11-30 21:22:46 +00:00
Michael Walker
2fa165ac6f dejafu-0.9.1.0 release 2017-11-26 22:41:54 +00:00
Michael Walker
c88ec04ec2 Display pre-emptions following a yield with a lower-case "p"
Fixes #109
2017-11-26 22:24:13 +00:00
Michael Walker
e9a64a1f8d Add missing MonadFail instances (when base >=4.9) for ConcT/STM
Closes #136
2017-11-25 23:40:08 +00:00
Michael Walker
a0801d65eb Fix new hlint warnings 2017-11-20 19:25:48 +00:00
Michael Walker
7aa407df47 Remove accidentally committed file 2017-11-20 19:25:48 +00:00
Michael Walker
743dcad20d Travis improvements
- separate build matrix entry for style checks
- run stylish-haskell
- use `stack --no-terminal`
- improve folding

Closes #151
Closes #152
2017-11-20 19:25:48 +00:00
Michael Walker
9354282ee5 Fix some incorrect "@since" haddock comments 2017-11-07 14:21:23 +00:00
Michael Walker
b0fb55a50e dejafu-0.9.0.3 release 2017-11-06 01:10:52 +00:00
Michael Walker
4437baf672 concurrency-1.2.2.0 release 2017-11-05 01:53:22 +00:00
Michael Walker
77c708014d Add IsConc and IsSTM types 2017-11-05 01:47:30 +00:00
Michael Walker
74b1c2c996 Use underlying monad for modifyCRefCAS_ transformer instances 2017-11-05 01:33:43 +00:00
Michael Walker
7d5df170e7 Do not pass memory model to dependency functions
This is sane because buffered writes can only happen if the MemType
isn't sequential consistency anyway.
2017-11-02 22:15:11 +00:00
Michael Walker
e780c69f80 Impose a dependency between commits and memory barriers
The previous behaviour was unsound.

Fixes #138
2017-11-02 21:37:11 +00:00
Michael Walker
c41734f251 Make write/commit dependency avoidance less widely applicable
It was probably unsound before.
2017-11-02 21:34:34 +00:00
Michael Walker
5a8d6c965b dejafu-0.9.0.2 release 2017-11-02 18:12:04 +00:00
Michael Walker
e7b18ffd50 tasty-dejafu-0.7.0.3 release 2017-11-02 18:08:43 +00:00
Michael Walker
42ea4ca2f2 tasty-dejafu: bump upper bound of tasty to 0.13 2017-11-02 18:07:26 +00:00
Michael Walker
bc72c9904b Make a fair bound of 0 meaningful 2017-11-01 20:06:31 +00:00
Michael Walker
424bdd2a6b Try alternative decisions if runnable prior is excluded by the bound 2017-11-01 14:52:42 +00:00
Michael Walker
30ab912210 Don't consider TVar reads dependent 2017-11-01 14:46:18 +00:00
Michael Walker
eb73600b39 Add property tests for memory ops 2017-10-31 17:17:27 +00:00
Michael Walker
29b1f28546 Add some property tests
Goes some way to solving #142, but it would be nice to have some for
the memory stuff.
2017-10-30 20:32:00 +00:00
Michael Walker
5bc3eb2773 Move isBlock/isBarrier optimisation into findBacktrackSteps
This makes dependent ==> dependent'
2017-10-30 19:24:24 +00:00
Michael Walker
03ca3c978e Remove an inconsistency in exception dependencies 2017-10-30 19:18:25 +00:00
Michael Walker
e0719a11ee Avoid a needless pessimism in dependent' 2017-10-30 19:18:25 +00:00
Michael Walker
18cd9d69ab Make dependent commutative 2017-10-30 19:18:25 +00:00
Michael Walker
e099b29597 Remove GHC <7.10 checks from dejafu-tests 2017-10-28 17:26:52 +01:00
Michael Walker
fa7d4bf445 Use MIN_TOOL_VERSION_ghc rather than __GLASGOW_HASKELL_ 2017-10-28 17:26:52 +01:00
Michael Walker
821293f629 Add a Jenkinsfile to build&deploy docs
https://docs.barrucadu.co.uk/$pkg/$branch
2017-10-28 17:26:52 +01:00
Michael Walker
6c31a3c929 dejafu-0.9.0.1 release 2017-10-28 12:24:01 +01:00
Michael Walker
a963822d6c Do not pop exception handlers twice
Fix #139 and #141
2017-10-28 12:21:41 +01:00
Michael Walker
3c0b2d81ff Give better errors from failing partial functions
They still shouldn't fail, but this will make tracking down issues
like #141 in the future easier
2017-10-28 12:17:49 +01:00
Michael Walker
5838a921b7 Add a test case exhibiting #139 2017-10-25 18:47:02 +01:00