packages feed

io-streams-1.1.4.2: io-streams.cabal

Name:                io-streams
Version:             1.1.4.2
License:             BSD3
License-file:        LICENSE
Category:            Data, Network, IO-Streams
Build-type:          Simple
Maintainer:          Gregory Collins <greg@gregorycollins.net>
Cabal-version:       >= 1.10
Synopsis:            Simple, composable, and easy-to-use stream I/O
Tested-With:         GHC==7.6.2, GHC==7.6.1, GHC==7.4.2, GHC==7.4.1,
                     GHC==7.2.2, GHC==7.0.4
Bug-Reports:         https://github.com/snapframework/io-streams/issues
Description:
  /Overview/
  .
  The io-streams library contains simple and easy-to-use primitives for I/O
  using streams. Most users will want to import the top-level convenience
  module "System.IO.Streams", which re-exports most of the library:
  .
  @
  import           "System.IO.Streams" (InputStream, OutputStream)
  import qualified "System.IO.Streams" as Streams
  @
  .
  For first-time users, @io-streams@ comes with an included tutorial, which can
  be found in the "System.IO.Streams.Tutorial" module.
  .
  /Features/
  .
  The @io-streams@ user API has two basic types: @InputStream a@ and
  @OutputStream a@, and three fundamental I/O primitives:
  .
  @
  \-\- read an item from an input stream
  Streams.'System.IO.Streams.read' :: 'System.IO.Streams.InputStream' a -> IO (Maybe a)
  .
  \-\- push an item back to an input stream
  Streams.'System.IO.Streams.unRead' :: a -> 'System.IO.Streams.InputStream' a -> IO ()
  .
  \-\- write to an output stream
  Streams.'System.IO.Streams.write' :: Maybe a -> 'System.IO.Streams.OutputStream' a -> IO ()
  @
  .
  Streams can be transformed by composition and hooked together with provided combinators:
  .
  @
  ghci> Streams.fromList [1,2,3::Int] >>= Streams.map (*10) >>= Streams.toList
  [10,20,30]
  @
  .
  Stream composition leaves the original stream accessible:
  .
  @
  ghci> input \<- Streams.fromByteString \"long string\"
  ghci> wrapped \<- Streams.takeBytes 4 input
  ghci> Streams.read wrapped
  Just \"long\"
  ghci> Streams.read wrapped
  Nothing
  ghci> Streams.read input
  Just \" string\"
  @
  .
  Simple types and operations in the IO monad mean straightforward and simple
  exception handling and resource cleanup using Haskell standard library
  facilities like 'Control.Exception.bracket'.
  .
  @io-streams@ comes with:
  .
    * functions to use files, handles, concurrent channels, sockets, lists,
      vectors, and more as streams.
  .
    * a variety of combinators for wrapping and transforming streams, including
      compression and decompression using zlib, controlling precisely how many
      bytes are read from or written to a stream, buffering output using
      bytestring builders, folds, maps, filters, zips, etc.
  .
    * support for parsing from streams using @attoparsec@.
  .
    * support for spawning processes and communicating with them using streams.
  .
  /ChangeLog/
  .
    [@1.1.4.2@] Fixed a build error with network versions older than 2.4.
  .
    [@1.1.4.1@] @System.IO.Streams.Network@: scalability improvement: buffers
                for socket reads are now allocated by system malloc rather than
                by pinned pointers in GHC (currently pinned pointer allocation
                takes a global lock).
  .
    [@1.1.4.0@] Widened @attoparsec@ and @text@ library dependencies to allow
                the latest versions.
  .
    [@1.1.3.0@] Added @System.IO.Streams.ByteString.takeExactly@. Widened
                @network@ dependency to include 2.3. Added a
                @NoInteractiveTests@ flag to selectively disable some tests for
                environments where spawning interactive processes is
                impossible.
  .
    [@1.1.2.2@] Allowed newest versions of the @process@, @test-framework@,
                and @text@ libraries.
  .
    [@1.1.2.1@] Fixed build error when compiled against attoparsec-0.10.0.x.
  .
    [@1.1.2.0@] Added @System.IO.Streams.Concurrent.makeChanPipe@, to create a
                simple concurrent pipe between an @InputStream@/@OutputStream@
                pair.
  .
    [@1.1.1.0@] Added @System.IO.Streams.Network.socketToStreamsWithBufferSize@,
                allowing control over the size of the receive buffers used when
                reading from sockets.
  .
    [@1.1.0.3@] Fixed an inconsistent version upper bound in the test suite.
  .
    [@1.1.0.2@] Fixed a typo in the tutorial.
  .
    [@1.1.0.1@] A couple of Haddock markup fixes.
  .
    [@1.1.0.0@] Reworked, simplified, and streamlined the internals of the
                library. Exports from "System.IO.Streams.Internal" relying on
                Sources and Sinks were deleted because they are no longer
                necessary: Source(..), Sink(..), defaultPushback,
                withDefaultPushback, nullSource, nullSink, singletonSource,
                simpleSource, sourceToStream, sinkToStream, generatorToSource,
                and consumerToSink.
  .
    [@1.0.2.2@] Fixed a bug in which \"takeBytes 0\" was erroneously requesting
                input from the wrapped stream.
  .
    [@1.0.2.1@] Fixed a compile error on GHC 7.0.x.
  .
    [@1.0.2.0@] Added "System.IO.Streams.Process" (support for communicating
                with system processes using streams), added new functions to
                "System.IO.Streams.Handle" for converting @io-streams@ types to
                'System.IO.Handle's. (Now you can pass streams from this
                library to places that expect Handles and everything will
                work.)
  .
    [@1.0.1.0@] Added 'System.IO.Streams.Combinators.ignoreEof'.
  .
    [@1.0.0.1@] Fixed some haddock markup.

