streamly: Beautiful Streaming, Concurrent and Reactive Composition
Streamly, short for streaming concurrently, is a simple yet powerful streaming library with concurrent merging and concurrent nested looping support. A stream is just like a list except that it is a list of monadic actions rather than pure values. Streamly streams can be generated, consumed, combined, or transformed serially or concurrently. We can loop over a stream serially or concurrently. We can also have serial or concurrent nesting of loops. For those familiar with list transformer concept streamly is a concurrent list transformer. Streamly uses standard composition abstractions. Concurrent composition is just the same as serial composition except that we use a simple combinator to request a concurrent composition instead of serial. The programmer does not have to be aware of threads, locking or synchronization to write scalable concurrent programs.
Streamly provides functionality that is equivalent to streaming libraries
like pipes and
conduit but with a simple list
like API. The streaming API of streamly is close to the monadic streams API
of the vector package and
similar in concept to the
streaming package. In
addition to the streaming functionality, streamly subsumes the functionality
of list transformer libraries like pipes
or
list-t and also the logic
programming library logict. On
the concurrency side, it subsumes the functionality of the
async package. Because it
supports streaming with concurrency we can write FRP applications similar in
concept to Yampa or
reflex.
Streamly has excellent performance, see streaming-benchmarks for a comparison of popular streaming libraries on micro-benchmarks. For file IO, currently the library provides only one API to stream the lines in the file as Strings. Future versions will provide better streaming file IO options. Streamly interworks with the popular streaming libraries, see the interworking section in Streamly.Tutorial.
Where to find more information:
README
shipped with the package for a quick overviewStreamly.Tutorial module in the haddock documentation for a detailed introduction
examples
directory in the package for some simple practical examples
[Skip to Readme]
Flags
Manual Flags
Name | Description | Default |
---|---|---|
dev | Build development version | Disabled |
examples | Build examples | Disabled |
examples-sdl | Include examples that use SDL dependency | Disabled |
Use -f <flag> to enable a flag, or -f -<flag> to disable that flag. More info
Downloads
- streamly-0.2.1.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 |
---|---|
Change log | Changelog.md |
Dependencies | atomic-primops (>=0.8 && <0.9), base (>=4.8 && <5), containers (>=0.5 && <0.6), exceptions (>=0.8 && <0.11), lifted-base (>=0.2 && <0.3), lockfree-queue (>=0.2.3 && <0.3), monad-control (>=1.0 && <2), mtl (>=2.2 && <3), semigroups (>=0.18 && <0.19), stm (>=2.4.3 && <2.5), transformers (>=0.4 && <0.6), transformers-base (>=0.4 && <0.5) [details] |
License | BSD-3-Clause |
Copyright | 2017 Harendra Kumar |
Author | Harendra Kumar |
Maintainer | harendra.kumar@gmail.com |
Category | Control, Concurrency, Streaming, Reactivity |
Home page | https://github.com/composewell/streamly |
Bug tracker | https://github.com/composewell/streamly/issues |
Source repo | head: git clone https://github.com/composewell/streamly |
Uploaded | by harendra at 2018-06-05T14:01:49Z |
Distributions | LTSHaskell:0.10.1, NixOS:0.10.1, Stackage:0.10.1 |
Reverse Dependencies | 34 direct, 4 indirect [details] |
Executables | CirclingSquare, AcidRain, MergeSort, ListDir, SearchQuery, chart-nested, chart-linear |
Downloads | 17969 total (157 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 2018-06-05 [all 1 reports] |