resourcet 1.2.0 → 1.2.1
raw patch · 5 files changed
+23/−3 lines, 5 filesdep ~exceptionsPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
Dependency ranges changed: exceptions
API changes (from Hackage documentation)
+ UnliftIO.Resource: allocate :: MonadResource m => IO a -> (a -> IO ()) -> m (ReleaseKey, a)
+ UnliftIO.Resource: class MonadIO m => MonadResource m
+ UnliftIO.Resource: data ReleaseKey
+ UnliftIO.Resource: data ResourceT m a
+ UnliftIO.Resource: register :: MonadResource m => IO () -> m ReleaseKey
+ UnliftIO.Resource: release :: MonadIO m => ReleaseKey -> m ()
+ UnliftIO.Resource: unprotect :: MonadIO m => ReleaseKey -> m (Maybe (IO ()))
- Control.Monad.Trans.Resource.Internal: ResourceT :: (IORef ReleaseMap -> m a) -> ResourceT m a
+ Control.Monad.Trans.Resource.Internal: ResourceT :: IORef ReleaseMap -> m a -> ResourceT m a
Files
- ChangeLog.md +4/−0
- Control/Monad/Trans/Resource/Internal.hs +12/−0
- Data/Acquire/Internal.hs +1/−1
- resourcet.cabal +3/−2
- test/main.hs +3/−0
ChangeLog.md view
@@ -1,3 +1,7 @@+## 1.2.1++* Support `exceptions-0.10`.+ ## 1.2.0 * Drop `monad-control` and `mmorph` dependencies
Control/Monad/Trans/Resource/Internal.hs view
@@ -136,6 +136,18 @@ uninterruptibleMask a = ResourceT $ \e -> uninterruptibleMask $ \u -> unResourceT (a $ q u) e where q u (ResourceT b) = ResourceT (u . b)+#if MIN_VERSION_exceptions(0, 10, 0)+ generalBracket acquire release use =+ ResourceT $ \r ->+ generalBracket+ ( unResourceT acquire r )+ ( \resource exitCase ->+ unResourceT ( release resource exitCase ) r+ )+ ( \resource -> unResourceT ( use resource ) r )+#elif MIN_VERSION_exceptions(0, 9, 0)+#error exceptions 0.9.0 is not supported+#endif instance MonadIO m => MonadResource (ResourceT m) where liftResourceT = transResourceT liftIO instance PrimMonad m => PrimMonad (ResourceT m) where
Data/Acquire/Internal.hs view
@@ -32,7 +32,7 @@ -- | A method for acquiring a scarce resource, providing the means of freeing -- it when no longer needed. This data type provides--- @Functor@/@Applicative@/@Monad@ instances for composing different resources+-- @Functor@\/@Applicative@\/@Monad@ instances for composing different resources -- together. You can allocate these resources using either the @bracket@ -- pattern (via @with@) or using @ResourceT@ (via @allocateAcquire@). --
resourcet.cabal view
@@ -1,5 +1,5 @@ Name: resourcet-Version: 1.2.0+Version: 1.2.1 Synopsis: Deterministic allocation and freeing of scarce resources. description: Hackage documentation generation is not reliable. For up to date documentation, please see: <http://www.stackage.org/package/resourcet>. License: BSD3@@ -22,7 +22,7 @@ , containers , transformers >= 0.4 , mtl >= 2.0 && < 2.3- , exceptions >= 0.8+ , exceptions (== 0.8.* || == 0.10.*) , unliftio-core , primitive ghc-options: -Wall@@ -34,6 +34,7 @@ cpp-options: -DTEST build-depends: resourcet , base+ , exceptions , hspec >= 1.3 , transformers ghc-options: -Wall
test/main.hs view
@@ -6,6 +6,7 @@ getMaskingState, throwIO, try, fromException) import Control.Exception (SomeException, handle) import Control.Monad (unless, void)+import qualified Control.Monad.Catch import Control.Monad.IO.Class (liftIO) import Control.Monad.Trans.Resource import Data.IORef@@ -138,6 +139,8 @@ Left (ResourceCleanupException (Just _) _ [_]) -> error "Got a ResourceT exception" Left (ResourceCleanupException _ _ []) -> error "Only got 1" Left (ResourceCleanupException _ _ (_:_:_)) -> error "Got more than 2"+ describe "MonadMask" $+ it "works" (runResourceT $ Control.Monad.Catch.bracket (return ()) (const (return ())) (const (return ())) :: IO ()) data Dummy = Dummy deriving (Show, Typeable)