Refactor & update `stm.cabal` to `cabal-version>=1.10`
authorHerbert Valerio Riedel <hvr@gnu.org>
Mon, 14 Oct 2013 20:02:35 +0000 (22:02 +0200)
committerHerbert Valerio Riedel <hvr@gnu.org>
Mon, 14 Oct 2013 20:02:35 +0000 (22:02 +0200)
As the current code fails to build with GHC 6.10, I've updated the Cabal
meta-data to declare support for GHC>=6.12 and dropped support for
base3. This also moves the changelog from the Cabal description field
into a separate `changelog` file and adds a few entries.

The code compiles warning-free for all tested GHC versions.

Signed-off-by: Herbert Valerio Riedel <hvr@gnu.org>
Control/Concurrent/STM/TVar.hs
Control/Sequential/STM.hs
changelog [new file with mode: 0644]
stm.cabal

index d15896b..6435e17 100644 (file)
@@ -43,11 +43,6 @@ import GHC.Weak
 import Control.Sequential.STM
 #endif
 
-#if ! (MIN_VERSION_base(4,2,0))
-readTVarIO = atomically . readTVar
-#endif
-
-
 -- Like 'modifyIORef' but for 'TVar'.
 -- | Mutate the contents of a 'TVar'. /N.B./, this version is
 -- non-strict.
index 468e7bd..a644e67 100644 (file)
@@ -40,35 +40,17 @@ instance Monad STM where
        x <- m r
        unSTM (k x) r
 
-#ifdef BASE4
 atomically :: STM a -> IO a
 atomically (STM m) = do
     r <- newIORef (return ())
     m r `onException` do
        rollback <- readIORef r
        rollback
-#else
-atomically :: STM a -> IO a
-atomically (STM m) = do
-    r <- newIORef (return ())
-    m r `catch` \ ex -> do
-       rollback <- readIORef r
-       rollback
-       throw ex
-#endif
 
-#ifdef BASE4
 throwSTM :: Exception e => e -> STM a
-#else
-throwSTM :: Exception -> STM a
-#endif
 throwSTM = STM . const . throwIO
 
-#ifdef BASE4
 catchSTM :: Exception e => STM a -> (e -> STM a) -> STM a
-#else
-catchSTM :: STM a -> (Exception -> STM a) -> STM a
-#endif
 catchSTM (STM m) h = STM $ \ r -> do
     old_rollback <- readIORef r
     writeIORef r (return ())
diff --git a/changelog b/changelog
new file mode 100644 (file)
index 0000000..1296a41
--- /dev/null
+++ b/changelog
@@ -0,0 +1,38 @@
+-*-changelog-*-
+
+2.4.2.1  Oct 2013
+
+       * Updated behaviour of `newBroadcastTChanIO` to match
+       `newBroadcastTChan` in causing an error on a read from
+       the broadcast channel
+
+       * Add `mkWeakTVar`
+
+       * Add `isFullTBQueue`
+
+       * Fix `TChan` created via `newBroadcastTChanIO` to throw same
+       exception on a `readTChan` as when created via `newBroadcastTChan`
+
+2.4.2  Nov 2012
+
+       * Add "Control.Concurrent.STM.TSem" (transactional semaphore)
+
+       * Add Applicative/Alternative instances of STM for GHC <7.0
+
+        * Throw proper exception when `readTChan` called on a broadcast
+       `TChan`
+
+2.4  Jul 2012
+
+       * Add "Control.Concurrent.STM.TQueue" (a faster `TChan`)
+
+       * Add "Control.Concurrent.STM.TBQueue" (a bounded channel based on
+       `TQueue`)
+
+       * Add `Eq` instance for `TChan`
+
+       * Add `newBroadcastTChan` and `newBroadcastTChanIO`
+
+       * Some performance improvements for `TChan`
+
+       * Add `cloneTChan`
index 568b8a3..998bb24 100644 (file)
--- a/stm.cabal
+++ b/stm.cabal
@@ -1,68 +1,55 @@
-name:          stm
+name:           stm
 version:        2.4.2.1
