packages feed

conduit-extra 1.1.4 → 1.1.4.1

raw patch · 3 files changed

+93/−1 lines, 3 filesdep +bytestring-builderdep +criteriondep ~basedep ~blaze-builderdep ~conduitPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

Dependencies added: bytestring-builder, criterion

Dependency ranges changed: base, blaze-builder, conduit

API changes (from Hackage documentation)

- Data.Conduit.Network.UDP: Message :: SrictNotUnpackedByteString -> SrictNotUnpackedSockAddr -> Message
+ Data.Conduit.Network.UDP: Message :: !ByteString -> !SockAddr -> Message
- Data.Conduit.Network.UDP: msgData :: Message -> SrictNotUnpackedByteString
+ Data.Conduit.Network.UDP: msgData :: Message -> !ByteString
- Data.Conduit.Network.UDP: msgSender :: Message -> SrictNotUnpackedSockAddr
+ Data.Conduit.Network.UDP: msgSender :: Message -> !SockAddr

Files

Data/Conduit/Blaze.hs view
@@ -63,6 +63,7 @@ builderToByteString :: (MonadBase base m, PrimMonad base) => Conduit Builder m S.ByteString builderToByteString =   builderToByteStringWith defaultStrategy+{-# INLINE builderToByteString #-}  -- | --@@ -70,6 +71,7 @@ builderToByteStringFlush :: (MonadBase base m, PrimMonad base) => Conduit (Flush Builder) m (Flush S.ByteString) builderToByteStringFlush =   builderToByteStringWithFlush defaultStrategy+{-# INLINE builderToByteStringFlush #-}  -- | Incrementally execute builders on the given buffer and pass on the filled -- chunks as bytestrings. Note that, if the given buffer is too small for the@@ -82,6 +84,7 @@                           => IO Buffer  -- action yielding the inital buffer.                           -> Conduit Builder m S.ByteString unsafeBuilderToByteString = builderToByteStringWith . reuseBufferStrategy+{-# INLINE unsafeBuilderToByteString #-}   -- | A conduit that incrementally executes builders and passes on the@@ -96,6 +99,7 @@   where     yield' Flush = return ()     yield' (Chunk bs) = yield bs+{-# INLINE builderToByteStringWith #-}  -- | --@@ -105,6 +109,7 @@     => BufferAllocStrategy     -> Conduit (Flush Builder) m (Flush S.ByteString) builderToByteStringWithFlush = helper await yield+{-# INLINE builderToByteStringWithFlush #-}  helper :: (MonadBase base m, PrimMonad base, Monad (t m), MonadTrans t)        => t m (Maybe (Flush Builder))@@ -134,3 +139,4 @@                 Chunk _ -> return ()             loop     loop+{-# INLINE helper #-}
+ bench/blaze.hs view
@@ -0,0 +1,72 @@+{-# LANGUAGE OverloadedStrings #-}+import Data.Conduit+import qualified Data.Conduit.List as CL+import Data.Conduit.Blaze+import Criterion.Main+import Blaze.ByteString.Builder+import Data.Monoid+import qualified Data.ByteString.Builder as BS+import Data.Functor.Identity (runIdentity)+import Control.Monad.ST (runST)+import Data.ByteString.Lazy.Internal (defaultChunkSize)++count :: Int+count = 100000++single :: Builder+single = copyByteString "Hello World!\n"++oneBuilderLeft :: Builder+oneBuilderLeft =+    loop count mempty+  where+    loop 0 b = b+    loop i b = loop (i - 1) (b <> single)++oneBuilderRight :: Builder+oneBuilderRight =+    loop count mempty+  where+    loop 0 b = b+    loop i b = loop (i - 1) (b <> single)++builderSource :: Monad m => Source m Builder+builderSource = CL.replicate count single++singleBS :: BS.Builder+singleBS = BS.shortByteString "Hello World!\n"++oneBSBuilderLeft :: BS.Builder+oneBSBuilderLeft =+    loop count mempty+  where+    loop 0 b = b+    loop i b = loop (i - 1) (b <> singleBS)++oneBSBuilderRight :: BS.Builder+oneBSBuilderRight =+    loop count mempty+  where+    loop 0 b = b+    loop i b = loop (i - 1) (b <> singleBS)++builderBSSource :: Monad m => Source m BS.Builder+builderBSSource = CL.replicate count singleBS++main :: IO ()+main = defaultMain+    [ bench "conduit, strict, safe" $ whnfIO $+        builderSource $$ builderToByteString =$ CL.sinkNull+    , bench "conduit, strict, unsafe" $ whnfIO $+        builderSource $$ unsafeBuilderToByteString (allocBuffer defaultChunkSize) =$ CL.sinkNull++    , bench "one builder, left" $ nf toLazyByteString oneBuilderLeft+    , bench "one builder, right" $ nf toLazyByteString oneBuilderRight+    , bench "conduit, lazy" $ flip nf builderSource $ \src ->+        toLazyByteString $ runIdentity $ src $$ CL.fold (<>) mempty++    , bench "one bs builder, left" $ nf BS.toLazyByteString oneBSBuilderLeft+    , bench "one bs builder, right" $ nf BS.toLazyByteString oneBSBuilderRight+    , bench "conduit BS, lazy" $ flip nf builderBSSource $ \src ->+        BS.toLazyByteString $ runIdentity $ src $$ CL.fold (<>) mempty+    ]
conduit-extra.cabal view
@@ -1,5 +1,5 @@ Name:                conduit-extra-Version:             1.1.4+Version:             1.1.4.1 Synopsis:            Batteries included conduit: adapters for common libraries. Description:     The conduit package itself maintains relative small dependencies. The purpose of this package is to collect commonly used utility functions wrapping other library dependencies, without depending on heavier-weight dependencies. The basic idea is that this package should only depend on haskell-platform packages and conduit.@@ -89,6 +89,20 @@                      Data.Conduit.ProcessSpec                      Data.Conduit.TextSpec                      Data.Conduit.ZlibSpec++benchmark blaze+    type:           exitcode-stdio-1.0+    hs-source-dirs: bench+    build-depends:  base+                  , blaze-builder+                  , conduit+                  , conduit-extra+                  , criterion+                  , bytestring+                  , bytestring-builder+                  , transformers+    main-is:        blaze.hs+    ghc-options:    -Wall -O2 -rtsopts  source-repository head   type:     git