git.iko.soy/distributed-process
on master help sign in
Have d-p-test build with ghc-7.4.2.
a909750Facundo Domínguez
distributed-process.cabal+10−3
@@ -44,7 +44,6 @@ flag prof
44Library
44Library
45 Build-Depends: base >= 4.4 && < 5,
45 Build-Depends: base >= 4.4 && < 5,
46 binary >= 0.5 && < 0.8,
46 binary >= 0.5 && < 0.8,
47− deepseq >= 1.3.0.1 && < 1.4,
48 hashable >= 1.2.0.5 && < 1.3,
47 hashable >= 1.2.0.5 && < 1.3,
49 network-transport >= 0.3 && < 0.4,
48 network-transport >= 0.3 && < 0.4,
50 stm >= 2.4 && < 2.5,
49 stm >= 2.4 && < 2.5,
@@ -52,7 +51,6 @@ Library
52 mtl >= 2.0 && < 2.2,
51 mtl >= 2.0 && < 2.2,
53 data-accessor >= 0.2 && < 0.3,
52 data-accessor >= 0.2 && < 0.3,
54 bytestring >= 0.9 && < 0.11,
53 bytestring >= 0.9 && < 0.11,
55− containers >= 0.4 && < 0.6,
56 old-locale >= 1.0 && < 1.1,
54 old-locale >= 1.0 && < 1.1,
57 time >= 1.2 && < 1.5,
55 time >= 1.2 && < 1.5,
58 random >= 1.0 && < 1.1,
56 random >= 1.0 && < 1.1,
@@ -99,8 +97,17 @@ Library
99 BangPatterns
97 BangPatterns
100 ghc-options: -Wall
98 ghc-options: -Wall
101 HS-Source-Dirs: src
99 HS-Source-Dirs: src
100+ if impl(ghc <= 7.4.2)
101+ Build-Depends: containers >= 0.4 && < 0.5,
102+ deepseq == 1.3.0.0
103+ else
104+ Build-Depends: containers >= 0.4 && < 0.6,
105+ deepseq >= 1.3.0.1 && < 1.4
102 if flag(th)
106 if flag(th)
107+ if impl(ghc <= 7.4.2)
108+ Build-Depends: template-haskell >= 2.7 && < 2.8
109+ else
103− Build-Depends: template-haskell >= 2.6 && < 2.9
110+ Build-Depends: template-haskell >= 2.6 && < 2.9
104 Exposed-modules: Control.Distributed.Process.Internal.Closure.TH
111 Exposed-modules: Control.Distributed.Process.Internal.Closure.TH
105 CPP-Options: -DTemplateHaskellSupport
112 CPP-Options: -DTemplateHaskellSupport
106
113
src/Control/Distributed/Process/Management/Table.hs+5−5
@@ -49,8 +49,8 @@ import Control.Distributed.Process.Serializable (Serializable)
49import Control.Monad.IO.Class (liftIO)
49import Control.Monad.IO.Class (liftIO)
50import Data.Accessor (Accessor, accessor, (^=), (^:))
50import Data.Accessor (Accessor, accessor, (^=), (^:))
51import Data.Binary (Binary)
51import Data.Binary (Binary)
52−import Data.Map.Strict (Map)
52+import Data.Map (Map)
53−import qualified Data.Map.Strict as Map
53+import qualified Data.Map as Map
54import Data.Typeable (Typeable)
54import Data.Typeable (Typeable)
55
55
56import GHC.Generics
56import GHC.Generics
@@ -181,7 +181,7 @@ startTableCoordinator fork = run Map.empty
181 , _entries = Map.empty
181 , _entries = Map.empty
182 }
182 }
183 (pid, _) <- spawnSup $ tableHandler initState
183 (pid, _) <- spawnSup $ tableHandler initState
184− return $ (pid, Map.insert mxId pid tblMap)
184+ return $ (pid, mxId `seq` pid `seq` Map.insert mxId pid tblMap)
185
185
186 spawnSup proc = do
186 spawnSup proc = do
187 us <- getSelfPid
187 us <- getSelfPid
@@ -204,8 +204,8 @@ tableHandler state = do
204 where
204 where
205 handleTableRequest _ Delete = return Nothing
205 handleTableRequest _ Delete = return Nothing
206 handleTableRequest st Purge = return $ Just $ (entries ^= Map.empty) $ st
206 handleTableRequest st Purge = return $ Just $ (entries ^= Map.empty) $ st
207− handleTableRequest st (Clear k) = return $ Just $ (entries ^: Map.delete k) $ st
207+ handleTableRequest st (Clear k) = return $ Just $ (entries ^: (k `seq` Map.delete k)) $ st
208− handleTableRequest st (Set k v) = return $ Just $ (entries ^: Map.insert k v) st
208+ handleTableRequest st (Set k v) = return $ Just $ (entries ^: (k `seq` v `seq` Map.insert k v)) st
209 handleTableRequest st (Get k c) = getEntry k c st >> return (Just st)
209 handleTableRequest st (Get k c) = getEntry k c st >> return (Just st)
210
210
211getEntry :: String
211getEntry :: String