Pipes
From HaskellWiki
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 incremental 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-2.5.0: Major performance improvements.
- pipes-3.0.0: Major API simplification and consolidation.
- pipes-safe-1.0.0: Resource safety and exception management
- pipes-network-0.1.0: Use TCP network sockets as pipes streams.
- pipes-3.2.0: ListT integration, Codensity proxy transformer, and ArrowChoice primitives.
- pipes-concurrency-1.0.0: Concurrency support for pipes
- pipes-zlib-0.2.0.0: Zlib compression/decompression support for pipes
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
- pipes-attoparsec: Improve the current pipes-attoparsec library by relying on the upcoming pipes-parse for interleaved parsing support.
