230345b7bf
OBS-URL: https://build.opensuse.org/package/show/devel:languages:haskell/ghc-monad-par?expand=0&rev=1
184 lines
6.4 KiB
Plaintext
184 lines
6.4 KiB
Plaintext
Name: monad-par
|
|
Version: 0.3.5
|
|
x-revision: 1
|
|
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.8
|
|
|
|
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
|
|
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
|
|
|
|
-- Needs MonadIO (in transformers, but not imported here)
|
|
Build-depends: base >= 4.9 && < 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
|
|
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 && < 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
|