-license:       BSD3
-license-file:  LICENSE
-maintainer:    libraries@haskell.org
-synopsis:      Software Transactional Memory
+license:        BSD3
+license-file:   LICENSE
+maintainer:     libraries@haskell.org
+bug-reports:    http://ghc.haskell.org/trac/ghc/newticket?component=libraries%20%28other%29&keywords=stm
+synopsis:       Software Transactional Memory
 category:       Concurrency
-description:
- A modular composable concurrency abstraction.
- .
- Changes in version 2.4.2.1
- .
- * Updated behaviour of @newBroadcastTChanIO@ to match
-   @newBroadcastTChan@ in causing an error on a read from
-   the broadcast channel.
- .
- Changes in version 2.4.2
- .
- * Added "Control.Concurrent.STM.TSem" (transactional semaphore)
- .
- Changes in version 2.4.1
- .
- * Added Applicative/Alternative instances of STM for GHC <7.0
- .
- Changes in version 2.4
- .
- * Added "Control.Concurrent.STM.TQueue" (a faster @TChan@)
- .
- * Added "Control.Concurrent.STM.TBQueue" (a bounded channel based on @TQueue@)
- .
- * @TChan@ has an @Eq@ instances
- .
- * Added @newBroadcastTChan@ and @newBroadcastTChanIO@
- .
- * Some performance improvements for @TChan@
- .
- * Added @cloneTChan@
-
+description:    A modular composable concurrency abstraction.
 build-type:     Simple
-cabal-version:  >=1.6
+cabal-version:  >=1.10
+tested-with:    GHC==7.6.3, GHC==7.6.2, GHC==7.6.1, GHC==7.4.2, GHC==7.4.1, GHC==7.2.2, GHC==7.2.1, GHC==7.0.4, GHC==7.0.3, GHC==7.0.2, GHC==7.0.1, GHC==6.12.3
+
+extra-source-files:
+    changelog
 
 source-repository head
     type:     git
     location: http://git.haskell.org/packages/stm.git
 
-flag base4
+source-repository this
+    type:     git
+    location: http://git.haskell.org/packages/stm.git
+    tag:      stm-2.4.2.1-release
 
 library
-  exposed-modules:
-    Control.Concurrent.STM
-    Control.Concurrent.STM.TArray
-    Control.Concurrent.STM.TVar
-    Control.Concurrent.STM.TChan
-    Control.Concurrent.STM.TMVar
-    Control.Concurrent.STM.TQueue
-    Control.Concurrent.STM.TBQueue
-    Control.Concurrent.STM.TSem
-    Control.Monad.STM
-  other-modules:
-    Control.Sequential.STM
-  build-depends: base < 5, array
-  if flag(base4)
-    build-depends: base >=4
-    cpp-options:   -DBASE4
-  else
-    build-depends: base <4
-  if impl(ghc >= 6.10)
-    build-depends: base >=4
+    default-language: Haskell98
+    other-extensions:
+        CPP
+        DeriveDataTypeable
+        FlexibleInstances
+        MagicHash
+        MultiParamTypeClasses
+        UnboxedTuples
+    if impl(ghc >= 7.2)
+        other-extensions: Trustworthy
+
+    build-depends:
+        base  >= 4.2 && < 4.8,
+        array >= 0.3 && < 0.6
+
+    exposed-modules:
+        Control.Concurrent.STM
+        Control.Concurrent.STM.TArray
+        Control.Concurrent.STM.TVar
+        Control.Concurrent.STM.TChan
+        Control.Concurrent.STM.TMVar
+        Control.Concurrent.STM.TQueue
+        Control.Concurrent.STM.TBQueue
+        Control.Concurrent.STM.TSem
+        Control.Monad.STM
+    other-modules:
+        Control.Sequential.STM
+
+    ghc-options: -Wall
\ No newline at end of file