Extra-Source-Files:  CONTRIBUTORS README.md

Flag NoInteractiveTests
  Description: Do not run interactive tests
  Default: False

------------------------------------------------------------------------------
Library
  hs-source-dirs:    src
  Default-language:  Haskell2010

  ghc-options:       -O2 -Wall -fwarn-tabs -funbox-strict-fields
                     -fno-warn-unused-do-bind

  ghc-prof-options:  -prof -auto-all

  Exposed-modules:   System.IO.Streams,
                     System.IO.Streams.Attoparsec,
                     System.IO.Streams.Builder,
                     System.IO.Streams.ByteString,
                     System.IO.Streams.Combinators,
                     System.IO.Streams.Concurrent,
                     System.IO.Streams.Core,
                     System.IO.Streams.Debug,
                     System.IO.Streams.Handle,
                     System.IO.Streams.File,
                     System.IO.Streams.List,
                     System.IO.Streams.Network,
                     System.IO.Streams.Process,
                     System.IO.Streams.Text,
                     System.IO.Streams.Vector,
                     System.IO.Streams.Zlib,
                     System.IO.Streams.Internal,
                     System.IO.Streams.Tutorial

  Other-modules:     System.IO.Streams.Internal.Attoparsec,
                     System.IO.Streams.Internal.Search

  Build-depends:     base          >= 4     && <5,
                     attoparsec    >= 0.10  && <0.12,
                     blaze-builder >= 0.3.1 && <0.4,
                     bytestring    >= 0.9   && <0.11,
                     network       >= 2.3   && <2.5,
                     primitive     >= 0.2   && <0.6,
                     process       >= 1     && <1.3,
                     text          >= 0.10  && <1.2,
                     time          >= 1.2   && <1.5,
                     transformers  >= 0.2   && <0.4,
                     vector        >= 0.7   && <0.11,
                     zlib-bindings >= 0.1   && <0.2

  if impl(ghc >= 7.2)
    other-extensions: Trustworthy

  other-extensions:
    BangPatterns,
    CPP,
    DeriveDataTypeable,
    FlexibleInstances,
    GeneralizedNewtypeDeriving,
    MultiParamTypeClasses,
    OverloadedStrings,
    RankNTypes,
    TypeSynonymInstances


