packages feed

primitive 0.5.3.0 → 0.5.4.0

raw patch · 4 files changed

+48/−4 lines, 4 filesdep +primitivedep ~basedep ~ghc-primnew-uploader

Dependencies added: primitive

Dependency ranges changed: base, ghc-prim

Files

Control/Monad/Primitive.hs view
@@ -44,7 +44,9 @@ primitive_ :: PrimMonad m               => (State# (PrimState m) -> State# (PrimState m)) -> m () {-# INLINE primitive_ #-}-primitive_ f = primitive (\s# -> (# f s#, () #))+primitive_ f = primitive (\s# ->+    case f s# of+        s'# -> (# s'#, () #))  instance PrimMonad IO where   type PrimState IO = RealWorld
changelog.md view
@@ -1,3 +1,11 @@+## Changes in version 0.5.4.0++ * Changed primitive_ to work around an oddity with GHC's code generation+   on certain versions that led to side effects not happening when used+   in conjunction with certain very unsafe IO performers.++ * Allow primitive to build on GHC 7.9+ ## Changes in version 0.5.3.0   * Implement `cloneArray` and `cloneMutableArray` primitives
primitive.cabal view
@@ -1,10 +1,10 @@ Name:           primitive-Version:        0.5.3.0+Version:        0.5.4.0 License:        BSD3 License-File:   LICENSE  Author:         Roman Leshchinskiy <rl@cse.unsw.edu.au>-Maintainer:     Roman Leshchinskiy <rl@cse.unsw.edu.au>+Maintainer:     libraries@haskell.org Copyright:      (c) Roman Leshchinskiy 2009-2012 Homepage:       https://github.com/haskell/primitive Bug-Reports:    https://github.com/haskell/primitive/issues@@ -36,7 +36,7 @@         Data.Primitive.Internal.Compat         Data.Primitive.Internal.Operations -  Build-Depends: base >= 4.3 && < 4.8, ghc-prim >= 0.2 && < 0.4+  Build-Depends: base >= 4.3 && < 4.9, ghc-prim >= 0.2 && < 0.4    Ghc-Options: -O2 -Wall @@ -49,6 +49,16 @@       cc-options: -ftree-vectorize   if arch(i386) || arch(x86_64)       cc-options: -msse2++test-suite test+  Default-Language: Haskell2010+  hs-source-dirs: test+  main-is: main.hs+  type: exitcode-stdio-1.0+  build-depends: base+               , ghc-prim+               , primitive+  ghc-options: -O2  source-repository head   type:     git
+ test/main.hs view
@@ -0,0 +1,24 @@+{-# LANGUAGE MagicHash, UnboxedTuples #-}+import Control.Monad.Primitive+import Data.Primitive.Array+import GHC.IO+import GHC.Prim++-- Since we only have a single test case right now, I'm going to avoid the+-- issue of choosing a test framework for the moment. This also keeps the+-- package as a whole light on dependencies.++main :: IO ()+main = do+    arr <- newArray 1 'A'+    let unit =+            case writeArray arr 0 'B' of+                IO f ->+                    case f realWorld# of+                        _ -> ()+    c1 <- readArray arr 0+    return $! unit+    c2 <- readArray arr 0+    if c1 == 'A' && c2 == 'B'+        then return ()+        else error $ "Expected AB, got: " ++ show (c1, c2)