atomic-primops-0.2.2.1: atomic-primops.cabal
Name: atomic-primops
Version: 0.2.2.1
License: BSD3
License-file: LICENSE
Author: Ryan Newton
Maintainer: rrnewton@gmail.com
Category: Data
Stability: Provisional
-- Portability: non-portabile (x86_64)
Build-type: Custom
-- TODO: This requirement needs to be bumped to 1.17 when the latest cabal is
-- released. This package triggers issue #1284:
Cabal-version: >=1.8
HomePage: https://github.com/rrnewton/haskell-lockfree-queue/wiki
-- Version History:
-- 0.1.0.0 -- initial release
-- 0.1.0.2 -- disable profiling
-- 0.2 -- Critical bugfix and add Counter.
-- 0.2.2 -- Add more counters
-- 0.2.2.1 -- Minor, add warning.
Synopsis: A safe approach to CAS and other atomic ops in Haskell.
Description:
WARNING: Your program MUST be built with "ghc -threaded" if you depend on this library.
The library depends on threaded Haskell RTS, which is only conditionally linked.
If you don't do this you will see an error at link time about "cas" being missing.
.
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.
Extra-Source-Files: DEVLOG.md,
testing/runTest.hs, testing/Test.hs, testing/test-atomic-primops.cabal
-- Makefile, Test.hs, README.md
Flag debug
Description: Enable extra internal checks.
Default: False
Library
exposed-modules: Data.Atomics
Data.Atomics.Internal
Data.Atomics.Counter
Data.Atomics.Counter.IORef
Data.Atomics.Counter.Reference
Data.Atomics.Counter.Foreign
ghc-options: -O2 -funbox-strict-fields
-- casMutVar# had a bug in GHC 7.2, thus we require GHC 7.4 or greater
-- (base 4.5 or greater). We also need the "Any" kind.
build-depends: base >= 4.5.0.0 && < 4.7, ghc-prim, primitive, Cabal,
bits-atomic
-- TODO: Try to push support back to 7.0:
-- Ah, but if we don't USE casMutVar# in this package we are ok:
-- build-depends: base >= 4.3, ghc-prim, primitive
Include-Dirs: cbits
C-Sources: cbits/primops.cmm
CC-Options: -Wall
ghc-prof-options: -DGHC_PROFILING_ON
-- if( cabal-version < 1.17 ) {
-- ghc-prof-options: ERROR_DO_NOT_BUILD_THIS_WITH_PROFILING_YET__SEE_CABAL_ISSUE_1284
-- }
if flag(debug)
cpp-options: -DDEBUG_ATOMICS
-- -- [2013.04.08] This isn't working presently:
-- -- I'm having problems with building it along with the library; see DEVLOG.
-- -- Switching to a separate package in ./testing/
-- Test-Suite test-atomic-primops
-- type: exitcode-stdio-1.0
Source-Repository head
Type: git
Location: git://github.com/rrnewton/haskell-lockfree-queue.git