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