diff options
author | Robert Vollmert <rob@vllmrt.net> | 2019-07-15 10:50:58 +0200 |
---|---|---|
committer | Timothy Sample <samplet@ngyro.com> | 2019-08-07 22:05:31 -0400 |
commit | efb96749a2af02d59f341db033e87082f9289705 (patch) | |
tree | f5398683da6ed99e51613a629fbc51be595df1cc /gnu/packages/haskell-xyz.scm | |
parent | 79fcc5e59bc8cd6726937be291964477fe673e3a (diff) | |
download | guix-efb96749a2af02d59f341db033e87082f9289705.tar.gz |
gnu: Add ghc-concurrent-extra.
* gnu/packages/haskell-xyz.scm (ghc-concurrent-extra): New variable.
Diffstat (limited to 'gnu/packages/haskell-xyz.scm')
-rw-r--r-- | gnu/packages/haskell-xyz.scm | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/gnu/packages/haskell-xyz.scm b/gnu/packages/haskell-xyz.scm index 17736c9365..a03ea4c88c 100644 --- a/gnu/packages/haskell-xyz.scm +++ b/gnu/packages/haskell-xyz.scm @@ -18,11 +18,64 @@ (define-module (gnu packages haskell-xyz) #:use-module (gnu packages) + #:use-module (gnu packages haskell) + #:use-module (gnu packages haskell-check) #:use-module (guix build-system haskell) #:use-module (guix download) #:use-module ((guix licenses) #:prefix license:) #:use-module (guix packages)) +(define-public ghc-concurrent-extra + (package + (name "ghc-concurrent-extra") + (version "0.7.0.12") + (source + (origin + (method url-fetch) + (uri (string-append "https://hackage.haskell.org/package/" + "concurrent-extra/concurrent-extra-" + version ".tar.gz")) + (sha256 + (base32 + "1y8xk460fvnw0idzdiylmm874sjny4q9jxb1js9fjz8lw2wns3h4")))) + (build-system haskell-build-system) + (arguments + ;; XXX: The ReadWriteLock 'stressTest' fails. + `(#:tests? #f)) + (inputs + `(("ghc-unbounded-delays" ,ghc-unbounded-delays))) + (native-inputs + `(("ghc-async" ,ghc-async) + ("ghc-hunit" ,ghc-hunit) + ("ghc-random" ,ghc-random) + ("ghc-test-framework" ,ghc-test-framework) + ("ghc-test-framework-hunit" ,ghc-test-framework-hunit))) + (home-page "https://github.com/basvandijk/concurrent-extra") + (synopsis "Extra concurrency primitives") + (description "This Haskell library offers (among other things) the +following selection of synchronisation primitives: + +@itemize +@item @code{Broadcast}: Wake multiple threads by broadcasting a value. +@item @code{Event}: Wake multiple threads by signalling an event. +@item @code{Lock}: Enforce exclusive access to a resource. Also known +as a binary semaphore or mutex. The package additionally provides an +alternative that works in the STM monad. +@item @code{RLock}: A lock which can be acquired multiple times by the +same thread. Also known as a reentrant mutex. +@item @code{ReadWriteLock}: Multiple-reader, single-writer locks. Used +to protect shared resources which may be concurrently read, but only +sequentially written. +@item @code{ReadWriteVar}: Concurrent read, sequential write variables. +@end itemize + +Please consult the API documentation of the individual modules for more +detailed information. + +This package was inspired by the concurrency libraries of Java and +Python.") + (license license:bsd-3))) + (define-public ghc-language-glsl (package (name "ghc-language-glsl") |