------------------------------------------------------------------------------
Test-suite testsuite
  Type:              exitcode-stdio-1.0
  hs-source-dirs:    src test
  Main-is:           TestSuite.hs
  Default-language:  Haskell2010

  Other-modules:     System.IO.Streams.Tests.Attoparsec,
                     System.IO.Streams.Tests.Builder,
                     System.IO.Streams.Tests.ByteString,
                     System.IO.Streams.Tests.Combinators,
                     System.IO.Streams.Tests.Common,
                     System.IO.Streams.Tests.Concurrent,
                     System.IO.Streams.Tests.Debug,
                     System.IO.Streams.Tests.File,
                     System.IO.Streams.Tests.Handle,
                     System.IO.Streams.Tests.Internal,
                     System.IO.Streams.Tests.List,
                     System.IO.Streams.Tests.Network,
                     System.IO.Streams.Tests.Process,
                     System.IO.Streams.Tests.Text,
                     System.IO.Streams.Tests.Vector,
                     System.IO.Streams.Tests.Zlib,
                     System.IO.Streams,
                     System.IO.Streams.Attoparsec,
                     System.IO.Streams.Builder,
                     System.IO.Streams.ByteString,
                     System.IO.Streams.Combinators,
                     System.IO.Streams.Concurrent,
                     System.IO.Streams.Core,
                     System.IO.Streams.Debug,
                     System.IO.Streams.Handle,
                     System.IO.Streams.File,
                     System.IO.Streams.List,
                     System.IO.Streams.Network,
                     System.IO.Streams.Process,
                     System.IO.Streams.Text,
                     System.IO.Streams.Vector,
                     System.IO.Streams.Zlib,
                     System.IO.Streams.Internal,
                     System.IO.Streams.Internal.Attoparsec,
                     System.IO.Streams.Internal.Search


  ghc-options:       -O2 -Wall -fhpc -fwarn-tabs -funbox-strict-fields -threaded
                     -fno-warn-unused-do-bind
  ghc-prof-options:  -prof -auto-all

  if !os(windows) && !flag(NoInteractiveTests)
    cpp-options: -DENABLE_PROCESS_TESTS


  Build-depends:     base          >= 4     && <5,
                     attoparsec    >= 0.10  && <0.12,
                     blaze-builder >= 0.3.1 && <0.4,
                     bytestring    >= 0.9   && <0.11,
                     deepseq       >= 1.2   && <1.4,
                     directory     >= 1.1   && <2,
                     filepath      >= 1.2   && <2,
                     mtl           >= 2     && <3,
                     network       >= 2.3   && <2.5,
                     primitive     >= 0.2   && <0.6,
                     process       >= 1     && <1.3,
                     text          >= 0.10  && <1.2,
                     time          >= 1.2   && <1.5,
                     transformers  >= 0.2   && <0.4,
                     vector        >= 0.7   && <0.11,
                     zlib-bindings >= 0.1   && <0.2,

                     HUnit                      >= 1.2      && <2,
                     QuickCheck                 >= 2.3.0.2  && <3,
                     test-framework             >= 0.6      && <0.9,
                     test-framework-hunit       >= 0.2.7    && <0.4,
                     test-framework-quickcheck2 >= 0.2.12.1 && <0.4,
                     zlib                       >= 0.5      && <0.6

  if impl(ghc >= 7.2)
    other-extensions: Trustworthy

  other-extensions:
    BangPatterns,
    CPP,
    DeriveDataTypeable,
    FlexibleInstances,
    GeneralizedNewtypeDeriving,
    MultiParamTypeClasses,
    OverloadedStrings,
    RankNTypes

source-repository head
  type:     git
  location: https://github.com/snapframework/io-streams.git