streamly
Version 0.6.0 revision 0 uploaded by harendra.
Package meta
- Synopsis
- Beautiful Streaming, Concurrent and Reactive Composition
- Description
Streamly, short for streaming concurrently, provides monadic streams, with a simple API, almost identical to standard lists, and an in-built support for concurrency. By using stream-style combinators on stream composition, streams can be generated, merged, chained, mapped, zipped, and consumed concurrently – providing a generalized high level programming framework unifying streaming and concurrency. Controlled concurrency allows even infinite streams to be evaluated concurrently. Concurrency is auto scaled based on feedback from the stream consumer. The programmer does not have to be aware of threads, locking or synchronization to write scalable concurrent programs.
The basic streaming functionality of streamly is equivalent to that provided by streaming libraries like streaming, pipes, and conduit. In addition to providing 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.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 interoperates with the popular streaming libraries, see the interoperation section in Streamly.Tutorial.
Why use streamly?
Simplicity: Simple list like streaming API, if you know how to use lists then you know how to use streamly. This library is built with simplicity and ease of use as a primary design goal.
Concurrency: Simple, powerful, and scalable concurrency. Concurrency is built-in, and not intrusive, concurrent programs are written exactly the same way as non-concurrent ones.
Generality: Unifies functionality provided by several disparate packages (streaming, concurrency, list transformer, logic programming, reactive programming) in a concise API.
Performance: Streamly is designed for high performance. It employs stream fusion optimizations for best possible performance. Serial peformance is equivalent to the venerable vector library in most cases and even better in some cases. Concurrent performance is unbeatable. See streaming-benchmarks for a comparison of popular streaming libraries on micro-benchmarks.
Where to find more information:
Quick Overview: README file in the package
Detailed Tutorial: Streamly.Tutorial module in the haddock documentation
Reference Documentation: Haddock documentation for the respective modules
Examples: examples directory in the package
Guides: docs directory in the package, for documentation on advanced topics, limitations, semantics of the library or on specific use cases.
- Author
- Harendra Kumar
- Bug reports
- https://github.com/composewell/streamly/issues
- Category
- Control, Concurrency, Streaming, Reactivity
- Copyright
- 2017 Harendra Kumar
- Homepage
- https://github.com/composewell/streamly
- Maintainer
- harendra.kumar@gmail.com
- Package URL
- n/a
- Stability
- Experimental