Name: abstract-deque
Version: 0.2.2
License: BSD3
License-file: LICENSE
Author: Ryan R. Newton
Maintainer: rrnewton@gmail.com
Category: Data
Build-type: Simple
Cabal-version: >= 1.8
Homepage: https://github.com/rrnewton/haskell-lockfree-queue/wiki
-- Version History:
-- 0.1:
-- 0.1.1: Added nullQ to interface. [First release]
-- 0.1.2: dependency on IORefCAS
-- 0.1.3: Actually turned on real CAS! DANGER
-- 0.1.4: Another release.
-- 0.1.5: Fix for 6.12 and 7.0.
-- 0.1.6: Make useCAS default FALSE.
-- 0.1.7: Add leftThreadSafe / rightThreadSafe
-- 0.2: [breaking] Refactor names of exposed Tests
-- 0.2.2: Add Debugger
Synopsis: Abstract, parameterized interface to mutable Deques.
Description:
An abstract interface to highly-parameterizable queues/deques.
.
Background: There exists a feature space for queues that extends between:
.
* simple, single-ended, non-concurrent, bounded queues
.
* double-ended, threadsafe, growable queues
.
... with important points inbetween (such as
the queues used for work-stealing).
.
This package includes an interface for Deques that allows the
programmer to use a single API for all of the above, while using the
type-system to select an efficient implementation given the
requirements (using type families).
.
This package also includes a simple reference implementation based
on 'IORef' and "Data.Sequence".
-- Making this default False because abstract-deque should be VERY depndency-safe.
-- The reference implementation can be factored out in the future.
Flag useCAS
Description: Enable the reference implementation to use hardware compare-and-swap.
Default: False
Library
exposed-modules: Data.Concurrent.Deque.Class,
Data.Concurrent.Deque.Tests,
Data.Concurrent.Deque.Reference,
Data.Concurrent.Deque.Reference.DequeInstance,
Data.Concurrent.Deque.Debugger
build-depends: base >= 4 && < 5, array, random,
containers,
HUnit, test-framework >= 0.6, test-framework-hunit >= 0.2.7
if flag(useCAS) && impl( ghc >= 7.4 ) && !os(mingw32) {
build-depends: IORefCAS >= 0.2
cpp-options: -DUSE_CAS -DDEFAULT_SIGNATURES
-- extensions: DefaultSignatures
-- GHC-Options: -XDefaultSignatures
}
extensions: CPP
ghc-options: -O2
Source-Repository head
Type: git
Location: git://github.com/rrnewton/haskell-lockfree-queue.git
Test-Suite test-abstract-deque
type: exitcode-stdio-1.0
main-is: Test.hs
build-depends: base >= 4 && < 5, containers, HUnit, array, random,
HUnit, test-framework >= 0.6, test-framework-hunit >= 0.2.7
ghc-options: -O2 -threaded -rtsopts
-- ghc-options: -keep-tmp-files -dsuppress-module-prefixes -ddump-to-file -ddump-core-stats -ddump-simpl-stats -dcore-lint -dcmm-lint
-- ghc-options: -ddump-ds -ddump-simpl -ddump-stg -ddump-asm -ddump-bcos -ddump-cmm -ddump-opt-cmm -ddump-inlinings
-- Disabling this for now due to a limitation of cabal-install-0.10.2:
-- Examining generated code:
-- If
--------------------------------------------------------------------------------
-- if flag(useCAS) && impl( ghc >= 7.4 ) && !os(mingw32) {
-- ghc-options: -with-rtsopts=-K32M
-- build-depends: IORefCAS >= 0.2
-- cpp-options: -DUSE_CAS -DDEFAULT_SIGNATURES
-- }
-- if impl( ghc < 7 )
-- buildable: False