LVars are monotonically growing, lattice-based data structures for deterministic parallel programming. LVish is a Haskell library for programming with LVars. This repository contains toy examples of programs that use LVars and LVish, as well as a few that don't use LVars but are there for illustrative purposes.
The code has been tested to build against GHC 7.8.1, 7.8.2, and 7.8.3. You should probably use one of those.
You can install LVish
from Hackage by running
cabal install lvish
(perhaps preceded by cabal update
). That will
install the most recently released version, which, as of this writing,
is lvish-1.1.4.
If you want the newest, unreleased version of LVish -- which has more cool features than the 1.x releases do -- you'll have to install it from git. I recommend the following:
- Make sure you've pulled the
lvars
andconcurrent-skiplist
submodules. Something likegit submodule update --init
should work. (lvars
contains the LVish library and some of its friends;concurrent-skiplist
is one of LVish's dependencies.) - Go into the
2.0
subdirectory. - Create a new sandbox in that directory with
cabal sandbox init
. - Run
cabal install -j ../lvars/haskell/par-classes/ ../lvars/haskell/par-collections/ ../lvars/haskell/par-transformers/ ../concurrent-skiplist/ happy alex
. - Run
cabal install ../lvars/haskell/lvish/
and cross your fingers.
Depending on whether you have lvish-1.1.4 or some flavor of lvish-2.0 installed, go here or here. Enjoy!
The usual caveats about research code apply: Parts of it are broken. The API will change. It will eat your laundry.