streamly: Streaming data pipelines with declarative concurrency
For upgrading to streamly-0.9.0+ please read the Streamly-0.9.0 upgrade guide.
Streamly is a high-performance, beginner-friendly standard library for Haskell. It unifies streaming with list transformers and logic programming; unifies streaming with concurrency and reactive programming; unifies arrays with ring arrays, text, bytestring and vector use cases; unifies arrays with builders and binary serialization; generalizes parsers to any input type and unifies attoparsec, parsec use cases with better performance; provides streaming fileIO — all with a clean, consistent, well-integrated and streaming enabled API.
Streams are designed to have a list like interface — no steep learning curve, no complex types. Streamly is designed to build general purpose applications in a truly functional manner, from simple hello-world to advanced high-performance systems. The design emphasizes simplicity, modularity, and code reuse with minimal building blocks. Performance is on par with C, tuning is easy, and it’s hard to get it wrong.
Streamly is serial by default, with seamless declarative concurrency that scales automatically when needed. It provides prompt and safe resource management, works well with other streaming libraries as well as core libraries like bytestring and text, and is backed by solid documentation.
The streamly
package is built on top of the streamly-core
package
and offers high-level capabilities such as concurrency, reactive
programming, time-related combinators, lifted exceptions, and
networking. It provides streaming with concurrency, and is a more
powerful, higher-level and more expressive alternative to the async
package.
Performant. Unified. Modular. Powerful. Simple.
Learn more at the streamly website.
[Skip to Readme]
Modules
[Index] [Quick Jump]
- Streamly
- Data
- Internal
- Control
- Data
- Streamly.Internal.Data.Atomics
- Streamly.Internal.Data.Channel
- Streamly.Internal.Data.Cont
- Fold
- IOFinalizer
- IsMap
- Streamly.Internal.Data.SVar
- Scanl
- Streamly.Internal.Data.SmallArray
- Stream
- Streamly.Internal.Data.Stream.Ahead
- Streamly.Internal.Data.Stream.Async
- Streamly.Internal.Data.Stream.IsStream
- Streamly.Internal.Data.Stream.MkType
- Streamly.Internal.Data.Stream.Parallel
- Streamly.Internal.Data.Stream.Prelude
- Streamly.Internal.Data.Stream.SVar
- Streamly.Internal.Data.Stream.Serial
- Streamly.Internal.Data.Stream.Zip
- Streamly.Internal.Data.Stream.ZipAsync
- Unfold
- FileSystem
- Streamly.Internal.FileSystem.Event
- Streamly.Internal.FileSystem.Event.Darwin
- Streamly.Internal.FileSystem.Event.Linux
- Streamly.Internal.FileSystem.Event.Windows
- Streamly.Internal.FileSystem.Event
- Network
- Unicode
- Network
- Streamly.Prelude
Flags
Manual Flags
Name | Description | Default |
---|---|---|
fusion-plugin | Use fusion plugin for benchmarks and executables | Disabled |
inspection | Enable inspection testing | Disabled |
debug | Debug build with asserts enabled | Disabled |
internal-dev | DO NOT USE, ONLY FOR INTERNAL USE. | Disabled |
has-llvm | Use llvm backend for code generation | Disabled |
opt | off=GHC default, on=-O2 | Enabled |
limit-build-mem | Limits memory when building | Disabled |
internal-use-unliftio | DO NOT USE, ONLY FOR INTERNAL USE. | Disabled |
Use -f <flag> to enable a flag, or -f -<flag> to disable that flag. More info
Downloads
- streamly-0.11.0.tar.gz [browse] (Cabal source package)
- Package description (as included in the package)
Maintainer's Corner
For package maintainers and hackage trustees
Candidates
Versions [RSS] | 0.1.0, 0.1.1, 0.1.2, 0.2.0, 0.2.1, 0.3.0, 0.4.0, 0.4.1, 0.5.0, 0.5.1, 0.5.2, 0.6.0, 0.6.1, 0.7.0, 0.7.1, 0.7.2, 0.7.3, 0.7.3.1, 0.7.3.2, 0.8.0, 0.8.1, 0.8.1.1, 0.8.2, 0.8.3, 0.9.0, 0.10.0, 0.10.1, 0.11.0 |
---|---|
Change log | CHANGELOG.md |
Dependencies | atomic-primops (>=0.8 && <0.9), base (>=4.12 && <4.22), containers (>=0.6.0 && <0.8), deepseq (>=1.4.4 && <1.6), directory (>=1.2.2 && <1.4), exceptions (>=0.8.0 && <0.11), fusion-plugin-types (>=0.1 && <0.2), hashable (>=1.3 && <1.6), heaps (>=0.3 && <0.5), lockfree-queue (>=0.2.4 && <0.3), monad-control (>=1.0 && <1.1), mtl (>=2.2.2 && <2.4), network (>=2.6 && <3.3), streamly-core (==0.3.0), template-haskell (>=2.14 && <2.24), transformers (>=0.5.5 && <0.7), transformers-base (>=0.4 && <0.5), unicode-data (>=0.1 && <0.7), unordered-containers (>=0.2 && <0.3), Win32 (>=2.6 && <2.14) [details] |
Tested with | ghc ==8.6.5, ghc ==8.8.4, ghc ==8.10.7, ghc ==9.0.2, ghc ==9.2.8, ghc ==9.4.7, ghc ==9.6.3, ghc ==9.8.1, ghc ==9.10.1, ghc ==9.12.1 |
License | BSD-3-Clause |
Copyright | 2017 Composewell Technologies |
Author | Composewell Technologies |
Maintainer | streamly@composewell.com |
Category | Streamly, Concurrency, Streaming, Dataflow, Pipes, Reactivity, List, Logic, Non-determinism, Parsing, Array, Time, Unicode, Filesystem, Network |
Home page | https://streamly.composewell.com |
Bug tracker | https://github.com/composewell/streamly/issues |
Source repo | head: git clone https://github.com/composewell/streamly |
Uploaded | by adithyaov at 2025-09-03T13:33:40Z |
Distributions | LTSHaskell:0.10.1, NixOS:0.10.1, Stackage:0.10.1 |
Reverse Dependencies | 34 direct, 4 indirect [details] |
Downloads | 19486 total (118 in the last 30 days) |
Rating | 2.5 (votes: 6) [estimated by Bayesian average] |
Your Rating | |
Status | Docs available [build log] Last success reported on 2025-09-03 [all 1 reports] |