1# [Streamly][]: Idiomatic Haskell with C-Like Performance
3[](https://gitter.im/composewell/streamly)
4[](https://hackage.haskell.org/package/streamly)
6Streamly is a powerful Haskell library that provides developers with
7the essential building blocks to create safe, scalable, modular, and
8high-performance software. With Streamly, developers can enjoy the
9benefits of Haskell's type safety while leveraging C-like program
10performance. Streamly offers a comprehensive range of features,
13* Haskell's strong type safety.
14* C-program-like performance capabilities.
15* Flexible, modular building blocks.
16* Idiomatic functional programming.
17* Fearless, declarative concurrency for seamless parallel execution.
18* A collection of ecosystem libraries for fast and efficient development.
20Check out the [Streamly Setup and Usage
21Guide](/docs/User/Tutorials/setup-and-usage.md) and [Quick
22Overview](/docs/User/Tutorials/quick-overview.md) for an introduction
23to the library. For more detailed documentation, visit the [Haskell
24Streamly website][Streamly].
28Streamly delivers C-like speed in Haskell by fusing stream pipelines
29using the stream-fusion technique, resulting in compiled code that is
30equivalent to handwritten C code, eliminating intermediate allocations
33For a comprehensive comparison of Streamly to other Haskell streaming
34libraries, check out our [streaming benchmarks][streaming-benchmarks]
35page. In fact, Streamly's fused loops can be up to 100 times faster than
36those of libraries without stream fusion.
38## Declarative Concurrency
40Streamly introduces declarative concurrency to standard functional
41streaming abstractions. Declarative concurrency abstracts away the
42low-level details of concurrency management, such as locks and threads,
43and allows for easier and safer parallelization of code. For example,
44with Streamly you can do things like repeat actions concurrently to
45generate a stream of results, map functions concurrently on a stream,
46and combine multiple streams concurrently to create a single output
51Streamly provides a comprehensive and unified API for basic programming
52needs, covering a wide range of areas including streaming, concurrency,
53logic programming, reactive programming, pinned and unpinned arrays,
54serialization, builders, parsers, unicode processing, file-io, file
55system events, and network-io. By unifying functionality from disparate
56Haskell libraries, Streamly simplifies development while delivering
57equivalent or improved performance. Additionally, the complexity
58of handling combinations of lazy, strict, bytestring, and text is
59eliminated by using streams for lazy evaluation, and by generalizing
60bytestring and text to arrays.
62Check out [Streamly's documentation][Streamly] for more information
63about Streamly's features.
67In addition to the fundamental programming constructs, Streamly also
68provides higher-level functionality through supporting packages such as
69[streamly-process][], [streamly-shell][], and [streamly-coreutils][]
70that are essential for general programming tasks. Check out the
71[streamly-examples][] repository for some program snippets.
75Traditionally, you must choose between modularity and performance when
76writing code. However, with [Haskell Streamly][Streamly], you can have
77the best of both worlds. By taking advantage of GHC's stream fusion
78optimizations (such as `case-of-case` and `spec-constr`), Streamly achieves
79performance comparable to an equivalent C program while still allowing
80for highly modular code.
84The following authors/libraries have influenced or inspired this library in a
87 * Roman Leshchinskiy ([vector](http://hackage.haskell.org/package/vector))
88 * Gabriella Gonzalez ([foldl](https://hackage.haskell.org/package/foldl))
89 * Alberto G. Corona ([transient](https://hackage.haskell.org/package/transient))
91Please see the [`credits`](/docs/User/ProjectRelated/Credits.md) directory for a full
92list of contributors, credits and licenses.
96Streamly is an [open source](https://github.com/composewell/streamly)
97project available under a liberal [BSD-3-Clause license][LICENSE]
99## Contributing to Streamly
101As an open project we welcome contributions:
103* [Streamly Contributor's Guide][CONTRIBUTING.md]
104* [Contact the streamly development team](mailto:streamly@composewell.com)
108Professional support is available for [Streamly][]: please contact
109[support@composewell.com](mailto:support@composewell.com).
111You can also join our [community chat
112channel](https://gitter.im/composewell/streamly) on Gitter.
118[Streamly]: https://streamly.composewell.com/
119[streaming-benchmarks]: https://github.com/composewell/streaming-benchmarks
120[concurrency-benchmarks]: https://github.com/composewell/concurrency-benchmarks
121[streamly-examples]: https://github.com/composewell/streamly-examples
122[streamly-process]: https://github.com/composewell/streamly-process
123[streamly-shell]: https://github.com/composewell/streamly-shell
124[streamly-coreutils]: https://github.com/composewell/streamly-coreutils
127Keep all the unstable links here so that they can be updated to stable
128links (for online docs) before we release.
133[CONTRIBUTING.md]: /docs/Developer/Contributing.md
keysesc to close
- j k
- move down, up
- enter
- open
- esc
- back, or up a level
- 1 2 3 4
- readme, files, commits, refs
- /
- filter
- y
- copy the clone command
- c
- compare the chosen commit with another (or shift-click both)
- ?
- show or hide this list