rcu-0.2.3: rcu.cabal
name: rcu
category: Data
version: 0.2.3
license: BSD3
cabal-version: >= 1.22
license-file: LICENSE
author: Ted Cooper and Edward A. Kmett
maintainer: Edward A. Kmett <ekmett@gmail.com>, Ted Cooper <anthezium@gmail.com>
stability: provisional
homepage: http://github.com/ekmett/rcu/
bug-reports: http://github.com/ekmett/rcu/issues
copyright: Copyright (C) 2015 Edward A. Kmett, Theodore Rhys Cooper
build-type: Custom
tested-with: GHC == 7.10.3
, GHC == 8.0.2
, GHC == 8.2.2
, GHC == 8.4.3
, GHC == 8.6.1
synopsis: Read-Copy-Update for Haskell
description: Read-Copy-Update for Haskell.
extra-source-files:
examples/*.hs
CHANGELOG.markdown
README.markdown
HLint.hs
Warning.hs
source-repository head
type: git
location: git://github.com/ekmett/rcu.git
-- You can disable the doctests test suite with -f-test-doctests
flag test-doctests
default: True
manual: True
-- You can disable the doctests test suite with -f-test-doctests
flag test-hlint
default: True
manual: True
-- Include unstable and/or potentially incorrect implementations.
flag unstable
default: False
manual: True
-- Configure benchmarks to measure writer synchronize time at the expense of
-- increasing average update time.
flag measure-synchronize
default: False
manual: True
custom-setup
setup-depends:
base >= 4 && < 5,
Cabal,
cabal-doctest >= 1 && < 1.1
library
build-depends:
atomic-primops >= 0.8,
base >= 4.8 && < 5,
fail == 4.9.*,
ghc-prim >= 0.3,
parallel >= 3.2 && < 3.3,
primitive >= 0.6,
transformers >= 0.4 && < 0.6
exposed-modules:
Control.Concurrent.RCU.Class
Control.Concurrent.RCU.GC
Control.Concurrent.RCU.GC.Internal
Control.Concurrent.RCU.QSBR
Control.Concurrent.RCU.QSBR.Internal
c-sources: cbits/pause.c
include-dirs: cbits
install-includes:
pause.h
pause_impl.h
ghc-options: -Wall -fwarn-tabs -feager-blackholing
hs-source-dirs: src
default-language: Haskell2010
if flag(unstable)
hs-source-dirs: unstable
build-depends: stm >= 2.4.4 && < 2.6
exposed-modules:
Control.Concurrent.RCU.STM
Control.Concurrent.RCU.STM.Internal
executable MoveStringSTM
main-is: MoveString.hs
cpp-options: -DMODE=STM
if !flag(unstable)
buildable: False
else
build-depends: base, rcu, transformers
hs-source-dirs: examples
ghc-options: -threaded -Wall -feager-blackholing -fwarn-tabs "-with-rtsopts=-N -qa -qb -qm -s"
default-language: Haskell2010
executable MoveStringQSBR
main-is: MoveString.hs
cpp-options: -DMODE=QSBR
build-depends: base, rcu, transformers
hs-source-dirs: examples
ghc-options: -threaded -Wall -feager-blackholing -fwarn-tabs "-with-rtsopts=-N -qa -qb -qm -s"
default-language: Haskell2010
executable MoveStringGC
main-is: MoveString.hs
cpp-options: -DMODE=GC
build-depends: base, rcu, transformers
hs-source-dirs: examples
ghc-options: -threaded -Wall -feager-blackholing -fwarn-tabs "-with-rtsopts=-N -qa -qb -qm -s"
default-language: Haskell2010
benchmark IncCounterExperiment
main-is: IncCounterExperiment.hs
type: exitcode-stdio-1.0
build-depends:
base,
criterion >= 1.1,
ghc-prim,
primitive,
rcu,
transformers
hs-source-dirs: examples
ghc-options: -threaded -Wall -feager-blackholing -fwarn-tabs "-with-rtsopts=-N -qa -qb -qm -s"
default-language: Haskell2010
benchmark TimeSynchronizeQSBR
main-is: TimeSynchronize.hs
type: exitcode-stdio-1.0
cpp-options: -DMODE=QSBR -DBENCHMARKS
build-depends:
base >= 4.8 && < 5,
containers >= 0.5,
deepseq >= 1.4.1,
ghc-prim >= 0.3,
optparse-applicative >= 0.11,
primitive >= 0.6,
rcu,
rdtsc >= 1.3.0.1,
transformers >= 0.4 && < 0.6
if flag(measure-synchronize)
cpp-options: -DMODE=QSBR -DBENCHMARKS -DMEASURE_SYNCHRONIZE
c-sources: cbits/pause.c
include-dirs: cbits
install-includes:
pause.h
pause_impl.h
hs-source-dirs: examples
ghc-options: -threaded -Wall -fwarn-tabs -feager-blackholing -rtsopts "-with-rtsopts=-N -qa -qb -qm -s"
default-language: Haskell2010
benchmark TimeSynchronizeGC
main-is: TimeSynchronize.hs
type: exitcode-stdio-1.0
cpp-options: -DMODE=GC -DBENCHMARKS
build-depends:
base >= 4.8 && < 5,
containers >= 0.5,
deepseq >= 1.4.1,
ghc-prim >= 0.3,
optparse-applicative >= 0.11,
primitive >= 0.6,
rcu,
rdtsc >= 1.3.0.1,
transformers >= 0.4 && < 0.6
if flag(measure-synchronize)
cpp-options: -DMODE=GC -DBENCHMARKS -DMEASURE_SYNCHRONIZE
c-sources: cbits/pause.c
include-dirs: cbits
install-includes:
pause.h
pause_impl.h
hs-source-dirs: examples
ghc-options: -threaded -Wall -fwarn-tabs -feager-blackholing -rtsopts "-with-rtsopts=-N -qa -qb -qm -s"
default-language: Haskell2010
benchmark TimeSynchronizeQSBRUnbound
main-is: TimeSynchronize.hs
type: exitcode-stdio-1.0
cpp-options: -DMODE=QSBR -DBENCHMARKS -DUNBOUND
build-depends:
base >= 4.8 && < 5,
containers >= 0.5,
deepseq >= 1.4.1,
ghc-prim >= 0.3,
optparse-applicative >= 0.11,
primitive >= 0.6,
rcu,
time >= 1.5.0.1,
transformers >= 0.4 && < 0.6
if flag(measure-synchronize)
cpp-options: -DMODE=QSBR -DBENCHMARKS -DUNBOUND -DMEASURE_SYNCHRONIZE
c-sources: cbits/pause.c
include-dirs: cbits
install-includes:
pause.h
pause_impl.h
hs-source-dirs: examples
ghc-options: -threaded -Wall -fwarn-tabs -feager-blackholing -rtsopts "-with-rtsopts=-N -s"
default-language: Haskell2010
benchmark TimeSynchronizeGCUnbound
main-is: TimeSynchronize.hs
type: exitcode-stdio-1.0
cpp-options: -DMODE=GC -DBENCHMARKS -DUNBOUND
build-depends:
base >= 4.8 && < 5,
containers >= 0.5,
deepseq >= 1.4.1,
ghc-prim >= 0.3,
optparse-applicative >= 0.11,
primitive >= 0.6,
rcu,
time >= 1.5.0.1,
transformers >= 0.4 && < 0.6
if flag(measure-synchronize)
cpp-options: -DMODE=GC -DBENCHMARKS -DUNBOUND -DMEASURE_SYNCHRONIZE
c-sources: cbits/pause.c
include-dirs: cbits
install-includes:
pause.h
pause_impl.h
hs-source-dirs: examples
ghc-options: -threaded -Wall -fwarn-tabs -feager-blackholing -rtsopts "-with-rtsopts=-N -s"
default-language: Haskell2010
benchmark TimeSynchronizeQSBRSingleThread
main-is: TimeSynchronize.hs
type: exitcode-stdio-1.0
cpp-options: -DMODE=QSBR -DBENCHMARKS -DUNBOUND
build-depends:
base >= 4.8 && < 5,
containers >= 0.5,
deepseq >= 1.4.1,
ghc-prim >= 0.3,
optparse-applicative >= 0.11,
primitive >= 0.6,
rcu,
time >= 1.5.0.1,
transformers >= 0.4 && < 0.6
if flag(measure-synchronize)
cpp-options: -DMODE=QSBR -DBENCHMARKS -DUNBOUND -DMEASURE_SYNCHRONIZE
c-sources: cbits/pause.c
include-dirs: cbits
install-includes:
pause.h
pause_impl.h
hs-source-dirs: examples
ghc-options: -Wall -fwarn-tabs -feager-blackholing -rtsopts "-with-rtsopts=-s"
default-language: Haskell2010
benchmark TimeSynchronizeGCSingleThread
main-is: TimeSynchronize.hs
type: exitcode-stdio-1.0
cpp-options: -DMODE=GC -DBENCHMARKS -DUNBOUND
build-depends:
base >= 4.8 && < 5,
containers >= 0.5,
deepseq >= 1.4.1,
ghc-prim >= 0.3,
optparse-applicative >= 0.11,
primitive >= 0.6,
rcu,
time >= 1.5.0.1,
transformers >= 0.4 && < 0.6
if flag(measure-synchronize)
cpp-options: -DMODE=GC -DBENCHMARKS -DUNBOUND -DMEASURE_SYNCHRONIZE
c-sources: cbits/pause.c
include-dirs: cbits
install-includes:
pause.h
pause_impl.h
hs-source-dirs: examples
ghc-options: -Wall -fwarn-tabs -feager-blackholing -rtsopts "-with-rtsopts=-s"
default-language: Haskell2010
benchmark TimeSynchronizeQSBRPinned
main-is: TimeSynchronize.hs
type: exitcode-stdio-1.0
cpp-options: -DMODE=QSBR -DBENCHMARKS
build-depends:
base >= 4.8 && < 5,
containers >= 0.5,
deepseq >= 1.4.1,
ghc-prim >= 0.3,
optparse-applicative >= 0.11,
primitive >= 0.6,
rcu,
rdtsc >= 1.3.0.1,
transformers >= 0.4 && < 0.6
if flag(measure-synchronize)
cpp-options: -DMODE=QSBR -DBENCHMARKS -DMEASURE_SYNCHRONIZE
c-sources: cbits/pause.c
include-dirs: cbits
install-includes:
pause.h
pause_impl.h
hs-source-dirs: examples
ghc-options: -threaded -Wall -fwarn-tabs -feager-blackholing -rtsopts "-with-rtsopts=-N -qa -s"
default-language: Haskell2010
benchmark TimeSynchronizeGCPinned
main-is: TimeSynchronize.hs
type: exitcode-stdio-1.0
cpp-options: -DMODE=GC -DBENCHMARKS
build-depends:
base >= 4.8 && < 5,
containers >= 0.5,
deepseq >= 1.4.1,
ghc-prim >= 0.3,
optparse-applicative >= 0.11,
primitive >= 0.6,
rcu,
rdtsc >= 1.3.0.1,
transformers >= 0.4 && < 0.6
if flag(measure-synchronize)
cpp-options: -DMODE=GC -DBENCHMARKS -DMEASURE_SYNCHRONIZE
c-sources: cbits/pause.c
include-dirs: cbits
install-includes:
pause.h
pause_impl.h
hs-source-dirs: examples
ghc-options: -threaded -Wall -fwarn-tabs -feager-blackholing -rtsopts "-with-rtsopts=-N -qa -s"
default-language: Haskell2010
benchmark TimeSynchronizeQSBRnoGC
main-is: TimeSynchronize.hs
type: exitcode-stdio-1.0
cpp-options: -DMODE=QSBR -DBENCHMARKS
build-depends:
base >= 4.8 && < 5,
containers >= 0.5,
deepseq >= 1.4.1,
ghc-prim >= 0.3,
optparse-applicative >= 0.11,
primitive >= 0.6,
rcu,
rdtsc >= 1.3.0.1,
transformers >= 0.4 && < 0.6
if flag(measure-synchronize)
cpp-options: -DMODE=QSBR -DBENCHMARKS -DMEASURE_SYNCHRONIZE
c-sources: cbits/pause.c
include-dirs: cbits
install-includes:
pause.h
pause_impl.h
hs-source-dirs: examples
ghc-options: -threaded -Wall -fwarn-tabs -feager-blackholing -rtsopts "-with-rtsopts=-N -qa -qb -qm -A1g -I0 -s"
default-language: Haskell2010
benchmark TimeSynchronizeGCnoGC
main-is: TimeSynchronize.hs
type: exitcode-stdio-1.0
cpp-options: -DMODE=GC -DBENCHMARKS
build-depends:
base >= 4.8 && < 5,
containers >= 0.5,
deepseq >= 1.4.1,
ghc-prim >= 0.3,
optparse-applicative >= 0.11,
primitive >= 0.6,
rcu,
rdtsc >= 1.3.0.1,
transformers >= 0.4 && < 0.6
if flag(measure-synchronize)
cpp-options: -DMODE=GC -DBENCHMARKS -DMEASURE_SYNCHRONIZE
c-sources: cbits/pause.c
include-dirs: cbits
install-includes:
pause.h
pause_impl.h
hs-source-dirs: examples
ghc-options: -threaded -Wall -fwarn-tabs -feager-blackholing -rtsopts "-with-rtsopts=-N -qa -qb -qm -A1g -I0 -s"
default-language: Haskell2010
benchmark TimeSynchronizeQSBRnoGCPinned
main-is: TimeSynchronize.hs
type: exitcode-stdio-1.0
cpp-options: -DMODE=QSBR -DBENCHMARKS
build-depends:
base >= 4.8 && < 5,
containers >= 0.5,
deepseq >= 1.4.1,
ghc-prim >= 0.3,
optparse-applicative >= 0.11,
primitive >= 0.6,
rcu,
rdtsc >= 1.3.0.1,
transformers >= 0.4 && < 0.6
if flag(measure-synchronize)
cpp-options: -DMODE=QSBR -DBENCHMARKS -DMEASURE_SYNCHRONIZE
c-sources: cbits/pause.c
include-dirs: cbits
install-includes:
pause.h
pause_impl.h
hs-source-dirs: examples
ghc-options: -threaded -Wall -fwarn-tabs -feager-blackholing -rtsopts "-with-rtsopts=-N -qa -A1g -I0 -s"
default-language: Haskell2010
benchmark TimeSynchronizeGCnoGCPinned
main-is: TimeSynchronize.hs
type: exitcode-stdio-1.0
cpp-options: -DMODE=GC -DBENCHMARKS
build-depends:
base >= 4.8 && < 5,
containers >= 0.5,
deepseq >= 1.4.1,
ghc-prim >= 0.3,
optparse-applicative >= 0.11,
primitive >= 0.6,
rcu,
rdtsc >= 1.3.0.1,
transformers >= 0.4 && < 0.6
if flag(measure-synchronize)
cpp-options: -DMODE=GC -DBENCHMARKS -DMEASURE_SYNCHRONIZE
c-sources: cbits/pause.c
include-dirs: cbits
install-includes:
pause.h
pause_impl.h
hs-source-dirs: examples
ghc-options: -threaded -Wall -fwarn-tabs -feager-blackholing -rtsopts "-with-rtsopts=-N -qa -A1g -I0 -s"
default-language: Haskell2010
test-suite doctests
type: exitcode-stdio-1.0
main-is: doctests.hs
ghc-options: -Wall -threaded
hs-source-dirs: tests
default-language: Haskell2010
if !flag(test-doctests)
buildable: False
else
build-depends:
base >= 4.8,
doctest >= 0.11.1 && < 0.17,
parallel,
rcu
test-suite hlint
type: exitcode-stdio-1.0
main-is: hlint.hs
ghc-options: -w -threaded -rtsopts -with-rtsopts=-N
hs-source-dirs: tests
default-language: Haskell2010
if !flag(test-hlint)
buildable: False
else
build-depends:
base,
hlint >= 1.7