chaselev-deque 0.5.0.3 → 0.5.0.5
raw patch · 3 files changed
+12/−19 lines, 3 filesdep −bits-atomicPVP ok
version bump matches the API change (PVP)
Dependencies removed: bits-atomic
API changes (from Hackage documentation)
Files
- Data/Concurrent/Deque/ChaseLev.hs +2/−8
- Data/Concurrent/Deque/ChaseLevUnboxed.hs +4/−8
- chaselev-deque.cabal +6/−3
Data/Concurrent/Deque/ChaseLev.hs view
@@ -32,8 +32,7 @@ import Control.Monad (when, unless, forM_) import Data.Atomics (storeLoadBarrier, writeBarrier, loadLoadBarrier)--- TODO: Use whichever counter is exported as the DEFAULT:-import Data.Atomics.Counter.Unboxed+import Data.Atomics.Counter (AtomicCounter, newCounter, readCounter, writeCounter, casCounter, readCounterForCAS, peekCTicket) -- Debugging:@@ -123,11 +122,6 @@ -- if i >= MV.length v -- then error (printf "ERROR: Out of bounds of top of vector index %d, vec length %d\n" i (MV.length v)) -- else MV.write v i x---- [2013.06.25] Note Issue5 is not affected by this:-{-# NOINLINE pushL #-}-{-# NOINLINE tryPopL #-}-{-# NOINLINE tryPopR #-} #endif @@ -172,7 +166,7 @@ ---------------------------------------- let len = MV.length oldarr elems = end - strt- -- putStrLn$ "Grow to size "++show (len+len)++", copying over "++show elems+ when dbg $ putStrLn$ "Grow to size "++show (len+len)++", copying over "++show elems newarr <- if dbg then nu (len + len) else -- Better errors:
Data/Concurrent/Deque/ChaseLevUnboxed.hs view
@@ -1,5 +1,7 @@ {-# LANGUAGE FlexibleInstances, NamedFieldPuns, CPP, ScopedTypeVariables, BangPatterns, MagicHash #-} +-- TEMPORARY: An experiment in duplicating ChaseLev.hs to support unboxed queue contents.+ -- | Chase-Lev work stealing Deques -- -- This implementation derives directly from the pseudocode in the 2005 SPAA paper:@@ -32,8 +34,7 @@ import Control.Monad (when, unless, forM_) import Data.Atomics (storeLoadBarrier, writeBarrier, loadLoadBarrier)--- TODO: Use whichever counter is exported as the DEFAULT:-import Data.Atomics.Counter.Unboxed+import Data.Atomics.Counter (AtomicCounter, newCounter, readCounter, writeCounter, casCounter, readCounterForCAS, peekCTicket) -- Debugging:@@ -125,11 +126,6 @@ -- if i >= MV.length v -- then error (printf "ERROR: Out of bounds of top of vector index %d, vec length %d\n" i (MV.length v)) -- else MV.write v i x---- [2013.06.25] Note Issue5 is not affected by this:-{-# NOINLINE pushL #-}-{-# NOINLINE tryPopL #-}-{-# NOINLINE tryPopR #-} #endif @@ -172,7 +168,7 @@ ---------------------------------------- let len = MV.length oldarr elems = end - strt- -- putStrLn$ "Grow to size "++show (len+len)++", copying over "++show elems+ when dbg $ putStrLn$ "Grow to size "++show (len+len)++", copying over "++show elems newarr <- if dbg then nu (len + len) else -- Better errors:
chaselev-deque.cabal view
@@ -1,5 +1,5 @@ Name: chaselev-deque-Version: 0.5.0.3+Version: 0.5.0.5 License: BSD3 License-file: LICENSE Author: Ryan R. Newton, Edward Kmett @@ -16,6 +16,7 @@ -- 0.4 -- bump to go along with atomic-primops 0.4 -- 0.5.0.2 -- bump to go along with MAJOR bugfix in atomic-primops 0.5.0.2 -- 0.5.0.3 -- minor bump to change abstract-deque dep.+-- 0.5.0.4 -- bugfix Homepage: https://github.com/rrnewton/haskell-lockfree/wiki Bug-Reports: https://github.com/rrnewton/haskell-lockfree/issues@@ -28,7 +29,7 @@ used for work-stealing. This implementation derives directly from the pseudocode in the 2005 SPAA paper: .- "http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.170.1097&rep=rep1&type=pdf"+ http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.170.1097&rep=rep1&type=pdf Extra-Source-Files: Test.hs RegressionTests/Issue5.hs RegressionTests/Issue5B.hs @@ -44,9 +45,11 @@ -- Data.Concurrent.Deque.ReactorDeque other-modules: Data.Concurrent.Deque.ChaseLevUnboxed - build-depends: base >= 4.4.0.0 && < 5, array, transformers, bits-atomic,+ build-depends: base >= 4.4.0.0 && < 5, array, transformers, abstract-deque >= 0.3 && < 0.4, vector, ghc-prim, atomic-primops >= 0.5.0.2+-- This was for reactordeque:+-- bits-atomic, build-depends: ghc-prim ghc-options: -O2 if flag(debug)