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

[ bsd3, data, library ] [ Propose Tags ]

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 fetchAddByteArrayInt

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

Flags

Automatic Flags
NameDescriptionDefault
debug

Enable extra internal checks.

Disabled

Use -f <flag> to enable a flag, or -f -<flag> to disable that flag. More info

Downloads

Note: This package has metadata revisions in the cabal description newer than included in the tarball. To unpack the package including the revisions, use 'cabal get'.

Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees

Candidates

  • No Candidates
Versions [RSS] 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, 0.8.0.2, 0.8.0.3, 0.8.0.4, 0.8.1, 0.8.1.1, 0.8.2, 0.8.3, 0.8.4, 0.8.5 (info)
Dependencies base (>=4.6.0.0 && <=4.7.0.0), Cabal, ghc-prim, primitive [details]
License BSD-3-Clause
Author Ryan Newton
Maintainer rrnewton@gmail.com
Revised Revision 1 made by AdamBergmark at 2015-07-03T19:49:45Z
Category Data
Home page https://github.com/rrnewton/haskell-lockfree/wiki
Source repo head: git clone git://github.com/rrnewton/haskell-lockfree.git(atomic-primops/)
Uploaded by RyanNewton at 2014-02-03T04:51:51Z
Distributions Arch:0.8.5, FreeBSD:0.8, LTSHaskell:0.8.5, NixOS:0.8.4, Stackage:0.8.5
Reverse Dependencies 30 direct, 3771 indirect [details]
Downloads 44120 total (302 in the last 30 days)
Rating 2.0 (votes: 1) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs available [build log]
Successful builds reported [all 1 reports]