The atomic-primops package
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 in 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.
Changes in 0.4:
Further internal changes, duplicate cas routine well as barriers.
Add an Unboxed counter variant that uses movable ByteArrays on the GHC heap.
Changes in 0.5:
Remove dependency on bits-atomic unless a flag is turned on.
Changes in 0.5.0.2:
IMPORTANT BUGFIXES - don't use earlier versions. They have been marked deprecated.
Changes in 0.6.1
This is a good version to use for GHC 7.8.3. It includes portability and bug fixes and adds atomicModifyIORefCAS.
Changes in 0.7:
This release adds support for GHC 7.10 and its expanded library of (now inline) primops.
Changes in 0.8:
Implements additional fetch primops available in GHC 7.10
|Versions||0.1.0.0, 0.1.0.2, 0.2.2, 0.2.2.1, 0.3, 0.4, 0.5, 0.5.0.2, 0.6, 0.6.0.5, 0.6.0.6, 0.6.1, 0.6.1.1, 0.7, 0.8 (info)|
|Change log||None available|
|Dependencies||base (>=220.127.116.11 && <4.9), ghc-prim, primitive [details]|
|Source repository||head: git clone https://github.com/rrnewton/haskell-lockfree/(atomic-primops)|
|Uploaded||Wed Apr 15 19:21:31 UTC 2015 by BrandonSimmons|
|Distributions||FreeBSD:0.8, LTSHaskell:0.8, NixOS:0.8, Stackage:0.8|
|Downloads||6102 total (322 in last 30 days)|
|Status||Docs available [build log]|
Last success reported on 2015-04-18 [all 1 reports]
|debug||Enable extra internal checks.||Disabled||Automatic|
Use -f <flag> to enable a flag, or -f -<flag> to disable that flag. More info
- atomic-primops-0.8.tar.gz [browse] (Cabal source package)
- Package description (included in the package)
For package maintainers and hackage trustees