IORefCAS-0.0.1.1: IORefCAS.cabal
Name: IORefCAS
Version: 0.0.1.1
License: BSD3
License-file: LICENSE
Author: Adam C. Foltzer, Ryan Newton
Maintainer: acfoltzer@gmail.com, rrnewton@gmail.com
Category: Data
Build-type: Simple
Cabal-version: >=1.8
-- Version History:
-- 0.0.1 -- initial release
-- 0.0.1.1 -- minor bump to include README
Synopsis: Atomic compare and swap for IORefs and CASRefs.
Description:
After GHC 7.2 a new `casMutVar#` primop became available, but was
not yet exposed in Data.IORef. This package fills that gap until
such a time as Data.IORef obsoletes it.
.
Further, in addition to exposing native Haskell CAS operations, this
package contains \"mockups\" that imititate the same functionality
using either atomicModifyIORef and unsafe pointer equality (in
@Data.CAS.Fake@) or using foreign functions (@Data.CAS.Foreign@).
These alternatives are useful for debugging.
.
Note that the foreign option does not operate on IORefs and so is
directly interchangeable with `Data.CAS` and `Data.CAS.Fake` only if
the interface in `Data.CAS.Class` is used.
Extra-Source-Files:
Makefile, Test.hs, README.md
Library
exposed-modules: Data.CAS,
Data.CAS.Internal.Class,
Data.CAS.Internal.Fake,
Data.CAS.Internal.Foreign
build-depends: base >= 4.4.0.0 && < 5,
ghc-prim, bits-atomic
-- Executable
Test-Suite test-IORefCAS
type: exitcode-stdio-1.0
main-is: Test.hs
ghc-options: -O2 -threaded -rtsopts
cpp-options: -DT1 -DT2 -DT3
build-depends: QuickCheck, HUnit, bits-atomic
-- TODO: Refactor to use test-framework:
-- , test-framework, test-framework-hunit
-- test-framework-quickcheck2