packages feed

atomic-primops-0.8.5: atomic-primops.cabal

Cabal-version:       3.0
Name:                atomic-primops
Version:             0.8.5
License:             BSD-3-Clause
License-file:        LICENSE
Author:              Ryan Newton
Maintainer:          rrnewton@gmail.com
Category:            Data
-- Portability:         non-portabile (x86_64)
Build-type:          Simple
tested-with:         GHC == 8.4.3, GHC == 8.2.2, GHC == 8.0.2, GHC == 7.10.3
HomePage: https://github.com/rrnewton/haskell-lockfree/wiki
Bug-Reports: https://github.com/rrnewton/haskell-lockfree/issues

Synopsis: A safe approach to CAS and other atomic ops in Haskell.

Description:
  After GHC 7.4 a new `casMutVar#` primop became available, but it's
  difficult to use safely, because pointer equality is a highly
  unstable property in Haskell.  This library provides a safer method
  based on the concept of "Tickets".
 .
  Also, this library uses the "foreign primop" capability of GHC to
  add access to other variants that may be of
  interest, specifically, compare and swap inside an array.
 .
  Note that as of GHC 7.8, the relevant primops have been included in GHC itself.
  This library is engineered to work pre- and post-GHC-7.8, while exposing the
  same interface.

Extra-Source-Files:  DEVLOG.md
                     testing/Test.hs testing/test-atomic-primops.cabal testing/ghci-test.hs
                     testing/Makefile testing/CommonTesting.hs testing/Counter.hs testing/CounterCommon.hs testing/hello.hs testing/Fetch.hs
                     testing/Issue28.hs
                     testing/TemplateHaskellSplices.hs
                     testing/Raw781_test.hs
extra-doc-files:     CHANGELOG.md

Flag debug
    Description: Enable extra internal checks.
    Default: False

Library
  Default-Language: Haskell2010
  exposed-modules:   Data.Atomics
                     Data.Atomics.Internal
                     Data.Atomics.Counter
  ghc-options: -O2 -funbox-strict-fields
  ghc-options: -Wall

  build-depends:     base >= 4.8 && < 5
                   , ghc-prim
                   , primitive

  if impl(ghc >= 9.9)
    cmm-sources: cbits/atomics.cmm

  if os(windows) {
    Include-Dirs:     cbits
    C-Sources:        cbits/RtsDup.c
  }
  CC-Options:       -Wall

  if flag(debug)
    cpp-options: -DDEBUG_ATOMICS

Source-Repository head
    Type:         git
    Location:     https://github.com/rrnewton/haskell-lockfree/
    Subdir:       atomic-primops