lvish-1.1.2: 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.2
-- 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
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 "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>).
.
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
flag chaselev
description: Use the Chase-Lev work-stealing deque
default: False
-- flag newcontainers
-- description: Use a pre-release version of containers to enable splitting.
-- default: False
flag getonce
description: Ensure that continuations of get run at most once
(by using extra synchronization)
default: False
-- We won't really support this until LVish 2.0:
flag generic
description: Use (forthcoming) generic interfaces for Par monads.
default: True
-- flag beta
-- description: These features are in beta and not fully supported yet.
-- default: True
--------------------------------------------------------------------------------
library
Source-repository head
type: git
location: https://github.com/iu-parfunc/lvars
subdir: haskell/lvish
-- tag: release-lvish-1.0.0.6
-- 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.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
-- 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
-- Data.LVar.CycGraph
-- if flag(beta) && flag(newcontainers)
-- exposed-modules:
-- Control.LVish.BulkRetry
-- 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.4,
random,
transformers,
ghc-prim,
async,
-- Used in NatArray:
bits-atomic, missing-foreign
-- if flag(newcontainers) { build-depends: containers >= 0.5.3.2 }
-- else { build-depends: containers >= 0.5 }
build-depends: containers >= 0.5
if flag(generic)
cpp-options: -DGENERIC_PAR
build-depends: par-classes >= 1.0 && < 2.0,
par-collections >= 1.0 && < 2.0
-- par-transformers <= 2.0
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.4,
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