atomic-primops 0.8.0.4 → 0.8.1
raw patch · 4 files changed
+67/−100 lines, 4 filesdep ~basesetup-changednew-uploaderPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
Dependency ranges changed: base
API changes (from Hackage documentation)
- Data.Atomics: readArrayElem :: MutableArray RealWorld a -> Int -> IO (Ticket a)
+ Data.Atomics: readArrayElem :: forall a. MutableArray RealWorld a -> Int -> IO (Ticket a)
- Data.Atomics.Internal: casIntArray# :: MutableByteArray# d -> Int# -> Int# -> Int# -> State# d -> (# State# d, Int# #)
+ Data.Atomics.Internal: casIntArray# :: MutableByteArray# d -> Int# -> Int# -> Int# -> State# d -> (# VoidRep, IntRep, State# d, Int# #)
- Data.Atomics.Internal: fetchAddIntArray# :: MutableByteArray# d -> Int# -> Int# -> State# d -> (# State# d, Int# #)
+ Data.Atomics.Internal: fetchAddIntArray# :: MutableByteArray# d -> Int# -> Int# -> State# d -> (# VoidRep, IntRep, State# d, Int# #)
Files
- CHANGELOG.md +59/−0
- Data/Atomics.hs +1/−1
- Setup.hs +2/−29
- atomic-primops.cabal +5/−70
+ CHANGELOG.md view
@@ -0,0 +1,59 @@+## 0.8.1+* Simplify `Setup.hs` to support `Cabal-2.0`/GHC 8.2+* Properly link `store_load_barrier` and friends against the GHC RTS on Windows+ when using GHC 8.2 or later++## 0.8.0.4+* Internal changes to support forthcoming GHC 8.0++## 0.8+* Implements additional fetch primops available in GHC 7.10++## 0.7+* This release adds support for GHC 7.10 and its expanded library of (now inline) primops.++## 0.6.1+* This is a good version to use for GHC 7.8.3. It includes portability and bug fixes+ and adds atomicModifyIORefCAS.++## 0.6.0.5+* fix for GHC 7.8++## 0.6.0.1+* minor ghc 7.8 fix++## 0.6+* add atomicModifyIORefCAS, and bump due to prev bugfixes++## 0.5.0.2+* IMPORTANT BUGFIXES - don't use earlier versions. They have been marked deprecated.++## 0.5+* Nix Data.Atomics.Counter.Foreign and the bits-atomic dependency.++## 0.4.1+* Add advance support for GHC 7.8++## 0.4+* Further internal changes, duplicate 'cas' routine well as barriers.+* Add `fetchAddByteArrayInt`+* Add an `Unboxed` counter variant that uses movable "ByteArray"s on the GHC heap.++## 0.3+* Major internal change. Duplicate the barrier code from the GHC RTS and thus+ enable support for executables that are NOT built with '-threaded'.++## 0.2.2.1+* Minor, add warning.++## 0.2.2+* Add more counters++## 0.2+* Critical bugfix and add Counter.++## 0.1.0.2+* disable profiling++## 0.1.0.0+* initial release
Data/Atomics.hs view
@@ -448,7 +448,7 @@ -- GHC 7.8 consistently exposes these symbols while linking: -#if MIN_VERSION_base(4,7,0) && !defined(mingw32_HOST_OS)+#if MIN_VERSION_base(4,7,0) && !(defined(mingw32_HOST_OS) && __GLASGOW_HASKELL__ < 802) #warning "Assuming that store_load_barrier and friends are defined in the GHC RTS." -- | Memory barrier implemented by the GHC rts (see SMP.h).
Setup.hs view
@@ -1,29 +1,2 @@--import Control.Monad (when)-import Language.Haskell.TH-import Distribution.Simple (defaultMainWithHooks, simpleUserHooks, UserHooks(postConf), Args)-import Distribution.Simple.Utils (cabalVersion)-import Distribution.Simple.LocalBuildInfo-import Distribution.Simple.Setup (ConfigFlags)-import Distribution.Version (Version(..))-import Distribution.PackageDescription (PackageDescription)-import Debug.Trace---- I couldn't figure out a way to do this check from the cabal file, so we drop down--- here to do it instead:-checkGoodVersion :: IO ()-checkGoodVersion =- if cabalVersion >= Version [1,17,0] []- then putStrLn (" [Setup.hs] This version of Cabal is ok for profiling: "++show cabalVersion)- else error (" [Setup.hs] This package should not be used in profiling mode with cabal version "++- show (versionBranch cabalVersion)++" < 1.17.0\n"++- " It will break, see cabal issue #1284")--main :: IO ()-main = do- let myPostConf :: Args -> ConfigFlags -> PackageDescription -> LocalBuildInfo -> IO ()- myPostConf _args confFlags _descr lbi =- when (withProfLib lbi)- checkGoodVersion- hooks = simpleUserHooks { postConf = myPostConf }- defaultMainWithHooks hooks+import Distribution.Simple+main = defaultMain
atomic-primops.cabal view
@@ -1,42 +1,16 @@ Name: atomic-primops-Version: 0.8.0.4+Version: 0.8.1 License: BSD3 License-file: LICENSE Author: Ryan Newton Maintainer: rrnewton@gmail.com Category: Data -- Portability: non-portabile (x86_64)-Build-type: Custom--- TODO: This requirement needs to be bumped to 1.17 when the latest cabal is--- released. This package triggers issue #1284:--- Cabal-version: >=1.18-Cabal-version: >=1.10--- Egad! Requiring cabal version 1.18 triggers a seemingly spurious failure on Mac OS:--- http://tester-lin.soic.indiana.edu:8080/job/Haskell-LockFree_master/JENKINS_GHC=7.6.3,label=macos/346/console--- So for now I'm backing off about the cabal requirement. Setup.hs will catch it later IF an early version--- of cabal is used WITH profiling mode.-+Build-type: Simple+Cabal-version: >=1.18 HomePage: https://github.com/rrnewton/haskell-lockfree/wiki Bug-Reports: https://github.com/rrnewton/haskell-lockfree/issues --- Version History:--- 0.1.0.0 -- initial release--- 0.1.0.2 -- disable profiling--- 0.2 -- Critical bugfix and add Counter.--- 0.2.2 -- Add more counters--- 0.2.2.1 -- Minor, add warning.--- 0.3 -- Major internal change. Duplicate GHC RTS barriers and support non -threaded.--- 0.4 -- Duplicate 'cas' as well as barriers. Add fetchAdd on ByteArray, Counter.Unboxed.--- 0.4.1 -- Add advance support for GHC 7.8--- 0.5 -- Nix Data.Atomics.Counter.Foreign and the bits-atomic dependency.--- 0.5.0.2 -- IMPORTANT Bugfix release.--- 0.6 -- add atomicModifyIORefCAS, and bump due to prev bugfixes--- 0.6.0.1 -- minor ghc 7.8 fix--- 0.6.0.5 -- fix for GHC 7.8--- 0.6.1 -- several bug fixes, mainly re: platform portability--- 0.8 -- support for GHC 7.10 and several new primops--- 0.8.0.4 -- support for GHC 8.0 series- Synopsis: A safe approach to CAS and other atomic ops in Haskell. Description:@@ -53,47 +27,8 @@ 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.- .- Changes in 0.3:- .- * Major internal change. Duplicate the barrier code from the GHC RTS and thus- enable support for executables that are NOT built with '-threaded'.- .- Changes in 0.4:- .- * Further internal changes, duplicate 'cas' routine well as barriers.- .- * Add `fetchAddByteArrayInt`- .- * Add an `Unboxed` counter variant that uses movable "ByteArray"s on the GHC heap.- .- Changes in 0.5:- .- * Remove dependency on bits-atomic unless a flag is turned on.- .- Changes in 0.5.0.2:- .- * IMPORTANT BUGFIXES - don't use earlier versions. They have been marked deprecated.- .- Changes in 0.6.1- .- * This is a good version to use for GHC 7.8.3. It includes portability and bug fixes- and adds atomicModifyIORefCAS.- .- Changes in 0.7:- .- * This release adds support for GHC 7.10 and its expanded library of (now inline) primops.- .- Changes in 0.8:- .- * Implements additional fetch primops available in GHC 7.10- .- Changes in 0.8.0.4:- .- * Internal changes to support forthcoming GHC 8.0 - -Extra-Source-Files: DEVLOG.md,+Extra-Source-Files: CHANGELOG.md, 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/Issue28.hs@@ -114,7 +49,7 @@ -- casMutVar# had a bug in GHC 7.2, thus we require GHC 7.4 or greater -- (base 4.5 or greater). We also need the "Any" kind.- build-depends: base >= 4.6.0.0 && < 4.10, ghc-prim, primitive+ build-depends: base >= 4.6.0.0 && < 4.11, ghc-prim, primitive -- TODO: Try to push support back to 7.0, but make it default to an implementation -- other than Unboxed.