An unsynchronised write and a commit to the same CRef are independent if the buffer is nonempty, because the commit will take from the front of the buffer and the write will append to the end. See [RMMVerification], lemma 5.25. It doesn't translate directly because of the different models, but it's the same optimisation in spirit.
1.6 KiB
This repository contains dejafu, a concurrency testing library based on a typeclass abstraction of concurrency, and related libraries.
-
dejafu (hackage 0.2.0.0): Overloadable primitives for testable, potentially non-deterministic, concurrency.
-
async-dejafu (hackage 0.1.0.0): Run MonadConc operations asynchronously and wait for their results.
-
hunit-dejafu (hackage 0.2.0.0): Deja Fu support for the HUnit test framework.
-
tasty-dejafu (hackage 0.2.0.0): Deja Fu support for the Tasty test framework.
There is also dejafu-tests, the test suite for dejafu. This is in a separate package due to Cabal being bad with test suite transitive dependencies.
Bibliography
Each paper has a short name in parentheses, which I use in non-haddock comments. Haddock comments get the full citation. PDF links are provided where non-paywalled ones are available.
-
[BPOR] Bounded partial-order reduction, K. Coons, M. Musuvathi, K. McKinley (2013) http://research.microsoft.com/pubs/202164/bpor-oopsla-2013.pdf
-
[Empirical] Concurrency Testing Using Schedule Bounding: an Empirical Study, P. Thompson, A. Donaldson, and A. Betts (2014) http://www.doc.ic.ac.uk/~afd/homepages/papers/pdfs/2014/PPoPP.pdf
-
[RMMVerification] On the Verification of Programs on Relaxed Memory Models, A. Linden (2014) https://orbi.ulg.ac.be/bitstream/2268/158670/1/thesis.pdf