File: monad-par.cabal

package info (click to toggle)
haskell-monad-par 0.3.6-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 208 kB
  • sloc: haskell: 1,583; makefile: 19
file content (183 lines) | stat: -rw-r--r-- 6,516 bytes parent folder | download
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
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
Name:                monad-par
Version:             0.3.6
Synopsis:            A library for parallel programming based on a monad


-- Version history:
--  0.1      : First release
--  0.1.0.1  : 
--  0.1.0.2  : 
--  0.1.1.0  : module reorganization, moving ParClass

--  0.2      : Bumped for new class-based API
--  0.2.1    : Bumped for change AList
--  0.2.2    : incorporation of real deque package
--  0.2.3    : Restricted module export for 0.2 release.

--  0.3      : Factored/reorganized modules and packages.  
--             *This* package is the original, core monad-par.
--  0.3.1    : fix for ghc 7.6.1, expose Par.IO
--  0.3.4    : switch to direct scheduler as default (only 1-level nesting allowed)
--  0.3.4.1  : fix build with GHC 7.0, and fix test
--  0.3.4.2  : Bugfix, 0.3.4.1 was released with debugging switches flipped.
--  0.3.4.3  : Bugfix, Trace scheduler is now the default
--  0.3.4.4  : Use the Trace scheduler in Control.Monad.Par.IO too
--  0.3.4.5  : Extremely minor, fix to unit tests.
--  0.3.4.6  : Add newgeneric flag, supporting the par-classes module.
--  0.3.4.7  : bugfix #38 for GHC 7.10

Description:
  The 'Par' monad offers a simple API for parallel programming.  The
  library works for parallelising both pure and @IO@ computations,
  although only the pure version is deterministic.  The default 
  implementation provides a work-stealing scheduler and supports
  forking tasks that are much lighter weight than IO-threads.
  .
  For complete documentation see "Control.Monad.Par".
  .
  Some examples of use can be found in the @examples/@ directory of
  the source package.
  .
  Other related packages:
  .
  * @abstract-par@ provides the type classes that abstract over different
  implementations of the @Par@ monad.
  .
  * @monad-par-extras@ provides extra combinators and monad transformers layered on top of
  the @Par@ monad.
  .
  Changes in 0.3.4 relative to 0.3:
  .
  * Fix bugs that cause "thread blocked indefinitely on MVar" crashes.
  .
  * Added "Control.Monad.Par.IO"

Homepage:            https://github.com/simonmar/monad-par
License:             BSD3
License-file:        LICENSE
Author:              Simon Marlow, Ryan Newton
Maintainer:          Simon Marlow <marlowsd@gmail.com>, Ryan Newton <rrnewton@gmail.com>
Copyright:           (c) Simon Marlow 2011
Stability:           Experimental
Category:            Control,Parallelism,Monads
Build-type:          Simple
Cabal-version:       >=1.10

extra-source-files:
     tests/AListTest.hs
     tests/AllTests.hs
     tests/AsyncTest.hs
     tests/Makefile
     tests/ParTests1.hs
     tests/ParTests2.hs
     tests/ParTests_shared.hs
     tests/TestHelpers.hs
     tests/TestParDist.hs
     tests/Test_ContReaderT.hs
     tests/Test_ReaderContT.hs
     tests/hs_cassandra_microbench.hs
     tests/hs_cassandra_microbench2.hs

Flag chaselev
   Description: Use Chase-Lev Deques for higher-perf work-stealing.
   Default: False

Flag newgeneric
   Description: Provide instances for the new par-classes generic Par programming interface.
   Default: False

Source-repository head
  type:     git
  location: https://github.com/simonmar/monad-par

Library
  Default-Language: Haskell98
  Exposed-modules: 
                 -- The classic, simple monad-par interface:
                   Control.Monad.Par
                 , Control.Monad.Par.IO

                 -- This is the default scheduler:
                 , Control.Monad.Par.Scheds.Trace
                 , Control.Monad.Par.Scheds.TraceInternal

                 -- Replacement scheduler for Trace:
                 , Control.Monad.Par.Scheds.Direct

                 -- This scheduler uses sparks rather than IO threads.
                 -- It only supports Futures, not full IVars.  Fork
                 -- becomes lighter weight.
                 , Control.Monad.Par.Scheds.Sparks

  Build-depends: base >= 4 && < 5
               -- This provides the interface which monad-par implements:
               , abstract-par 
               , abstract-deque >= 0.1.4
               -- Extras such as parMap, RNG, State
               , monad-par-extras >= 0.3
               , deepseq >= 1.1
               , array >= 0.3
               , mwc-random >= 0.11
               , containers
               , parallel >= 3.1
               , mtl >= 2.0.1.0

  if flag(chaselev)
    cpp-options: -DUSE_CHASELEV
    build-depends: chaselev-deque

  if flag(newgeneric)
    cpp-options: -DNEW_GENERIC
    build-depends: par-classes

  ghc-options: -O2
  Other-modules:
               ------------------------------------------------------------
               --                Schedulers & Infrastructure             --
               ------------------------------------------------------------

               -- Strawman scheduler that forks IO threads:
               -- Control.Monad.Par.Scheds.ContFree,

               -- Internal logging framework:
               -- Control.Monad.Par.Logging,

               -- Serial Elision scheduling is currently experimental:
               -- Control.Monad.Par.Scheds.SerialElision

               Control.Monad.Par.Scheds.DirectInternal

               ------------------------------------------------------------
               --                   Data Structures                      -- 
               ------------------------------------------------------------

               -- ILists are internal:
               -- , Control.Monad.Par.IList

               -- RRN: Not exposing Streams or OpenLists yet.  Need to improve performance.
               -- We have some ideas for enabling bounded chans while preventing deadlock:
               -- , Control.Monad.Par.OpenList
               -- , Control.Monad.Par.Stream


Test-Suite test-monad-par
    Default-Language: Haskell98
    type:       exitcode-stdio-1.0
    main-is:    tests/AllTests.hs
    hs-source-dirs: tests/ ./    
    -- Run tests in parallel:
    ghc-options: -O2 -threaded -rtsopts -with-rtsopts=-N4    
    build-depends: base >= 4.3 && < 5
                 , abstract-par, monad-par-extras
                 , array   >= 0.3
                 , deepseq >= 1.2
                 , time
                 , QuickCheck, HUnit
                 , test-framework-hunit
                 , test-framework-quickcheck2 >= 0.3 
                 , test-framework, test-framework-th

                 , abstract-deque >= 0.1.4
                 , mwc-random >= 0.11
                 , mtl >= 2.0.1.0
                 , containers