lvish-1.1.4: lvish.cabal
-- Initial lvish.cabal generated by cabal init. For further
-- documentation, see http://haskell.org/cabal/users-guide/
-- The name of the package.
name: lvish
-- The package version. See the Haskell package versioning policy (PVP)
-- for standards guiding when and how versions should be incremented.
-- http://www.haskell.org/haskellwiki/Package_versioning_policy
-- PVP summary: +-+------- breaking API changes
-- | | +----- non-breaking API additions
-- | | | +--- code changes with no API change
version: 1.1.4
-- Changelog:
-- 0.2 -- switch SLMap over to O(1) freeze
-- 1.0 -- initial public release
-- 1.0.0.2 -- minor docs polishing
-- 1.0.0.4 -- Bugfix for runParThenFreeze 's' param (issue #26).
-- 1.0.0.6 -- tighten up dependencies; remove unused flags; very minor doc fixes.
-- 1.1.0.2 -- add verifyFiniteJoin
-- 1.1.0.3 -- expose BulkRetry prototype
-- 1.1.1.0 -- expose logging routines
-- 1.1.1.5 -- various bugfixes
-- 1.1.2 -- bugfixes and small additions, work-around for -fbeta problems
-- 1.1.3 -- add fromPureLVar
-- 1.1.4 -- add SatMap
synopsis: Parallel scheduler, LVar data structures, and infrastructure to build more.
description:
.
A programming model based on monotonically-growing concurrent data structures.
.
As a starting point, look at the main module, "Control.LVish", as well as one of these papers:
.
* FHPC 2013: /LVars: lattice-based data structures for deterministic parallelism/ (<http://dl.acm.org/citation.cfm?id=2502326>).
.
* POPL 2014: /Freeze after writing: quasi-deterministic parallel programming with LVars/ (<http://www.cs.indiana.edu/~lkuper/papers/2013-lvish-draft.pdf>).
.
* PLDI 2014: /Taming the Parallel Effect Zoo: Extensible Deterministic Parallelism with LVish/ (<http://www.cs.indiana.edu/~rrnewton/papers/effectzoo-draft.pdf>).
.
If the haddocks are not building, here is a mirror:
<http://www.cs.indiana.edu/~rrnewton/haddock/lvish/>
.
Change Log:
.
* 1.0.0.6 - tighten up dependencies; remove unused flags; very minor doc fixes.
.
* 1.1.2 - many bugfixes, plus a new logging infrastructure, and verification of finite lattices
license: BSD3
license-file: LICENSE
author: Aaron Turon, Lindsey Kuper, Ryan Newton
maintainer: lindsey@composition.al
category: Concurrency
build-type: Simple
-- Constraint on the version of Cabal needed to build this package.
cabal-version: >=1.8
flag debug
description: Activate additional debug assertions, and printed output.
-- if DEBUGLVL env var is set to 1 or higher.
default: False
manual: True
flag chaselev
description: Use the Chase-Lev work-stealing deque
default: False
manual: True
flag getonce
description: Ensure that continuations of get run at most once
(by using extra synchronization)
default: False
manual: True
-- We won't really support this until LVish 2.0:
flag generic
description: Use (forthcoming) generic interfaces for Par monads.
default: False
manual: True
-- flag beta
-- description: These features are in beta and not fully supported yet.
-- default: True
Source-repository head
type: git
location: https://github.com/iu-parfunc/lvars
subdir: haskell/lvish
-- tag: release-lvish-1.0.0.6
--------------------------------------------------------------------------------
library
-- Modules exported by the library.
exposed-modules:
------------- End user modules ------------
Control.LVish
Control.LVish.DeepFrz
Data.LVar.Generic
Data.LVar.IVar
Data.LVar.IStructure
Data.LVar.PureSet
Data.LVar.PureMap
Data.LVar.SatMap
Data.LVar.SLSet
Data.LVar.SLMap
-------------------------------------------
-- Unsafe, only for debugging:
Control.LVish.Unsafe
-------------------------------------------
-- End users should NOT USE THESE.
-- These are only for developing new LVars:
Data.LVar.Internal.Pure
Data.LVar.Generic.Internal
Data.LVar.PureMap.Unsafe
Data.LVar.SLMap.Unsafe
Control.LVish.Internal
Control.LVish.DeepFrz.Internal
-- This is also not recommended for general use yet.
Data.Concurrent.SkipListMap
Data.LVar.CycGraph
-- TEMP: using a flag to control exports doesn't really work with Hackage currently:
-- if flag(beta)
-- exposed-modules:
-- -- Not quite ready for prime-time yet:
-- Data.LVar.NatArray
-- Data.LVar.NatArray.Unsafe
-- Data.LVar.MaxPosInt
-- Data.LVar.Counter
-- Data.LVar.AddRemoveSet
-- Data.LVar.PNCounter
-- -------------------------------------------
-- -- New / Experimental:
-- Data.LVar.Memo
-- Modules included in this library but not exported.
other-modules:
Data.UtilInternal
Data.LVar.Pair
Data.Concurrent.Bag
Data.Concurrent.Counter
Data.Concurrent.SNZI
Data.Concurrent.LinkedMap
Data.Concurrent.AlignedIORef
Control.Reagent
Control.LVish.SchedIdempotent
Control.LVish.SchedIdempotentInternal
Control.LVish.MonadToss
Control.LVish.Types
Control.LVish.Basics
Control.LVish.Logical
Control.LVish.Logging
-- Other library packages from which modules are imported.
build-depends: base >= 4.6 && <= 4.8,
deepseq >= 1.3,
lattices >= 1.2,
vector >=0.10,
atomic-primops >= 0.6,
random,
transformers,
ghc-prim,
async,
-- Used in NatArray:
bits-atomic, missing-foreign
if flag(generic)
cpp-options: -DGENERIC_PAR
-- build-depends: containers >= 0.5.4.0
build-depends: containers >= 0.5
build-depends: par-classes >= 1.0 && < 2.0,
par-collections >= 1.0 && < 2.0
-- par-transformers <= 2.0
else
build-depends: containers >= 0.5
ghc-options: -O2 -rtsopts
if flag(debug)
-- TEMP: depending on these for visualzing MemoCyc DAGs:
-- build-depends: fgl, graphviz, text
cpp-options: -DDEBUG_LVAR
-- cpp-options: -DDEBUG_MEMO
if flag(chaselev)
build-depends: chaselev-deque
cpp-options: -DCHASE_LEV
if flag(getonce)
cpp-options: -DGET_ONCE
--------------------------------------------------------------------------------
test-suite test-lvish
type: exitcode-stdio-1.0
main-is: Main.hs
hs-source-dirs: tests/ ./
other-modules: TestHelpers,
LVishAndIVar,
ArrayTests,
MemoTests,
LogicalTests,
PureMapTests,
SLMapTests,
SetTests,
MaxPosIntTests,
AddRemoveSetTests
ghc-options: -O2 -threaded -rtsopts -with-rtsopts=-N4
-- DUPLICATED: from above
build-depends: base >= 4.6 && <= 4.8,
deepseq >= 1.3,
containers >= 0.5,
lattices >= 1.2,
vector >=0.10,
atomic-primops >= 0.6,
random,
transformers,
ghc-prim,
async,
-- Used in NatArray:
bits-atomic, missing-foreign
if flag(generic)
cpp-options: -DGENERIC_PAR
build-depends: par-classes >= 1.0 && < 2.0,
par-collections >= 1.0 && < 2.0
-- END DUPLICATED
if flag(generic)
other-modules: GenericTests
build-depends: test-framework, test-framework-hunit, test-framework-th,
test-framework-quickcheck2, QuickCheck,
HUnit, time, text
-- And the self-dependency: TODO -- how to get this to work? [2013.10.10]
-- For now it gets compiled TWICE:
build-depends: lvish
if flag(debug)
-- TEMP: depending on these for visualzing MemoCyc DAGs:
-- build-depends: fgl, graphviz, text
cpp-options: -DDEBUG_LVAR
-- cpp-options: -DDEBUG_MEMO
if flag(chaselev)
build-depends: chaselev-deque
cpp-options: -DCHASE_LEV
if flag(getonce)
cpp-options: -DGET_ONCE
-- Atomic-primops fails when used by template-haskell/ghci on linux:
if impl(ghc < 7.7) && os(linux) {
buildable: False
}