Name: monad-par Version: 0.3.5 x-revision: 2 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 , Ryan Newton 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 && < 2.3 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