A safe approach to CAS and other atomic ops in Haskell.

Version on this page:0.8.5
LTS Haskell 22.25:0.8.7
Stackage Nightly 2024-06-15:0.8.7
Latest on Hackage:0.8.7

See all snapshots atomic-primops appears in

BSD-3-Clause licensed by Ryan Newton
Maintained by [email protected]
This version can be pinned in stack with:atomic-primops-0.8.5@sha256:6496469ffe3847c71b38283d33e3bb392cc90e23fa0083c8ef0f8e509c57fe3c,2414

Module documentation for 0.8.5

After GHC 7.4 a new casMutVar# primop became available, but it's difficult to use safely, because pointer equality is a highly unstable property in Haskell. This library provides a safer method based on the concept of Tickets. . Also, this library uses the "foreign primop" capability of GHC to add access to other variants that may be of interest, specifically, compare and swap inside an array. . Note that as of GHC 7.8, the relevant primops have been included in GHC itself. This library is engineered to work pre- and post-GHC-7.8, while exposing the same interface.


0.8.5 [2024.02.17]

  • Allow building with GHC 9.10.

0.8.4 [2020.10.03]

  • Allow building with base-4.15 (GHC 9.0).

0.8.3 [2019.05.02]

  • Allow the tests to build with base-4.13 (GHC 8.8).
  • Require GHC 7.10 or later.

0.8.2 [2018.03.08]

  • Allow building with base-4.11. [2017.12.10]

  • Bundle testing/Fetch.hs with the package tarball


  • Simplify Setup.hs to support Cabal-2.0/GHC 8.2
  • Properly link store_load_barrier and friends against the GHC RTS on Windows when using GHC 8.2 or later

  • Internal changes to support forthcoming GHC 8.0


  • Implements additional fetch primops available in GHC 7.10


  • This release adds support for GHC 7.10 and its expanded library of (now inline) primops.


  • This is a good version to use for GHC 7.8.3. It includes portability and bug fixes and adds atomicModifyIORefCAS.

  • fix for GHC 7.8

  • minor ghc 7.8 fix


  • add atomicModifyIORefCAS, and bump due to prev bugfixes

  • IMPORTANT BUGFIXES - don’t use earlier versions. They have been marked deprecated.


  • Nix Data.Atomics.Counter.Foreign and the bits-atomic dependency.


  • Add advance support for GHC 7.8


  • Further internal changes, duplicate ‘cas’ routine well as barriers.
  • Add fetchAddByteArrayInt
  • Add an Unboxed counter variant that uses movable “ByteArray”s on the GHC heap.


  • Major internal change. Duplicate the barrier code from the GHC RTS and thus enable support for executables that are NOT built with ‘-threaded’.

  • Minor, add warning.


  • Add more counters


  • Critical bugfix and add Counter.

  • disable profiling

  • initial release