BSD-3-Clause licensed by Ted Cooper and Edward A. Kmett
This version can be pinned in stack with:rcu-0.2.7@sha256:43b6c36536e356c514e1d6c93ada49bca76ba355c742038aa9627ac4e27851b7,11996


Hackage Build Status

This package is an exploration of Read-Copy Update in Haskell based on Relativistic Programming in Haskell by Cooper and Walpole. It includes a sound QSBR-based implementation and an attempt at an STM-based implementation.

In the spirit of A Relativistic Enhancement to Software Transactional Memory by Howard and Walpole, we could extend the STM implementation to allow reads and writes on the same data in parallel, writes to disjoint data in parallel, and force readers to agree that writes before a synchronize happened before writes after it.

Development on this project proceeded in a burst of enthusiasm after Edward saw Ted’s poster presentation at ICFP 2015, and yet somehow he managed to shanghai Ted into helping maintain this copy of his own work.

Contact Information

Contributions and bug reports are welcome!

Please feel free to contact us through github or on the #haskell IRC channel on

-Edward Kmett and Ted Cooper


0.2.7 [2023.08.09]

  • Drop GHC 7.10 support and require GHC 8.0 or later to build.
  • Make the examples build warnings-free with GHC 9.8.

0.2.6 [2022.05.18]

  • Make the IncCounterExperiment benchmark compile with GHC 9.4.

0.2.5 [2021.02.17]

  • The build-type has been changed from Custom to Simple. To achieve this, the doctests test suite has been removed in favor of using cabal-docspec to run the doctests.

0.2.4 [2019.05.02]

  • Support building with base-4.13 (GHC 8.8).

0.2.3 [2018.08.01]

  • Add MonadFail instances for ReadingRCU and WritingRCU.

0.2.2 [2018.02.06]

  • Include HLint.hs with the tarball distribution, fixing the hlint test suite.


  • Support doctest-0.12


  • Revamp Setup.hs to use cabal-doctest. This makes it build with Cabal-2.0, and makes the doctests work with cabal new-build and sandboxes.


  • Initial version