packages feed

lvish-1.0.0.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.0.0.2

-- Changelog:
-- 0.2     -- switch SLMap over to O(1) freeze
-- 1.0     -- initial public release
-- 1.0.0.2 -- minor docs polishing

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 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/>

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: True

flag quick
  description: Build some targets but not others.  Omit apps and tests.
  default: False

flag abstract-par
  description: If enabled, provide instances for generic par operations using the establish type classes.
  default: False

flag getonce
  description: Ensure that continuations of get run at most once 
               (by using extra synchronization)
  default: False

--------------------------------------------------------------------------------
library
  Source-repository head
    type:     git
    location: https://github.com/iu-parfunc/lvars
    subdir:   haskell/lvish
    tag:      release-lvish-1.0.0.2

  -- 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
                    -------------------------------------------
                    -- End users should NOT USE THESE.
                    -- These are only for developing new LVars:
                    Data.LVar.Internal.Pure
                    Data.LVar.Generic.Internal
                    Control.LVish.SchedIdempotent
                    Control.LVish.Internal
                    Control.LVish.DeepFrz.Internal                    
                    
  -- 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.SkipListMap
                    Data.Concurrent.AlignedIORef
                    Control.Reagent
                    Control.LVish.SchedIdempotentInternal 
                    Control.LVish.MonadToss
                    Control.LVish.Types
                    -- Not ready for prime-time yet:
                    Data.LVar.NatArray
                    Data.LVar.MaxCounter

  -- Other library packages from which modules are imported.
  build-depends: base ==4.6.*, deepseq ==1.3.*, containers ==0.5.*, lattices ==1.2.*, 
                 split ==0.2.*, bytestring ==0.10.*, time ==1.4.*, rdtsc ==1.3.*, vector ==0.10.*, 
                 parallel ==3.2.*, async ==2.0.*,
                 atomic-primops, hashable, transformers, random, 
                 chaselev-deque, 
                 bits-atomic, missing-foreign,
                 ghc-prim
  -- TEMP:
  build-depends: HUnit, test-framework, test-framework-hunit, test-framework-th,
                 bytestring-mmap
  ghc-options: -O2 -rtsopts
  if flag(abstract-par) 
    cpp-options: -DUSE_ABSTRACT_PAR
    build-depends:  abstract-par >=0.4
                    -- monad-par-extras >=0.4
  if flag(debug)
     cpp-options: -DDEBUG_LVAR
  if flag(chaselev)
     cpp-options: -DCHASE_LEV
  if flag(getonce)
     cpp-options: -DGET_ONCE


--------------------------------------------------------------------------------
-- TODO: New tests here:
test-suite test-lvish
    type:	    exitcode-stdio-1.0
    main-is:        unit-tests.hs
    other-modules:  TestHelpers    
                    
    ghc-options: 		-O2 -threaded -rtsopts -with-rtsopts=-N4
    build-depends:   base ==4.6.*, containers ==0.5.*, transformers, atomic-primops, chaselev-deque, 
                     random, deepseq, vector, bits-atomic, missing-foreign, time, ghc-prim, HUnit, test-framework, 
                     test-framework-hunit, test-framework-th
    if flag(debug)
       cpp-options: -DDEBUG_LVAR
    if flag(chaselev)
       cpp-options: -DCHASE_LEV
    if flag(getonce)
       cpp-options: -DGET_ONCE