name: concurrent-machines
version: 0.3.0
synopsis: Concurrent networked stream transducers
description: A simple use-case for this library is to run the stages
of a pipelined streaming computation concurrently. If
data is streaming through multiple processing stages, you
might build a machine like
.
@
step1 >~> step2 >~> step3
@
.
The @>~>@ operator connects the machines on
either side with a one-element buffer. This means that
data is pulled from upstream sources eagerly (perhaps
pulling one more value than will be consumed by
downstream), but it also means that each stage can be
working simultaneously, increasing throughput of the
entire pipeline.
.
A few small examples are available in the @examples@
directory of the source repository.
license: BSD3
license-file: LICENSE
author: Anthony Cowley
maintainer: acowley@gmail.com
copyright: Copyright (C) 2014 Anthony Cowley
category: Concurrency, Control
build-type: Simple
extra-source-files: README.md, CHANGELOG.md
cabal-version: >=1.10
tested-with: GHC == 7.10.3, GHC == 8.0.1
source-repository head
type: git
location: http://github.com/acowley/concurrent-machines.git
flag splot
description: Build test with splot visual output
default: False
manual: True
library
exposed-modules: Data.Machine.Concurrent,
Data.Machine.Regulated,
Data.Machine.Concurrent.AsyncStep,
Data.Machine.Concurrent.Buffer,
Data.Machine.Concurrent.Fanout,
Data.Machine.Concurrent.Scatter,
Data.Machine.Concurrent.Tee,
Data.Machine.Concurrent.Wye
-- other-modules:
other-extensions: GADTs, FlexibleContexts, RankNTypes, TupleSections,
ScopedTypeVariables
build-depends: base >= 4.8 && < 4.10,
monad-control >= 1.0 && < 1.1,
transformers >= 0.4 && < 0.6,
time >= 1.4 && < 1.9,
containers >= 0.5 && < 0.6,
transformers-base >= 0.4 && < 0.6,
machines >= 0.5 && < 0.7,
async >= 2.0.1 && < 2.2,
lifted-async >= 0.1 && < 0.10,
semigroups >= 0.8 && < 0.19
hs-source-dirs: src
default-language: Haskell2010
ghc-options: -Wall
test-suite tests
type: exitcode-stdio-1.0
hs-source-dirs: tests
main-is: AllTests.hs
ghc-options: -Wall -O0
default-language: Haskell2010
build-depends: base >= 4.6 && < 5, concurrent-machines, machines,
tasty, tasty-hunit, transformers, time
-- This is a nice modification of the tests that generates plots for
-- visualizing the execution of parallel processes using the splot
-- tool. That program requires cairo, so the test is disabled by
-- default.
test-suite splotime
type: exitcode-stdio-1.0
if flag(splot)
buildable: True
else
buildable: False
hs-source-dirs: tests
main-is: SPlotTests.hs
ghc-options: -Wall -O0
default-language: Haskell2010
if flag(splot)
build-depends: base >= 4.6 && < 5, concurrent-machines, machines,
process, tasty, tasty-hunit, transformers, time
benchmark fanout
type: exitcode-stdio-1.0
hs-source-dirs: examples
main-is: ExampleFanout.hs
build-depends: base >= 4.8 && < 5, time, machines, concurrent-machines
default-language: Haskell2010
ghc-options: -threaded "-with-rtsopts=-N2"