packages feed

unliftio 0.2.13.1 → 0.2.14

raw patch · 5 files changed

+99/−2 lines, 5 filesPVP ok

version bump matches the API change (PVP)

API changes (from Hackage documentation)

+ UnliftIO.QSem: data QSem
+ UnliftIO.QSem: newQSem :: MonadIO m => Int -> m QSem
+ UnliftIO.QSem: signalQSem :: MonadIO m => QSem -> m ()
+ UnliftIO.QSem: waitQSem :: MonadIO m => QSem -> m ()
+ UnliftIO.QSem: withQSem :: MonadUnliftIO m => QSem -> m a -> m a
+ UnliftIO.QSemN: data QSemN
+ UnliftIO.QSemN: newQSemN :: MonadIO m => Int -> m QSemN
+ UnliftIO.QSemN: signalQSemN :: MonadIO m => QSemN -> Int -> m ()
+ UnliftIO.QSemN: waitQSemN :: MonadIO m => QSemN -> Int -> m ()
+ UnliftIO.QSemN: withQSemN :: MonadUnliftIO m => QSemN -> Int -> m a -> m a

Files

ChangeLog.md view
@@ -1,5 +1,10 @@ # Changelog for unliftio +## 0.2.14++* Add `UnliftIO.QSem`+* Add `UnliftIO.QSemN`+ ## 0.2.13.1  * Improve `UnliftIO.Exception` documentation
src/UnliftIO.hs view
@@ -9,6 +9,8 @@   , module UnliftIO.IORef   , module UnliftIO.Memoize   , module UnliftIO.MVar+  , module UnliftIO.QSem+  , module UnliftIO.QSemN   , module UnliftIO.STM   , module UnliftIO.Temporary   , module UnliftIO.Timeout@@ -22,6 +24,8 @@ import UnliftIO.IORef import UnliftIO.Memoize import UnliftIO.MVar+import UnliftIO.QSem+import UnliftIO.QSemN import UnliftIO.STM import UnliftIO.Temporary import UnliftIO.Timeout
+ src/UnliftIO/QSem.hs view
@@ -0,0 +1,43 @@+-- | Unlifted "Control.Concurrent.QSem".+--+-- @since 0.2.14+module UnliftIO.QSem+  ( QSem+  , newQSem+  , waitQSem+  , signalQSem+  , withQSem+  ) where++import Control.Concurrent.QSem (QSem)+import Control.Monad.IO.Unlift+import UnliftIO.Exception+import qualified Control.Concurrent.QSem as Q++-- | Lifted 'Q.newQSem'.+--+-- @since 0.2.14+newQSem :: MonadIO m => Int -> m QSem+newQSem = liftIO . Q.newQSem++-- | Lifted 'Q.waitQSem'.+--+-- @since 0.2.14+waitQSem :: MonadIO m => QSem -> m ()+waitQSem = liftIO . Q.waitQSem++-- | Lifted 'Q.signalQSem'.+--+-- @since 0.2.14+signalQSem :: MonadIO m => QSem -> m ()+signalQSem = liftIO . Q.signalQSem++-- | 'withQSem' is an exception-safe wrapper for performing the+-- provided operation while holding a unit of value from the semaphore.+-- It ensures the semaphore cannot be leaked if there are exceptions.+--+-- @since 0.2.14+{-# INLINE withQSem #-}+withQSem :: MonadUnliftIO m => QSem -> m a -> m a+withQSem x io = withRunInIO $ \run ->+  bracket_ (waitQSem x) (signalQSem x) (run io)
+ src/UnliftIO/QSemN.hs view
@@ -0,0 +1,43 @@+-- | Unlifted "Control.Concurrent.QSemN".+--+-- @since 0.2.14+module UnliftIO.QSemN+  ( QSemN+  , newQSemN+  , waitQSemN+  , signalQSemN+  , withQSemN+  ) where++import Control.Concurrent.QSemN (QSemN)+import Control.Monad.IO.Unlift+import UnliftIO.Exception+import qualified Control.Concurrent.QSemN as Q++-- | Lifted 'Q.newQSemN'.+--+-- @since 0.2.14+newQSemN :: MonadIO m => Int -> m QSemN+newQSemN = liftIO . Q.newQSemN++-- | Lifted 'Q.waitQSemN'.+--+-- @since 0.2.14+waitQSemN :: MonadIO m => QSemN -> Int -> m ()+waitQSemN x = liftIO . Q.waitQSemN x++-- | Lifted 'Q.signalQSemN'.+--+-- @since 0.2.14+signalQSemN :: MonadIO m => QSemN -> Int -> m ()+signalQSemN x = liftIO . Q.signalQSemN x++-- | 'withQSemN' is an exception-safe wrapper for performing the+-- provided operation while holding N unit of value from the semaphore.+-- It ensures the semaphore cannot be leaked if there are exceptions.+--+-- @since 0.2.14+{-# INLINE withQSemN #-}+withQSemN :: MonadUnliftIO m => QSemN -> Int -> m a -> m a+withQSemN x n io = withRunInIO $ \run ->+  bracket_ (waitQSemN x n) (signalQSemN x n) (run io)
unliftio.cabal view
@@ -4,10 +4,10 @@ -- -- see: https://github.com/sol/hpack ----- hash: c11215b81aa0898968a1dbf5189319f0bd07fa70861b5812ac34043c9f118ebb+-- hash: e737146da57bc35659bcdf122bb96b8fd76e43a33e39f3ebf00fac260c68bb2b  name:           unliftio-version:        0.2.13.1+version:        0.2.14 synopsis:       The MonadUnliftIO typeclass for unlifting monads to IO (batteries included) description:    Please see the documentation and README at <https://www.stackage.org/package/unliftio> category:       Control@@ -39,6 +39,8 @@       UnliftIO.Memoize       UnliftIO.MVar       UnliftIO.Process+      UnliftIO.QSem+      UnliftIO.QSemN       UnliftIO.STM       UnliftIO.Temporary       UnliftIO.Timeout