-- 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.1.3 -- 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.1 -- restrict exports for interm hackage release -- 1.1.1.3 -- hide modules more aggressively, not just by flag 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/ (). . * POPL 2014: /Freeze after writing: quasi-deterministic parallel programming with LVars/ (). . 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. 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: False flag beta description: These features are in beta and not fully supported yet. default: False -------------------------------------------------------------------------------- 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 Control.LVish.Internal Control.LVish.DeepFrz.Internal -- This is also not recommended for general use yet. Data.Concurrent.SkipListMap if flag(beta) other-modules: -- Not quite ready for prime-time yet: Data.LVar.NatArray Data.LVar.NatArray.Unsafe Data.LVar.MaxCounter Data.LVar.AddRemoveSet Data.LVar.PNCounter ------------------------------------------- -- New / Experimental: Data.LVar.Memo Data.LVar.CycGraph Data.LVar.PureMap.Unsafe Data.LVar.SLMap.Unsafe if flag(beta) && flag(newcontainers) other-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 if flag(beta) -- Used in NatArray: build-depends: bits-atomic, missing-foreign if flag(newcontainers) { build-depends: containers >= 0.5.3.2 } else { 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, MaxCounterTests -- ghc-options: -O2 -threaded -rtsopts -with-rtsopts=-N4 ghc-options: -O2 -rtsopts -- 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 if flag(beta) -- Used in NatArray: build-depends: 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