The latest version of streamly is 0.10.1-3.

streamly

Version 0.7.1 revision 1 uploaded by pranaysashank.

Package meta

Synopsis
Beautiful Streaming, Concurrent and Reactive Composition
Description

Streamly is a framework for writing programs in a high level, declarative data flow programming paradigm. It provides a simple API, very close to standard Haskell lists. A program is expressed as a composition of data processing pipes, generally known as streams. Streams can be generated, merged, chained, mapped, zipped, and consumed concurrently – enabling a high level, declarative yet concurrent composition of programs. Programs can be concurrent or non-concurrent without any significant change. Concurrency is auto scaled based on consumption rate. Programmers do not have to be aware of threads, locking or synchronization to write scalable concurrent programs. Streamly provides C like performance, orders of magnitude better compared to existing streaming libraries.

Streamly is designed to express the full spectrum of programs with highest performance. Do not think that if you are writing a small and simple program it may not be for you. It expresses a small "hello world" program with the same efficiency, simplicity and elegance as a large scale concurrent application. It unifies many different aspects of special purpose libraries into a single yet simple framework.

Streamly covers the functionality provided by Haskell lists as well as the functionality provided by streaming libraries like streaming, pipes, and conduit with a simpler API and better performance. Streamly provides advanced stream composition including various ways of appending, merging, zipping, splitting, grouping, distributing, partitioning and unzipping of streams with true streaming and with concurrency. Streamly subsumes the functionality of list transformer libraries like pipes or list-t and also the logic programming library logict. The grouping, splitting and windowing combinators in streamly can be compared to the window operators in Apache Flink. However, compared to Flink streamly has a pure functional, succinct and expressive API.

The concurrency capabilities of streamly are much more advanced and powerful compared to the basic concurrency functionality provided by the async package. Streamly is a first class reactive programming library. If you are familiar with Reactive Extensions you will find that it is very similar. For most RxJs combinators you can find or write corresponding ones in streamly. Streamly can be used as an alternative to Yampa or reflex as well.

Streamly focuses on practical engineering with high performance. From well written streamly programs one can expect performance competitive to C. High performance streaming eliminates the need for string and text libraries like bytestring, text and their lazy and strict flavors. The confusion and cognitive overhead arising from different string types is eliminated. The two fundamental types in streamly are arrays for storage and streams for processing. Strings and text are simply streams or arrays of Char as they should be. Arrays in streamly have performance at par with the vector library.

Where to find more information:

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
streamly@composewell.com
Package URL
n/a
Stability
Experimental

Components