mirror of
https://github.com/barrucadu/dejafu.git
synced 2024-11-30 15:15:19 +03:00
121 lines
4.6 KiB
Plaintext
Executable File
121 lines
4.6 KiB
Plaintext
Executable File
-- Initial monad-conc.cabal generated by cabal init. For further
|
|
-- documentation, see http://haskell.org/cabal/users-guide/
|
|
|
|
name: concurrency
|
|
version: 1.1.2.0
|
|
synopsis: Typeclasses, functions, and data types for concurrency and STM.
|
|
|
|
description:
|
|
A typeclass abstraction over much of Control.Concurrent (and some
|
|
extras!). If you're looking for a general introduction to Haskell
|
|
concurrency, you should check out the excellent Parallel and
|
|
Concurrent Programming in Haskell, by Simon Marlow. If you are
|
|
already familiar with concurrent Haskell, just change all the
|
|
imports from Control.Concurrent.* to Control.Concurrent.Classy.* and
|
|
fix the type errors.
|
|
.
|
|
A brief list of supported functionality:
|
|
.
|
|
* Threads: the @forkIO*@ and @forkOn*@ functions, although bound
|
|
threads are not supported.
|
|
.
|
|
* Getting and setting capablities.
|
|
.
|
|
* Yielding and delaying.
|
|
.
|
|
* Mutable state: STM, @MVar@, and @IORef@.
|
|
.
|
|
* Atomic compare-and-swap for @IORef@.
|
|
.
|
|
* Exceptions.
|
|
.
|
|
* All of the data structures in Control.Concurrent.* and
|
|
Control.Concurrent.STM.* have typeclass-abstracted equivalents.
|
|
.
|
|
* A reimplementation of the
|
|
<https://hackage.haskell.org/package/async async> package,
|
|
providing a higher-level interface over threads, allowing users to
|
|
conveniently run @MonadConc@ operations asynchronously and wait
|
|
for their results.
|
|
.
|
|
This is quite a rich set of functionality, although it is not
|
|
complete. If there is something else you need, file an issue!
|
|
.
|
|
This used to be part of dejafu, but with the dejafu-0.4.0.0 release,
|
|
it was split out into its own package.
|
|
.
|
|
== Why this and not something else?
|
|
.
|
|
* Why not base: like lifted-base, concurrency uses typeclasses to
|
|
make function types more generic. This automatically eliminates
|
|
calls to `lift` in many cases, resulting in clearer and simpler
|
|
code.
|
|
.
|
|
* Why not lifted-base: fundamentally, lifted-base is still using
|
|
actual threads and actual mutable variables. When using a
|
|
concurrency-specific typeclass, this isn't necessarily the case.
|
|
The dejafu library provides non-IO-based implementations to allow
|
|
testing concurrent programs.
|
|
.
|
|
* Why not IOSpec: IOSpec provides many of the operations this
|
|
library does, however it uses a free monad to do so, which has
|
|
extra allocation overhead. Furthermore, it does not expose enough
|
|
of the internals in order to accurately test real-execution
|
|
semantics, such as relaxed memory.
|
|
.
|
|
See the <https://github.com/barrucadu/dejafu README> for more
|
|
details.
|
|
|
|
homepage: https://github.com/barrucadu/dejafu
|
|
license: MIT
|
|
license-file: LICENSE
|
|
author: Michael Walker
|
|
maintainer: mike@barrucadu.co.uk
|
|
-- copyright:
|
|
category: Concurrency
|
|
build-type: Simple
|
|
-- extra-source-files:
|
|
cabal-version: >=1.10
|
|
|
|
source-repository head
|
|
type: git
|
|
location: https://github.com/barrucadu/dejafu.git
|
|
|
|
source-repository this
|
|
type: git
|
|
location: https://github.com/barrucadu/dejafu.git
|
|
tag: concurrency-1.1.2.0
|
|
|
|
library
|
|
exposed-modules: Control.Monad.Conc.Class
|
|
, Control.Monad.STM.Class
|
|
|
|
, Control.Concurrent.Classy
|
|
, Control.Concurrent.Classy.Async
|
|
, Control.Concurrent.Classy.Chan
|
|
, Control.Concurrent.Classy.CRef
|
|
, Control.Concurrent.Classy.MVar
|
|
, Control.Concurrent.Classy.QSem
|
|
, Control.Concurrent.Classy.QSemN
|
|
, Control.Concurrent.Classy.STM
|
|
, Control.Concurrent.Classy.STM.TVar
|
|
, Control.Concurrent.Classy.STM.TMVar
|
|
, Control.Concurrent.Classy.STM.TChan
|
|
, Control.Concurrent.Classy.STM.TQueue
|
|
, Control.Concurrent.Classy.STM.TBQueue
|
|
, Control.Concurrent.Classy.STM.TArray
|
|
|
|
-- other-modules:
|
|
-- other-extensions:
|
|
build-depends: base >=4.8 && <5
|
|
, array >=0.5 && <0.6
|
|
, atomic-primops >=0.8 && <0.9
|
|
, exceptions >=0.7 && <0.9
|
|
, monad-control >=1.0 && <1.1
|
|
, mtl >=2.2 && <2.3
|
|
, stm >=2.4 && <2.5
|
|
, transformers >=0.4 && <0.6
|
|
-- hs-source-dirs:
|
|
default-language: Haskell2010
|
|
ghc-options: -Wall
|