conduit-0.4.2: Streaming data processing library.
Conduits are an approach to the streaming data problem. It is meant as an alternative to enumerators/iterators, hoping to address the same issues with different trade-offs based on real-world experience with enumerators. For more information, see http://www.yesodweb.com/book/conduits.
Release history:
- 0.4
- Inspired by the design of the pipes package: we now have a single unified type underlying
Source,Sink, andConduit. This type is namedPipe. There are type synonyms provided for the other three types. Additionally,BufferedSourceis no longer provided. Instead, the connect-and-resume operator,$$+, can be used for the same purpose. - 0.3
- ResourceT has been greatly simplified, specialized for IO, and moved into a separate package. Instead of hard-coding ResourceT into the conduit datatypes, they can now live around any monad. The Conduit datatype has been enhanced to better allow generation of streaming output. The SourceResult, SinkResult, and ConduitResult datatypes have been removed entirely.
- 0.2
- Instead of storing state in mutable variables, we now use CPS. A
Sourcereturns the nextSource, and likewise forSinks andConduits. Not only does this take better advantage of GHC's optimizations (about a 20% speedup), but it allows some operations to have a reduction in algorithmic complexity from exponential to linear. This also allowed us to remove thePreparedset of types. Also, theStatefunctions (e.g.,sinkState) use better constructors for return types, avoiding the need for a dummy state on completion. - 0.1
-
BufferedSourceis now an abstract type, and has a much more efficient internal representation. The result was a 41% speedup on microbenchmarks (note: do not expect speedups anywhere near that in real usage). In general, we are moving towardsBufferedSourcebeing a specific tool used internally as needed, but usingSourcefor all external APIs. - 0.0
- Initial release.