Personal tools

Pipes

From HaskellWiki

(Difference between revisions)
Jump to: navigation, search
(Expanding the original stub)
(Upcoming libraries: mention pipes-network-tls)
(One intermediate revision by one user not shown)
Line 1: Line 1:
[[Category:Composition,Idioms,Libraries,Packages]]
+
[[Category:Idioms]]
  +
[[Category:Libraries]]
  +
[[Category:Packages]]
   
 
Use pipes to create elegant streaming programs within Haskell. Build streaming components and connect them them together to process both events and data.
 
Use pipes to create elegant streaming programs within Haskell. Build streaming components and connect them them together to process both events and data.
Line 102: Line 102:
   
 
* pipes-free: Pipe suspension and single-stepping pipes
 
* pipes-free: Pipe suspension and single-stepping pipes
  +
  +
* pipes-network-tls: TLS-secured alternative to pipes-network

Revision as of 16:32, 1 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

3 Announcements

  • 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