Personal tools

Pipes

From HaskellWiki

(Difference between revisions)
Jump to: navigation, search
m (Cosmetic)
(Announcements: add pipes-network-0.1.0 announce)
Line 82: Line 82:
   
 
== Announcements ==
 
== Announcements ==
  +
  +
In chronological order.
   
 
* [http://www.reddit.com/r/haskell/comments/ohjg7/a_new_approach_to_iteratees/ pipes-1.0.0]: The original announcement, which first introduced the concept of unifying sources and sinks and transducers into a single [http://www.haskell.org/ghc/docs/latest/html/libraries/base/Control-Category.html Category].
 
* [http://www.reddit.com/r/haskell/comments/ohjg7/a_new_approach_to_iteratees/ pipes-1.0.0]: The original announcement, which first introduced the concept of unifying sources and sinks and transducers into a single [http://www.haskell.org/ghc/docs/latest/html/libraries/base/Control-Category.html Category].
Line 98: Line 100:
   
 
* [http://www.haskellforall.com/2013/01/pipes-safe-10-resource-management-and.html pipes-safe-1.0.0]: Resource safety and exception management
 
* [http://www.haskellforall.com/2013/01/pipes-safe-10-resource-management-and.html pipes-safe-1.0.0]: Resource safety and exception management
  +
  +
* [http://www.haskell.org/pipermail/haskell-cafe/2013-March/106752.html pipes-network-0.1.0]: Use TCP network sockets as pipes streams.
   
 
* [http://www.haskellforall.com/2013/03/pipes-32-listt-codensity-arrowchoice.html pipes-3.2.0]: ListT integration, Codensity proxy transformer, and ArrowChoice primitives.
 
* [http://www.haskellforall.com/2013/03/pipes-32-listt-codensity-arrowchoice.html pipes-3.2.0]: ListT integration, Codensity proxy transformer, and ArrowChoice primitives.

Revision as of 01:40, 8 May 2013


Use pipes to create elegant streaming programs within Haskell. Build streaming components and connect them them together to process both events and data.

Contents

1 Libraries

Pipes is the official Hackage category for the pipes ecosystem.

1.1 pipes

The pipes package is the core library which emphasizes:

  • Elegance and Simplicity
  • Speed
  • Lightweight dependencies

The pipes library offers many unique features not available in other streaming libraries:

  • Bidirectional streams
  • Extension framework
  • Elegant ListT interconversions
  • Correctness proofs for the entire library

Read the official pipes tutorial to learn more.

Source code hosted on GitHub

1.2 pipes-safe

The pipes-safe package adds resource management and exception safety to the pipes ecosystem. pipes-safe offers many high-level features such as:

  • Complete exception safety, including asynchronous exceptions
  • Termination safety
  • Resources are freed in reverse order of acquisition

Additionally, pipes-safe is the only streaming library that provides truly native exception handling, allowing you to seamlessly handle exceptions and resume uninterrupted streaming.

Read the official pipes-safe tutorial to learn more.

Source code hosted on GitHub

1.3 pipes-concurrency

The pipes-concurrency package adds powerful and light-weight concurrency primitives to the pipes ecosystem. Use these primitives to:

  • Build reactive event-driven programs
  • Merge and split streams
  • Communicate between multiple concurrent pipelines
  • Manage multiple resources simultaneously

The pipes-concurrency library offers several features unavailable in other streaming libraries such as:

  • Deadlock safety
  • Cyclic communication graphs
  • Dynamically changing graph topologies

Read the official pipes-concurrency tutorial to learn more.

Source code hosted on GitHub

2 Community-contributed libraries

2.1 pipes-attoparsec

The pipes-attoparsec library converts attoparsec parsers to pipes for high-performance lazy parsing.

Source code hosted on GitHub

2.2 pipes-network

The pipes-network library converts server and client sockets to pipes to seamlessly stream data over any network.

Source code hosted on GitHub

2.3 pipes-zlib

The pipes-zlib enables compression and decompression of strict ByteString streams using the zlib codec.

Source code hosted on GitHub

3 Announcements

In chronological order.

  • pipes-1.0.0: The original announcement, which first introduced the concept of unifying sources and sinks and transducers into a single Category.
  • pipes-2.0.0: The introduction of Frames, later deprecated in favor of pipes-safe.
  • pipes-2.1.0: Transition of Frames to indexed monads, later deprecated in favor of pipes-safe.
  • pipes-2.3.0: The introduction of bidirectional Proxies, which evolved into modern pipes.
  • pipes-2.4.0: The release of the proxy transformer extension system.
  • pipes-3.0.0: Major API simplification and consolidation.
  • pipes-3.2.0: ListT integration, Codensity proxy transformer, and ArrowChoice primitives.

4 Upcoming libraries

  • pipes-parse: Parsing support for the pipes ecosystem
  • pipes-string: Bytestring and Text support
  • pipes-free: Pipe suspension and single-stepping pipes
  • pipes-network-tls: TLS-secured alternative to pipes-network