Abstract
Systematic concurrency testing (SCT) is an approach to testing potentially nondeterministic concurrent programs. SCT avoids potentially unrepeatable results that may arise from unit testing concurrent programs. It seems to have received little attention from Haskell programmers. This paper introduces a generalisation of Haskell's concurrency abstraction in the form of typeclasses, and a library for testing concurrent programs. A number of examples are provided, some of which come from pre-existing packages.
- Parallel and Concurrent Programming in Haskell (online version, part of Atlas beta), 2014. URL https://www.reddit.com/ r/haskell/comments/1iwr7x/parallel_and_concurrent_ programming_in_haskell/cb8x76p.Google Scholar
- Ankuzik. Haskell. Testing a Multithreaded Application, 2014. URL http://kukuruku.co/hub/haskell/ haskell-testing-a-multithread-application.Google Scholar
- K. Claessen, M. Palka, N. Smallbone, J. Hughes, H. Svensson, T. Arts, and U. Wiger. Finding race conditions in Erlang with QuickCheck and PULSE. In Proceedings of the 14th ACM SIGPLAN International Conference on Functional Programming, ICFP ’09, pages 149–160. ACM, 2009. Google Scholar
Digital Library
- M. Emmi, S. Qadeer, and Z. Rakamari´c. Delay-bounded Scheduling. In Proceedings of the 38th Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, POPL ’11, pages 411–422. ACM, 2011. Google Scholar
Digital Library
- J. Epstein, A. P. Black, and S. Peyton-Jones. Towards Haskell in the cloud. In Proceedings of the 4th ACM Symposium on Haskell, Haskell ’11, pages 118–129. ACM, 2011. Google Scholar
Digital Library
- C. Flanagan and P. Godefroid. Dynamic partial-order reduction for model checking software. In Proceedings of the 32nd ACM SIGPLANSIGACT Symposium on Principles of Programming Languages, POPL ’05, pages 110–121. ACM, 2005. Google Scholar
Digital Library
- GHC Base Libraries. Data.IORef, 2015. URL https: //hackage.haskell.org/package/base-4.7.0.2/docs/ Data-IORef.html#g:2.Google Scholar
- D. Jones Jr, S. Marlow, and S. Singh. Parallel performance tuning for Haskell. In Proceedings of the 2nd ACM SIGPLAN symposium on Haskell, pages 81–92. ACM, 2009. Google Scholar
Digital Library
- L. Kuper, A. Todd, S. Tobin-Hochstadt, and R. R. Newton. Taming the parallel effect zoo: Extensible deterministic parallelism with LVish. In Proceedings of the 35th ACM SIGPLAN Conference on Programming Language Design and Implementation, pages 2–14. ACM, 2014. Google Scholar
Digital Library
- S. Marlow. Parallel and Concurrent Programming in Haskell: Techniques for Multicore and Multithreaded Programming. O’Reilly Media, 2013. ISBN 9781449335922.Google Scholar
- S. Marlow, P. Maier, H.-W. Loidl, M. K. Aswad, and P. Trinder. Seq No More: Better Strategies for Parallel Haskell. In Proceedings of the Third ACM Haskell Symposium on Haskell, Haskell ’10, pages 91– 102. ACM, 2010. Google Scholar
Digital Library
- S. Marlow, R. Newton, and S. Peyton Jones. A Monad for Deterministic Parallelism. In Proceedings of the 4th ACM Symposium on Haskell, Haskell ’11, pages 71–82. ACM, 2011. Google Scholar
Digital Library
- M. Musuvathi and S. Qadeer. Iterative Context Bounding for Systematic Testing of Multithreaded Programs. In Proceedings of the 2007 ACM SIGPLAN Conference on Programming Language Design and Implementation, PLDI ’07, pages 446–455. ACM, 2007. Google Scholar
Digital Library
- E. Scholz. A Concurrency Monad Based on Constructor Primitives, or, Being First-Class is Not Enough. Freie Univ., Fachbereich Mathematik, 1995.Google Scholar
- M. Snoyman. Announcing auto-update, 2014. URL http://www. yesodweb.com/blog/2014/08/announcing-auto-update.Google Scholar
- P. Thomson, A. F. Donaldson, and A. Betts. Concurrency Testing Using Schedule Bounding: an Empirical Study. In Proceedings of the 19th ACM SIGPLAN symposium on Principles and practice of parallel programming, pages 15–28. ACM, 2014. Google Scholar
Digital Library
- J. Yu, S. Narayanasamy, C. Pereira, and G. Pokam. Maple: A Coverage-driven Testing Tool for Multithreaded Programs. In Proceedings of the ACM International Conference on Object Oriented Programming Systems Languages and Applications, OOPSLA ’12, pages 485–502. ACM, 2012. Google Scholar
Digital Library
Index Terms
Déjà Fu: a concurrency testing library for Haskell
Recommendations
Déjà Fu: a concurrency testing library for Haskell
Haskell '15: Proceedings of the 2015 ACM SIGPLAN Symposium on HaskellSystematic concurrency testing (SCT) is an approach to testing potentially nondeterministic concurrent programs. SCT avoids potentially unrepeatable results that may arise from unit testing concurrent programs. It seems to have received little ...
Conservative Concurrency in Haskell
LICS '12: Proceedings of the 2012 27th Annual IEEE/ACM Symposium on Logic in Computer ScienceThe calculus CHF models Concurrent Haskell extended by concurrent, implicit futures. It is a lambda and process calculus with concurrent threads, monadic concurrent evaluation, and includes a pure functional lambda-calculus PF which comprises data ...
Open transactional actions: interacting with non-transactional resources in STM Haskell
Haskell 2022: Proceedings of the 15th ACM SIGPLAN International Haskell SymposiumThis paper addresses the problem of accessing external resources from inside transactions in STM Haskell, and for that purpose introduces a new abstraction called Open Transactional Actions (OTAs) that provides a framework for wrapping non-transactional ...






Comments