-- 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 x-revision: 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 -- 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/ (). . * POPL 2014: /Freeze after writing: quasi-deterministic parallel programming with LVars/ (). . * PLDI 2014: /Taming the Parallel Effect Zoo: Extensible Deterministic Parallelism with LVish/ (). . If the haddocks are not building, here is a mirror: . 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 . * 1.1.4 - GHC 7.8.3 compatibility. 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.9, 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 }