atomic-primops

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

https://github.com/rrnewton/haskell-lockfree/wiki

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.

Changes

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.

0.8.1.1 [2017.12.10]

  • Bundle testing/Fetch.hs with the package tarball

0.8.1

  • 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

0.8.0.4

  • Internal changes to support forthcoming GHC 8.0

0.8

  • Implements additional fetch primops available in GHC 7.10

0.7

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

0.6.1

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

0.6.0.5

  • fix for GHC 7.8

0.6.0.1

  • minor ghc 7.8 fix

0.6

  • add atomicModifyIORefCAS, and bump due to prev bugfixes

0.5.0.2

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

0.5

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

0.4.1

  • Add advance support for GHC 7.8

0.4

  • 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.

0.3

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

0.2.2.1

  • Minor, add warning.

0.2.2

  • Add more counters

0.2

  • Critical bugfix and add Counter.

0.1.0.2

  • disable profiling

0.1.0.0

  • initial release