concurrency 1.7.0.0 → 1.8.0.0
raw patch · 6 files changed
+43/−6 lines, 6 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
+ Control.Monad.Conc.Class: instance Control.Monad.Fail.MonadFail m => Control.Monad.Fail.MonadFail (Control.Monad.Conc.Class.IsConc m)
+ Control.Monad.STM.Class: instance Control.Monad.Fail.MonadFail m => Control.Monad.Fail.MonadFail (Control.Monad.STM.Class.IsSTM m)
- Control.Concurrent.Classy.QSem: newQSem :: MonadConc m => Int -> m (QSem m)
+ Control.Concurrent.Classy.QSem: newQSem :: (MonadConc m, MonadFail m) => Int -> m (QSem m)
- Control.Concurrent.Classy.QSemN: newQSemN :: MonadConc m => Int -> m (QSemN m)
+ Control.Concurrent.Classy.QSemN: newQSemN :: (MonadConc m, MonadFail m) => Int -> m (QSemN m)
Files
- CHANGELOG.rst +25/−0
- Control/Concurrent/Classy/QSem.hs +2/−1
- Control/Concurrent/Classy/QSemN.hs +2/−1
- Control/Monad/Conc/Class.hs +6/−1
- Control/Monad/STM/Class.hs +6/−1
- concurrency.cabal +2/−2
CHANGELOG.rst view
@@ -7,6 +7,31 @@ .. _PVP: https://pvp.haskell.org/ +1.8.0.0 (2019-10-04)+--------------------++* Git: :tag:`concurrency-1.8.0.0`+* Hackage: :hackage:`concurrency-1.8.0.0`++Added+~~~~~++* ``MonadFail`` instances for ``Control.Monad.Conc.Class.IsConc`` and+ ``Control.Monad.STM.IsSTM``.++Changed+~~~~~~~++* Added ``MonadFail`` constraints to+ ``Control.Concurrent.Classy.QSem.newQSem`` and+ ``Control.Concurrent.Classy.QSemN.newQSemN``.++Miscellaneous+~~~~~~~~~~~~~++* Fixed a compilation error with GHC 8.8++ 1.7.0.0 (2019-03-24) --------------------
Control/Concurrent/Classy/QSem.hs view
@@ -17,6 +17,7 @@ import Control.Concurrent.Classy.QSemN import Control.Monad.Conc.Class (MonadConc)+import Control.Monad.Fail (MonadFail) -- | @QSem@ is a quantity semaphore in which the resource is acquired -- and released in units of one. It provides guaranteed FIFO ordering@@ -35,7 +36,7 @@ -- quantity must be at least 0. -- -- @since 1.0.0.0-newQSem :: MonadConc m => Int -> m (QSem m)+newQSem :: (MonadConc m, MonadFail m) => Int -> m (QSem m) newQSem initial | initial < 0 = fail "newQSem: Initial quantity mus tbe non-negative." | otherwise = QSem <$> newQSemN initial
Control/Concurrent/Classy/QSemN.hs view
@@ -20,6 +20,7 @@ import Control.Monad.Catch (mask_, onException, uninterruptibleMask_) import Control.Monad.Conc.Class (MonadConc)+import Control.Monad.Fail (MonadFail) import Data.Maybe -- | 'QSemN' is a quantity semaphore in which the resource is aqcuired@@ -39,7 +40,7 @@ -- The initial quantity must be at least 0. -- -- @since 1.0.0.0-newQSemN :: MonadConc m => Int -> m (QSemN m)+newQSemN :: (MonadConc m, MonadFail m) => Int -> m (QSemN m) newQSemN initial | initial < 0 = fail "newQSemN: Initial quantity must be non-negative" | otherwise = QSemN <$> newMVar (initial, [], [])
Control/Monad/Conc/Class.hs view
@@ -4,6 +4,7 @@ {-# LANGUAGE PolyKinds #-} {-# LANGUAGE RankNTypes #-} {-# LANGUAGE ScopedTypeVariables #-}+{-# LANGUAGE StandaloneDeriving #-} {-# LANGUAGE TypeFamilies #-} -- |@@ -12,7 +13,7 @@ -- License : MIT -- Maintainer : Michael Walker <mike@barrucadu.co.uk> -- Stability : experimental--- Portability : CPP, FlexibleContexts, PolyKinds, RankNTypes, ScopedTypeVariables, TypeFamilies+-- Portability : CPP, FlexibleContexts, PolyKinds, RankNTypes, ScopedTypeVariables, StandaloneDeriving, TypeFamilies -- -- This module captures in a typeclass the interface of concurrency -- monads.@@ -94,6 +95,7 @@ import Control.Monad.Catch (MonadCatch, MonadMask, MonadThrow) import qualified Control.Monad.Catch as Ca+import Control.Monad.Fail (MonadFail(..)) import Control.Monad.STM.Class (IsSTM, MonadSTM, TVar, fromIsSTM, readTVar) import Control.Monad.Trans.Control (MonadTransControl, StT, liftWith)@@ -790,6 +792,9 @@ -- @since 1.2.2.0 newtype IsConc m a = IsConc { unIsConc :: m a } deriving (Functor, Applicative, Monad, MonadThrow, MonadCatch, MonadMask)++-- | @since 1.8.0.0+deriving instance MonadFail m => MonadFail (IsConc m) -- | Wrap an @m a@ value inside an @IsConc@ if @m@ has a @MonadConc@ -- instance.
Control/Monad/STM/Class.hs view
@@ -1,6 +1,7 @@ {-# LANGUAGE CPP #-} {-# LANGUAGE GeneralizedNewtypeDeriving #-} {-# LANGUAGE RankNTypes #-}+{-# LANGUAGE StandaloneDeriving #-} {-# LANGUAGE TypeFamilies #-} -- |@@ -9,7 +10,7 @@ -- License : MIT -- Maintainer : Michael Walker <mike@barrucadu.co.uk> -- Stability : experimental--- Portability : CPP, RankNTypes, TemplateHaskell, TypeFamilies+-- Portability : CPP, RankNTypes, StandaloneDeriving, TemplateHaskell, TypeFamilies -- -- This module provides an abstraction over 'STM', which can be used -- with 'MonadConc'.@@ -62,6 +63,7 @@ import Control.Applicative (Alternative(..)) import Control.Exception (Exception) import Control.Monad (MonadPlus(..), unless)+import Control.Monad.Fail (MonadFail(..)) import Control.Monad.Reader (ReaderT) import Control.Monad.Trans (lift) import Control.Monad.Trans.Identity (IdentityT)@@ -184,6 +186,9 @@ -- @since 1.2.2.0 newtype IsSTM m a = IsSTM { unIsSTM :: m a } deriving (Functor, Applicative, Alternative, Monad, MonadPlus, Ca.MonadThrow, Ca.MonadCatch)++-- | @since 1.8.0.0+deriving instance MonadFail m => MonadFail (IsSTM m) -- | Wrap an @m a@ value inside an @IsSTM@ if @m@ has a @MonadSTM@ -- instance.
concurrency.cabal view
@@ -2,7 +2,7 @@ -- documentation, see http://haskell.org/cabal/users-guide/ name: concurrency-version: 1.7.0.0+version: 1.8.0.0 synopsis: Typeclasses, functions, and data types for concurrency and STM. description:@@ -32,7 +32,7 @@ source-repository this type: git location: https://github.com/barrucadu/dejafu.git- tag: concurrency-1.7.0.0+ tag: concurrency-1.8.0.0 library exposed-modules: Control.Monad.Conc.Class