1# [Streamly][]: Idiomatic Haskell with C-Like Performance
3[](https://gitter.im/composewell/streamly)
4[](https://hackage.haskell.org/package/streamly-core)
5[](https://hackage.haskell.org/package/streamly)
9Please read the [Streamly 0.9.0 Upgrade Guide](/docs/User/Project/Upgrading-0.8-to-0.9.md).
13Streamly is a powerful Haskell library that provides developers with
14the essential building blocks to create safe, scalable, modular, and
15high-performance software. With Streamly, developers can enjoy the
16benefits of Haskell's type safety while leveraging C-like program
17performance. Streamly offers a comprehensive range of features,
20* Haskell's strong type safety.
21* C-program-like performance capabilities.
22* Flexible, modular building blocks.
23* Idiomatic functional programming.
24* Fearless, declarative concurrency for seamless parallel execution.
25* A collection of ecosystem libraries for fast and efficient development.
27Check out the [Streamly Getting Started
28Guide](/docs/User/Tutorials/getting-started.md) and [Quick
29Overview](/docs/User/Tutorials/quick-overview.md) for an introduction
30to the library. For more detailed documentation, visit the [Haskell
31Streamly website][Streamly].
35Streamly delivers C-like speed in Haskell by fusing stream pipelines
36using the stream-fusion technique, resulting in compiled code that is
37equivalent to handwritten C code, eliminating intermediate allocations
40For a comprehensive comparison of Streamly to other Haskell streaming
41libraries, check out our [streaming benchmarks][streaming-benchmarks]
42page. In fact, Streamly's fused loops can be up to 100 times faster than
43those of libraries without stream fusion.
45## Declarative Concurrency
47Streamly introduces declarative concurrency to standard functional
48streaming abstractions. Declarative concurrency abstracts away the
49low-level details of concurrency management, such as locks and threads,
50and allows for easier and safer parallelization of code. For example,
51with Streamly you can do things like repeat actions concurrently to
52generate a stream of results, map functions concurrently on a stream,
53and combine multiple streams concurrently to create a single output
58Streamly provides a comprehensive and unified API for basic programming
59needs, covering a wide range of areas including streaming, concurrency,
60logic programming, reactive programming, pinned and unpinned arrays,
61serialization, builders, parsers, unicode processing, file-io, file
62system events, and network-io. By unifying functionality from disparate
63Haskell libraries, Streamly simplifies development while delivering
64equivalent or improved performance. Additionally, the complexity
65of handling combinations of lazy, strict, bytestring, and text is
66eliminated by using streams for lazy evaluation, and by generalizing
67bytestring and text to arrays.
69Check out [Streamly's documentation][Streamly] for more information
70about Streamly's features.
74In addition to the fundamental programming constructs, Streamly also
75provides higher-level functionality through supporting packages such as
76[streamly-process][], [streamly-shell][], and [streamly-coreutils][]
77that are essential for general programming tasks. Check out the
78[streamly-examples][] repository for some program snippets.
82Traditionally, you must choose between modularity and performance when
83writing code. However, with [Haskell Streamly][Streamly], you can have
84the best of both worlds. By taking advantage of GHC's stream fusion
85optimizations (such as `case-of-case` and `spec-constr`), Streamly achieves
86performance comparable to an equivalent C program while still allowing
87for highly modular code.
91The following authors/libraries have influenced or inspired this library in a
94 * Roman Leshchinskiy ([vector](http://hackage.haskell.org/package/vector))
95 * Gabriella Gonzalez ([foldl](https://hackage.haskell.org/package/foldl))
96 * Alberto G. Corona ([transient](https://hackage.haskell.org/package/transient))
98Please see the [`credits`](/docs/User/ProjectRelated/Credits.md) directory for a full
99list of contributors, credits and licenses.
103Streamly is an [open source](https://github.com/composewell/streamly)
104project available under a liberal [BSD-3-Clause license][LICENSE]
106## Contributing to Streamly
108As an open project we welcome contributions:
110* [Streamly Contributor's Guide][CONTRIBUTING.md]
111* [Contact the streamly development team](mailto:streamly@composewell.com)
115Professional support is available for [Streamly][]: please contact
116[support@composewell.com](mailto:support@composewell.com).
118You can also join our [community chat
119channel](https://gitter.im/composewell/streamly) on Gitter.
125[Streamly]: https://streamly.composewell.com/
126[streaming-benchmarks]: https://github.com/composewell/streaming-benchmarks
127[concurrency-benchmarks]: https://github.com/composewell/concurrency-benchmarks
128[streamly-examples]: https://github.com/composewell/streamly-examples
129[streamly-process]: https://github.com/composewell/streamly-process
130[streamly-shell]: https://github.com/composewell/streamly-shell
131[streamly-coreutils]: https://github.com/composewell/streamly-coreutils
134Keep all the unstable links here so that they can be updated to stable
135links (for online docs) before we release.
140[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