4synopsis: Dataflow programming and declarative concurrency
6 <https://streamly.composewell.com Streamly> is a framework to build
7 reliable and scalable software systems from modular building blocks
8 using dataflow programming (streaming) and declarative concurrency.
9 Powerful stream fusion framework in streamly allows high-performance,
10 modular combinatorial programming. Key features include:
12 * Performance on par with C (<https://github.com/composewell/streaming-benchmarks Benchmarks>)
13 * Simple API, similar to standard Haskell lists (<https://github.com/composewell/streamly-examples Examples>)
14 * Declarative concurrency with automatic scaling
15 * Filesystem, fsnotify, network, and Unicode support included
16 * More functionality provided via many ecosystem packages
18 Simple, unified, and powerful abstractions:
20 * Unifies streams, arrays, folds, and parsers
21 * Unified streams and arrays obviate the need for text and bytestring
22 * Unifies Data.List, list-t, and logict with streams
23 * Supports numerous time-domain combinators
24 * Interworks with other streaming libraries
25 * Arrays interwork with bytestring
27 We recommend the better-organized module documentation on the
28 <https://streamly.composewell.com Streamly homepage>.
31homepage: https://streamly.composewell.com
32bug-reports: https://github.com/composewell/streamly/issues
35tested-with: GHC==8.0.2
40author: Composewell Technologies
41maintainer: streamly@composewell.com
42copyright: 2017 Composewell Technologies
44 Streamly, Concurrency, Streaming, Dataflow, Pipes, Reactivity, List,
45 Logic, Non-determinism, Parsing, Array, Time, Unicode, Filesystem,
53 .github/workflows/haskell.yml
66 benchmark/Streamly/Benchmark/Data/*.hs
67 benchmark/Streamly/Benchmark/Data/Array/Stream/Foreign.hs
68 benchmark/Streamly/Benchmark/Data/Parser/*.hs
69 benchmark/Streamly/Benchmark/Data/Stream/*.hs
70 benchmark/Streamly/Benchmark/FileSystem/*.hs
71 benchmark/Streamly/Benchmark/FileSystem/Handle/*.hs
72 benchmark/Streamly/Benchmark/Prelude/*.hs
73 benchmark/Streamly/Benchmark/Prelude/Serial/*.hs
74 benchmark/Streamly/Benchmark/Unicode/*.hs
75 benchmark/lib/Streamly/Benchmark/*.hs
76 benchmark/lib/Streamly/Benchmark/Common/*.hs
77 benchmark/streamly-benchmarks.cabal
89 charts-0/streamly-vs-list-time.svg
93 credits/Yampa-0.10.6.2.txt
94 credits/base-4.12.0.0.txt
95 credits/bjoern-2008-2009.txt
96 credits/clock-0.7.2.txt
97 credits/foldl-1.4.5.txt
98 credits/fsnotify-0.3.0.1.txt
99 credits/hfsevents-0.1.6.txt
100 credits/pipes-concurrency-2.0.8.txt
101 credits/primitive-0.7.0.0.txt
102 credits/transient-0.5.5.txt
103 credits/vector-0.12.0.2.txt
110 docs/streamly-vs-async.md
111 docs/streamly-vs-lists.md
114 src/Streamly/Internal/Data/Stream/Instances.hs
115 src/Streamly/Internal/Data/Time/Clock/config-clock.h
116 src/Streamly/Internal/Data/Array/PrimInclude.hs
117 src/Streamly/Internal/Data/Array/Prim/TypesInclude.hs
118 src/Streamly/Internal/Data/Array/Prim/MutTypesInclude.hs
119 src/Streamly/Internal/FileSystem/Event/Darwin.h
123 test/Streamly/Test/Common/Array.hs
124 test/Streamly/Test/Data/*.hs
125 test/Streamly/Test/Data/Array/Prim.hs
126 test/Streamly/Test/Data/Array/Prim/Pinned.hs
127 test/Streamly/Test/Data/Array/Foreign.hs
128 test/Streamly/Test/Data/Parser/ParserD.hs
129 test/Streamly/Test/FileSystem/Event.hs
130 test/Streamly/Test/FileSystem/Handle.hs
131 test/Streamly/Test/Network/Socket.hs
132 test/Streamly/Test/Network/Inet/TCP.hs
133 test/Streamly/Test/Prelude.hs
134 test/Streamly/Test/Prelude/*.hs
135 test/Streamly/Test/Unicode/Stream.hs
136 test/lib/Streamly/Test/Common.hs
137 test/lib/Streamly/Test/Prelude/Common.hs
138 test/streamly-tests.cabal
139 test/version-bounds.hs
148source-repository head
150 location: https://github.com/composewell/streamly
153 description: Use fusion plugin for benchmarks and executables
158 description: Enable inspection testing
163 description: Debug build with asserts enabled
168 description: Development build
173 description: Use llvm backend for code generation
178 description: Disable rewrite rules for stream fusion
183 description: Use CPS style streams when possible
188 description: Use C malloc instead of GHC malloc
193 description: off=GHC default, on=-O2
198 description: Build doctests test suite
205 cabal-doctest >= 1 && <1.1,
208-------------------------------------------------------------------------------
210-------------------------------------------------------------------------------
212common compile-options
213 default-language: Haskell2010
216 cpp-options: -DCABAL_OS_DARWIN
219 cpp-options: -DCABAL_OS_LINUX
222 cpp-options: -DCABAL_OS_WINDOWS
225 cpp-options: -DUSE_STREAMK_ONLY
228 cpp-options: -DDISABLE_FUSION
231 cpp-options: -DDEVBUILD
234 cpp-options: -DINSPECTION
236 if flag(use-c-malloc)
237 cpp-options: -DUSE_C_MALLOC
241 -Wunrecognised-warning-flags
243 -Wincomplete-record-updates
244 -Wincomplete-uni-patterns
245 -Wredundant-constraints
246 -Wnoncanonical-monad-instances
253 ghc-options: -Wmissed-specialisations
254 -Wall-missed-specialisations
256 if flag(dev) || flag(debug)
257 ghc-options: -fno-ignore-asserts
259common default-extensions
268 ExistentialQuantification
271 GeneralizedNewtypeDeriving
276 MultiParamTypeClasses
285 -- MonoLocalBinds, enabled by TypeFamilies, causes performance
286 -- regressions. Disable it. This must come after TypeFamilies,
287 -- otherwise TypeFamilies will enable it again.
290 -- UndecidableInstances -- Does not show any perf impact
291 -- UnboxedTuples -- interferes with (#.)
293common optimization-options
297 -fspec-constr-recursive=16
300common threading-options
301 ghc-options: -threaded
304-- We need optimization options here to optimize internal (non-inlined)
305-- versions of functions. Also, we have some benchmarking inspection tests
306-- part of the library when built with --benchmarks flag. Thos tests fail
307-- if we do not use optimization options here. It was observed that due to
308-- -O2 here some concurrent/nested benchmarks improved and others regressed.
309-- We can investigate a bit more here why the regression occurred.
311 import: compile-options, optimization-options, default-extensions
313-------------------------------------------------------------------------------
315-------------------------------------------------------------------------------
321 default-extensions: TypeApplications
323 default-extensions: QuantifiedConstraints
325 js-sources: jsbits/clock.js
328 c-sources: src/Streamly/Internal/Data/Time/Clock/Windows.c
329 exposed-modules: Streamly.Internal.FileSystem.Event.Windows
330 build-depends: Win32 >= 2.6 && < 2.10
334 include-dirs: src/Streamly/Internal
335 c-sources: src/Streamly/Internal/Data/Time/Clock/Darwin.c
336 , src/Streamly/Internal/FileSystem/Event/Darwin.m
338 Streamly.Internal.FileSystem.Event.Darwin
341 exposed-modules: Streamly.Internal.FileSystem.Event.Linux
346 , Streamly.Data.Prim.Array
347 , Streamly.Data.SmallArray
351 , Streamly.Data.Unfold
353 , Streamly.Data.Fold.Tee
354 , Streamly.Data.Array.Foreign
357 , Streamly.Unicode.Stream
360 , Streamly.FileSystem.Handle
361 , Streamly.Console.Stdio
364 , Streamly.Network.Socket
365 , Streamly.Network.Inet.TCP
372 , Streamly.Data.Unicode.Stream
373 , Streamly.Memory.Array
375 -- Internal modules, listed roughly in dependency order
376 -- To view dependency graph:
377 -- graphmod | dot -Tps > deps.ps
380 , Streamly.Internal.BaseCompat
381 , Streamly.Internal.Control.Exception
382 , Streamly.Internal.Control.Monad
383 , Streamly.Internal.Control.Concurrent
384 , Streamly.Internal.Data.Cont
385 , Streamly.Internal.Data.Tuple.Strict
386 , Streamly.Internal.Data.Maybe.Strict
387 , Streamly.Internal.Data.Either.Strict
388 , Streamly.Internal.Foreign.Malloc
389 , Streamly.Internal.Data.Atomics
390 , Streamly.Internal.Data.IOFinalizer
391 , Streamly.Internal.Data.Time
392 , Streamly.Internal.Data.Time.TimeSpec
393 , Streamly.Internal.Data.Time.Units
394 , Streamly.Internal.Data.Time.Clock.Type
395 , Streamly.Internal.Data.Time.Clock
397 -- streamly-core-stream
398 , Streamly.Internal.Data.SVar
399 , Streamly.Internal.Data.Stream.StreamK.Type
400 , Streamly.Internal.Data.Fold.Type
401 , Streamly.Internal.Data.Stream.StreamD.Step
402 , Streamly.Internal.Data.Stream.StreamD.Type
403 , Streamly.Internal.Data.Stream.StreamDK.Type
404 , Streamly.Internal.Data.Unfold.Type
405 , Streamly.Internal.Data.Producer.Type
406 , Streamly.Internal.Data.Producer
407 , Streamly.Internal.Data.Producer.Source
408 , Streamly.Internal.Data.Sink.Type
409 , Streamly.Internal.Data.Parser.ParserK.Type
410 , Streamly.Internal.Data.Parser.ParserD.Type
411 , Streamly.Internal.Data.Pipe.Type
414 , Streamly.Internal.Data.IORef.Prim
416 -- streamly-core-array
417 -- May depend on streamly-core-stream
418 , Streamly.Internal.Data.Array.Foreign.Mut.Type
419 , Streamly.Internal.Data.Array.Foreign.Type
420 , Streamly.Internal.Data.Array.Prim.Mut.Type
421 , Streamly.Internal.Data.Array.Prim.Type
422 , Streamly.Internal.Data.Array.Prim.Pinned.Mut.Type
423 , Streamly.Internal.Data.Array.Prim.Pinned.Type
424 , Streamly.Internal.Data.SmallArray.Type
426 -- streamly-base-streams
427 , Streamly.Internal.Data.Stream.StreamK
428 -- StreamD depends on streamly-core-array
429 , Streamly.Internal.Data.Stream.StreamD.Generate
430 , Streamly.Internal.Data.Stream.StreamD.Eliminate
431 , Streamly.Internal.Data.Stream.StreamD.Nesting
432 , Streamly.Internal.Data.Stream.StreamD.Transform
433 , Streamly.Internal.Data.Stream.StreamD.Exception
434 , Streamly.Internal.Data.Stream.StreamD.Lift
435 , Streamly.Internal.Data.Stream.StreamD
436 , Streamly.Internal.Data.Stream.StreamDK
437 , Streamly.Internal.Data.Stream.Prelude
439 , Streamly.Internal.Data.Parser.ParserD.Tee
440 , Streamly.Internal.Data.Parser.ParserD
443 , Streamly.Internal.Data.Unfold
444 , Streamly.Internal.Data.Fold.Tee
445 , Streamly.Internal.Data.Fold
446 , Streamly.Internal.Data.Sink
447 , Streamly.Internal.Data.Parser
448 , Streamly.Internal.Data.Pipe
450 , Streamly.Internal.Data.Stream.SVar
451 , Streamly.Internal.Data.Stream.Serial
452 , Streamly.Internal.Data.Stream.Async
453 , Streamly.Internal.Data.Stream.Parallel
454 , Streamly.Internal.Data.Stream.Ahead
455 , Streamly.Internal.Data.Stream.Zip
456 , Streamly.Internal.Data.Stream.IsStream.Combinators
457 , Streamly.Internal.Data.Stream.IsStream.Common
458 , Streamly.Internal.Data.Stream.IsStream.Types
459 , Streamly.Internal.Data.Stream.IsStream.Enumeration
460 , Streamly.Internal.Data.Stream.IsStream.Generate
461 , Streamly.Internal.Data.Stream.IsStream.Eliminate
462 , Streamly.Internal.Data.Stream.IsStream.Transform
463 , Streamly.Internal.Data.Stream.IsStream.Expand
464 , Streamly.Internal.Data.Stream.IsStream.Reduce
465 , Streamly.Internal.Data.Stream.IsStream.Exception
466 , Streamly.Internal.Data.Stream.IsStream.Lift
467 , Streamly.Internal.Data.Stream.IsStream.Top
468 , Streamly.Internal.Data.Stream.IsStream
469 , Streamly.Internal.Data.List
472 -- May depend on streamly-core
473 , Streamly.Internal.Data.Array
474 , Streamly.Internal.Data.Array.Foreign
475 , Streamly.Internal.Data.Array.Prim
476 , Streamly.Internal.Data.Array.Prim.Pinned
477 , Streamly.Internal.Data.SmallArray
478 , Streamly.Internal.Data.Array.Stream.Mut.Foreign
479 , Streamly.Internal.Data.Array.Stream.Foreign
480 , Streamly.Internal.Data.Array.Stream.Fold.Foreign
483 , Streamly.Internal.Ring.Foreign
486 , Streamly.Internal.Unicode.Stream
487 , Streamly.Internal.Unicode.Char
488 , Streamly.Internal.Unicode.Array.Char
489 , Streamly.Internal.Unicode.Array.Prim.Pinned
492 , Streamly.Internal.Data.Binary.Decode
494 -- streamly-filesystem
495 , Streamly.Internal.FileSystem.Handle
496 , Streamly.Internal.FileSystem.Dir
497 , Streamly.Internal.FileSystem.File
498 , Streamly.Internal.FileSystem.IOVec
499 , Streamly.Internal.FileSystem.FDIO
500 , Streamly.Internal.FileSystem.FD
503 , Streamly.Internal.Console.Stdio
506 , Streamly.Internal.Network.Socket
507 , Streamly.Internal.Network.Inet.TCP
510 -- Core libraries shipped with ghc, the min and max
511 -- constraints of these libraries should match with
512 -- the GHC versions we support
514 , containers >= 0.5 && < 0.7
515 , deepseq >= 1.4.1 && < 1.5
516 , directory >= 1.2.2 && < 1.4
517 , exceptions >= 0.8 && < 0.11
518 , ghc-prim >= 0.2 && < 0.8
520 , primitive >= 0.5.4 && < 0.8
521 , transformers >= 0.4 && < 0.6
523 , heaps >= 0.3 && < 0.5
526 , atomic-primops >= 0.8 && < 0.9
527 , lockfree-queue >= 0.2.3 && < 0.3
530 , monad-control >= 1.0 && < 2
531 , transformers-base >= 0.4 && < 0.5
533 , fusion-plugin-types >= 0.1 && < 0.2
536 , network >= 2.6 && < 4
540 build-depends: template-haskell >= 2.14 && < 2.17
541 , inspection-testing >= 0.4 && < 0.5
543 -- Array uses a Storable constraint in dev build making several inspection
545 if flag(dev) && flag(inspection)
546 build-depends: inspection-and-dev-flags-cannot-be-used-together
549 type: exitcode-stdio-1.0
554 , base-compat >=0.10.5 && <0.12
555 , doctest >=0.15 && <0.18
560 ghc-options: -Wall -threaded
562 default-language: Haskell2010
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