File: abstract-deque.cabal

package info (click to toggle)
haskell-abstract-deque 0.3-7
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 72 kB
  • sloc: haskell: 188; makefile: 2
file content (78 lines) | stat: -rw-r--r-- 2,565 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
Name:                abstract-deque
Version:             0.3 
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/wiki
Bug-Reports: https://github.com/rrnewton/haskell-lockfree/issues

-- 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
-- 0.2.2.1: Add some extra testing helpers.
-- 0.3:  Remove testing utilities to their own package.

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.Reference,
                     Data.Concurrent.Deque.Reference.DequeInstance,
                     Data.Concurrent.Deque.Debugger
  build-depends:     base >= 4 && < 5, array, random,
                     containers, time
  if flag(useCAS) && impl( ghc >= 7.4 ) && !os(mingw32) {
    build-depends:   atomic-primops >= 0.5.0.2
    cpp-options:  -DUSE_CAS -DDEFAULT_SIGNATURES
  }

  extensions: CPP
  ghc-options: -O2

Source-Repository head
    Type:         git
    Location:     git://github.com/rrnewton/haskell-lockfree.git