A safe approach to CAS and other atomic ops in Haskell.
|LTS Haskell 20.16:||0.8.4|
|Stackage Nightly 2023-03-29:||0.8.4|
|Latest on Hackage:||0.8.4|
Maintained by firstname.lastname@example.org
This version can be pinned in stack with:
Module documentation for 0.8.4
Depends on 3 packages(full list with versions):
Used by 14 packages in lts-18.28(full list with versions):
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
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.
- Allow building with
- Allow the tests to build with
- Require GHC 7.10 or later.
- Allow building with
testing/Fetch.hswith the package tarball
- Properly link
store_load_barrierand 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 an
Unboxedcounter 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