packages feed

potoki 0.10.2 → 0.10.3

raw patch · 4 files changed

+36/−3 lines, 4 filesPVP ok

version bump matches the API change (PVP)

API changes (from Hackage documentation)

+ Potoki.Transform: vector :: Transform (Vector a) a

Files

library/Potoki/Fetch.hs view
@@ -85,3 +85,14 @@ finiteMVar var =   Fetch $ \ nil just ->   fmap (maybe nil just) (takeMVar var)++{-# INLINABLE vector #-}+vector :: IORef Int -> Vector element -> Fetch element+vector indexRef vector =+  Fetch $ \ nil just -> do+    index <- readIORef indexRef+    if index < C.length vector+      then do+        writeIORef indexRef (succ index)+        return (just (C.unsafeIndex vector index))+      else return nil
library/Potoki/Transform.hs view
@@ -12,6 +12,7 @@   filter,   just,   list,+  vector,   distinctBy,   distinct,   builderChunks,@@ -46,6 +47,7 @@ import qualified Data.ByteString.Builder as E import qualified Data.ByteString.Lazy as F import qualified Data.ByteString as J+import qualified Data.Vector as P import qualified System.Directory as I import qualified Control.Concurrent.Chan.Unagi.Bounded as B import qualified Control.Monad.Trans.State.Strict as O@@ -244,6 +246,23 @@                       return nil                 in join (fetchListIO nilIO justIO)             in fetchElementIO++vector :: Transform (Vector a) a+vector =+  Transform $ \ (A.Fetch fetchVectorIO) -> do+    indexRef <- newIORef 0+    vectorRef <- newIORef mempty+    return $ A.Fetch $ \ nil just -> fix $ \ loop -> do+      vector <- readIORef vectorRef+      index <- readIORef indexRef+      if index < P.length vector+        then do+          writeIORef indexRef (succ index)+          return (just (P.unsafeIndex vector index))+        else join $ fetchVectorIO (return nil) $ \ vector -> do+          writeIORef vectorRef vector+          writeIORef indexRef 0+          loop  {-| Useful for debugging
library/Potoki/Transform/Concurrency.hs view
@@ -55,8 +55,11 @@ {-# INLINABLE concurrently #-} concurrently :: Int -> Transform input output -> Transform input output concurrently workersAmount transform =-  sync >>>-  concurrentlyUnsafe workersAmount transform+  if workersAmount == 1+    then transform+    else+      sync >>>+      concurrentlyUnsafe workersAmount transform  {-# INLINE concurrentlyUnsafe #-} concurrentlyUnsafe :: Int -> Transform input output -> Transform input output
potoki.cabal view
@@ -1,7 +1,7 @@ name:   potoki version:-  0.10.2+  0.10.3 synopsis:   Simple streaming in IO description: