on cbb57f2 help sign in
streamly/streamly.cabal
559 lines 20 kB history raw
1cabal-version: 2.2
2name: streamly
3version: 0.7.2
4synopsis: Dataflow programming and declarative concurrency
5description:
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:
11 .
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
17 .
18 Simple, unified, and powerful abstractions:
19 .
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
26 .
27 We recommend the better-organized module documentation on the
28 <https://streamly.composewell.com Streamly homepage>.
29 .
31homepage: https://streamly.composewell.com
32bug-reports: https://github.com/composewell/streamly/issues
33license: BSD-3-Clause
34license-file: LICENSE
35tested-with: GHC==8.0.2
36 , GHC==8.4.4
37 , GHC==8.6.5
38 , GHC==8.8.4
39 , GHC==8.10.4
40author: Composewell Technologies
41maintainer: streamly@composewell.com
42copyright: 2017 Composewell Technologies
43category: Control, Concurrency, Streaming, Reactivity
44stability: Experimental
45build-type: Custom
47extra-source-files:
48 .circleci/config.yml
49 .ghci
50 .github/workflows/haskell.yml
51 .gitignore
52 .hlint.ignore
53 .hlint.yaml
54 .travis.yml
55 CONTRIBUTING.md
56 Changelog.md
57 INSTALL.md
58 MAINTAINING.md
59 README.md
60 appveyor.yml
61 benchmark/*.hs
62 benchmark/README.md
63 benchmark/Streamly/Benchmark/Data/*.hs
64 benchmark/Streamly/Benchmark/Data/Array/Stream/Foreign.hs
65 benchmark/Streamly/Benchmark/Data/Parser/*.hs
66 benchmark/Streamly/Benchmark/Data/Stream/*.hs
67 benchmark/Streamly/Benchmark/FileSystem/*.hs
68 benchmark/Streamly/Benchmark/FileSystem/Handle/*.hs
69 benchmark/Streamly/Benchmark/Prelude/*.hs
70 benchmark/Streamly/Benchmark/Prelude/Serial/*.hs
71 benchmark/Streamly/Benchmark/Unicode/*.hs
72 benchmark/lib/Streamly/Benchmark/*.hs
73 benchmark/lib/Streamly/Benchmark/Common/*.hs
74 benchmark/streamly-benchmarks.cabal
75 bin/bench.sh
76 bin/bench-exec-one.sh
77 bin/build-lib.sh
78 bin/ghc.sh
79 bin/run-ci.sh
80 bin/mk-hscope.sh
81 bin/mk-tags.sh
82 bin/targets.sh
83 bin/test.sh
84 cabal.project
85 cabal.project.ci
86 charts-0/streamly-vs-list-time.svg
87 configure
88 configure.ac
89 credits/*.md
90 credits/Yampa-0.10.6.2.txt
91 credits/base-4.12.0.0.txt
92 credits/bjoern-2008-2009.txt
93 credits/clock-0.7.2.txt
94 credits/foldl-1.4.5.txt
95 credits/fsnotify-0.3.0.1.txt
96 credits/hfsevents-0.1.6.txt
97 credits/pipes-concurrency-2.0.8.txt
98 credits/primitive-0.7.0.0.txt
99 credits/transient-0.5.5.txt
100 credits/vector-0.12.0.2.txt
101 default.nix
102 design/*.md
103 design/*.png
104 design/*.rst
105 docs/Overview.md
106 docs/Build.md
107 docs/streamly-vs-async.md
108 docs/streamly-vs-lists.md
109 docs/transformers.md
110 examples/README.md
111 src/Streamly/Internal/Data/Stream/Instances.hs
112 src/Streamly/Internal/Data/Time/Clock/config-clock.h
113 src/Streamly/Internal/Data/Array/PrimInclude.hs
114 src/Streamly/Internal/Data/Array/Prim/TypesInclude.hs
115 src/Streamly/Internal/Data/Array/Prim/MutTypesInclude.hs
116 src/Streamly/Internal/FileSystem/Event/Darwin.h
117 src/config.h.in
118 src/inline.hs
119 test/README.md
120 test/Streamly/Test/Common/Array.hs
121 test/Streamly/Test/Data/*.hs
122 test/Streamly/Test/Data/Array/Prim.hs
123 test/Streamly/Test/Data/Array/Prim/Pinned.hs
124 test/Streamly/Test/Data/Array/Foreign.hs
125 test/Streamly/Test/Data/Parser/ParserD.hs
126 test/Streamly/Test/FileSystem/Event.hs
127 test/Streamly/Test/FileSystem/Handle.hs
128 test/Streamly/Test/Network/Socket.hs
129 test/Streamly/Test/Network/Inet/TCP.hs
130 test/Streamly/Test/Prelude.hs
131 test/Streamly/Test/Prelude/*.hs
132 test/Streamly/Test/Unicode/Stream.hs
133 test/lib/Streamly/Test/Common.hs
134 test/lib/Streamly/Test/Prelude/Common.hs
135 test/streamly-tests.cabal
136 test/version-bounds.hs
137 stack.yaml
139extra-tmp-files:
140 config.log
141 config.status
142 autom4te.cache
143 src/config.h
145source-repository head
146 type: git
147 location: https://github.com/composewell/streamly
149flag fusion-plugin
150 description: Use fusion plugin for benchmarks and executables
151 manual: True
152 default: False
154flag inspection
155 description: Enable inspection testing
156 manual: True
157 default: False
159flag debug
160 description: Debug build with asserts enabled
161 manual: True
162 default: False
164flag dev
165 description: Development build
166 manual: True
167 default: False
169flag has-llvm
170 description: Use llvm backend for code generation
171 manual: True
172 default: False
174flag no-fusion
175 description: Disable rewrite rules for stream fusion
176 manual: True
177 default: False
179flag streamk
180 description: Use CPS style streams when possible
181 manual: True
182 default: False
184flag use-c-malloc
185 description: Use C malloc instead of GHC malloc
186 manual: True
187 default: False
189flag opt
190 description: off=GHC default, on=-O2
191 manual: True
192 default: True
194flag doctests
195 description: Build doctests test suite
196 manual: True
197 default: False
199custom-setup
200 setup-depends:
201 base >= 4 && <5,
202 cabal-doctest >= 1 && <1.1,
203 Cabal >= 2.2 && < 4
205-------------------------------------------------------------------------------
206-- Common stanzas
207-------------------------------------------------------------------------------
209common compile-options
210 default-language: Haskell2010
212 if os(darwin)
213 cpp-options: -DCABAL_OS_DARWIN
215 if os(linux)
216 cpp-options: -DCABAL_OS_LINUX
218 if os(windows)
219 cpp-options: -DCABAL_OS_WINDOWS
221 if flag(streamk)
222 cpp-options: -DUSE_STREAMK_ONLY
224 if flag(no-fusion)
225 cpp-options: -DDISABLE_FUSION
227 if flag(dev)
228 cpp-options: -DDEVBUILD
230 if flag(inspection)
231 cpp-options: -DINSPECTION
233 if flag(use-c-malloc)
234 cpp-options: -DUSE_C_MALLOC
236 ghc-options: -Wall
237 -Wcompat
238 -Wunrecognised-warning-flags
239 -Widentities
240 -Wincomplete-record-updates
241 -Wincomplete-uni-patterns
242 -Wredundant-constraints
243 -Wnoncanonical-monad-instances
244 -Rghc-timing
246 if flag(has-llvm)
247 ghc-options: -fllvm
249 if flag(dev)
250 ghc-options: -Wmissed-specialisations
251 -Wall-missed-specialisations
253 if flag(dev) || flag(debug)
254 ghc-options: -fno-ignore-asserts
256common default-extensions
257 default-extensions:
258 BangPatterns
259 CApiFFI
260 CPP
261 ConstraintKinds
262 DeriveDataTypeable
263 DeriveGeneric
264 DeriveTraversable
265 ExistentialQuantification
266 FlexibleContexts
267 FlexibleInstances
268 GeneralizedNewtypeDeriving
269 InstanceSigs
270 KindSignatures
271 LambdaCase
272 MagicHash
273 MultiParamTypeClasses
274 PatternSynonyms
275 RankNTypes
276 RecordWildCards
277 ScopedTypeVariables
278 TupleSections
279 TypeFamilies
280 ViewPatterns
282 -- MonoLocalBinds, enabled by TypeFamilies, causes performance
283 -- regressions. Disable it. This must come after TypeFamilies,
284 -- otherwise TypeFamilies will enable it again.
285 NoMonoLocalBinds
287 -- UndecidableInstances -- Does not show any perf impact
288 -- UnboxedTuples -- interferes with (#.)
290common optimization-options
291 if flag(opt)
292 ghc-options: -O2
293 -fdicts-strict
294 -fspec-constr-recursive=16
295 -fmax-worker-args=16
297common threading-options
298 ghc-options: -threaded
299 -with-rtsopts=-N
301-- We need optimization options here to optimize internal (non-inlined)
302-- versions of functions. Also, we have some benchmarking inspection tests
303-- part of the library when built with --benchmarks flag. Thos tests fail
304-- if we do not use optimization options here. It was observed that due to
305-- -O2 here some concurrent/nested benchmarks improved and others regressed.
306-- We can investigate a bit more here why the regression occurred.
307common lib-options
308 import: compile-options, optimization-options, default-extensions
310-------------------------------------------------------------------------------
311-- Library
312-------------------------------------------------------------------------------
314library
315 import: lib-options
317 if impl(ghc >= 8.1)
318 default-extensions: TypeApplications
319 if impl(ghc >= 8.6)
320 default-extensions: QuantifiedConstraints
322 js-sources: jsbits/clock.js
323 include-dirs: src
324 if os(windows)
325 c-sources: src/Streamly/Internal/Data/Time/Clock/Windows.c
326 exposed-modules: Streamly.Internal.FileSystem.Event.Windows
327 build-depends: Win32 >= 2.6 && < 2.10
329 if os(darwin)
330 frameworks: Cocoa
331 include-dirs: src/Streamly/Internal
332 c-sources: src/Streamly/Internal/Data/Time/Clock/Darwin.c
333 , src/Streamly/Internal/FileSystem/Event/Darwin.m
334 exposed-modules:
335 Streamly.Internal.FileSystem.Event.Darwin
337 if os(linux)
338 exposed-modules: Streamly.Internal.FileSystem.Event.Linux
340 hs-source-dirs: src
341 other-modules:
342 Streamly.Data.Array
343 , Streamly.Data.Prim.Array
344 , Streamly.Data.SmallArray
346 exposed-modules:
347 Streamly.Prelude
348 , Streamly.Data.Unfold
349 , Streamly.Data.Fold
350 , Streamly.Data.Fold.Tee
351 , Streamly.Data.Array.Foreign
353 -- Text Processing
354 , Streamly.Unicode.Stream
356 -- Filesystem/IO
357 , Streamly.FileSystem.Handle
358 , Streamly.Console.Stdio
360 -- Network/IO
361 , Streamly.Network.Socket
362 , Streamly.Network.Inet.TCP
364 -- documentation
365 , Streamly.Tutorial
367 -- Deprecated
368 , Streamly
369 , Streamly.Data.Unicode.Stream
370 , Streamly.Memory.Array
372 -- Internal modules, listed roughly in dependency order
373 -- To view dependency graph:
374 -- graphmod | dot -Tps > deps.ps
376 -- streamly-base
377 , Streamly.Internal.BaseCompat
378 , Streamly.Internal.Control.Exception
379 , Streamly.Internal.Control.Monad
380 , Streamly.Internal.Control.Concurrent
381 , Streamly.Internal.Data.Cont
382 , Streamly.Internal.Data.Tuple.Strict
383 , Streamly.Internal.Data.Maybe.Strict
384 , Streamly.Internal.Data.Either.Strict
385 , Streamly.Internal.Foreign.Malloc
386 , Streamly.Internal.Data.Atomics
387 , Streamly.Internal.Data.IOFinalizer
388 , Streamly.Internal.Data.Time
389 , Streamly.Internal.Data.Time.TimeSpec
390 , Streamly.Internal.Data.Time.Units
391 , Streamly.Internal.Data.Time.Clock.Type
392 , Streamly.Internal.Data.Time.Clock
394 -- streamly-core-stream
395 , Streamly.Internal.Data.SVar
396 , Streamly.Internal.Data.Stream.StreamK.Type
397 , Streamly.Internal.Data.Fold.Type
398 , Streamly.Internal.Data.Stream.StreamD.Step
399 , Streamly.Internal.Data.Stream.StreamD.Type
400 , Streamly.Internal.Data.Stream.StreamDK.Type
401 , Streamly.Internal.Data.Unfold.Type
402 , Streamly.Internal.Data.Producer.Type
403 , Streamly.Internal.Data.Producer
404 , Streamly.Internal.Data.Producer.Source
405 , Streamly.Internal.Data.Sink.Type
406 , Streamly.Internal.Data.Parser.ParserK.Type
407 , Streamly.Internal.Data.Parser.ParserD.Type
408 , Streamly.Internal.Data.Pipe.Type
410 -- Unboxed IORef
411 , Streamly.Internal.Data.IORef.Prim
413 -- streamly-core-array
414 -- May depend on streamly-core-stream
415 , Streamly.Internal.Data.Array.Foreign.Mut.Type
416 , Streamly.Internal.Data.Array.Foreign.Type
417 , Streamly.Internal.Data.Array.Prim.Mut.Type
418 , Streamly.Internal.Data.Array.Prim.Type
419 , Streamly.Internal.Data.Array.Prim.Pinned.Mut.Type
420 , Streamly.Internal.Data.Array.Prim.Pinned.Type
421 , Streamly.Internal.Data.SmallArray.Type
423 -- streamly-base-streams
424 , Streamly.Internal.Data.Stream.StreamK
425 -- StreamD depends on streamly-core-array
426 , Streamly.Internal.Data.Stream.StreamD.Generate
427 , Streamly.Internal.Data.Stream.StreamD.Eliminate
428 , Streamly.Internal.Data.Stream.StreamD.Nesting
429 , Streamly.Internal.Data.Stream.StreamD.Transform
430 , Streamly.Internal.Data.Stream.StreamD.Exception
431 , Streamly.Internal.Data.Stream.StreamD.Lift
432 , Streamly.Internal.Data.Stream.StreamD
433 , Streamly.Internal.Data.Stream.StreamDK
434 , Streamly.Internal.Data.Stream.Prelude
436 , Streamly.Internal.Data.Parser.ParserD.Tee
437 , Streamly.Internal.Data.Parser.ParserD
439 -- streamly-core
440 , Streamly.Internal.Data.Unfold
441 , Streamly.Internal.Data.Fold.Tee
442 , Streamly.Internal.Data.Fold
443 , Streamly.Internal.Data.Sink
444 , Streamly.Internal.Data.Parser
445 , Streamly.Internal.Data.Pipe
447 , Streamly.Internal.Data.Stream.SVar
448 , Streamly.Internal.Data.Stream.Serial
449 , Streamly.Internal.Data.Stream.Async
450 , Streamly.Internal.Data.Stream.Parallel
451 , Streamly.Internal.Data.Stream.Ahead
452 , Streamly.Internal.Data.Stream.Zip
453 , Streamly.Internal.Data.Stream.IsStream.Combinators
454 , Streamly.Internal.Data.Stream.IsStream.Common
455 , Streamly.Internal.Data.Stream.IsStream.Types
456 , Streamly.Internal.Data.Stream.IsStream.Enumeration
457 , Streamly.Internal.Data.Stream.IsStream.Generate
458 , Streamly.Internal.Data.Stream.IsStream.Eliminate
459 , Streamly.Internal.Data.Stream.IsStream.Transform
460 , Streamly.Internal.Data.Stream.IsStream.Expand
461 , Streamly.Internal.Data.Stream.IsStream.Reduce
462 , Streamly.Internal.Data.Stream.IsStream.Exception
463 , Streamly.Internal.Data.Stream.IsStream.Lift
464 , Streamly.Internal.Data.Stream.IsStream.Top
465 , Streamly.Internal.Data.Stream.IsStream
466 , Streamly.Internal.Data.List
468 -- streamly-arrays
469 -- May depend on streamly-core
470 , Streamly.Internal.Data.Array
471 , Streamly.Internal.Data.Array.Foreign
472 , Streamly.Internal.Data.Array.Prim
473 , Streamly.Internal.Data.Array.Prim.Pinned
474 , Streamly.Internal.Data.SmallArray
475 , Streamly.Internal.Data.Array.Stream.Mut.Foreign
476 , Streamly.Internal.Data.Array.Stream.Foreign
477 , Streamly.Internal.Data.Array.Stream.Fold.Foreign
479 -- Memory storage
480 , Streamly.Internal.Ring.Foreign
482 -- streamly-unicode
483 , Streamly.Internal.Unicode.Stream
484 , Streamly.Internal.Unicode.Char
485 , Streamly.Internal.Unicode.Array.Char
486 , Streamly.Internal.Unicode.Array.Prim.Pinned
488 -- streamly-serde
489 , Streamly.Internal.Data.Binary.Decode
491 -- streamly-filesystem
492 , Streamly.Internal.FileSystem.Handle
493 , Streamly.Internal.FileSystem.Dir
494 , Streamly.Internal.FileSystem.File
495 , Streamly.Internal.FileSystem.IOVec
496 , Streamly.Internal.FileSystem.FDIO
497 , Streamly.Internal.FileSystem.FD
499 -- streamly-console
500 , Streamly.Internal.Console.Stdio
502 -- streamly-network
503 , Streamly.Internal.Network.Socket
504 , Streamly.Internal.Network.Inet.TCP
506 build-depends:
507 -- Core libraries shipped with ghc, the min and max
508 -- constraints of these libraries should match with
509 -- the GHC versions we support
510 base >= 4.9 && < 5
511 , containers >= 0.5 && < 0.7
512 , deepseq >= 1.4.1 && < 1.5
513 , directory >= 1.2.2 && < 1.4
514 , exceptions >= 0.8 && < 0.11
515 , ghc-prim >= 0.2 && < 0.8
516 , mtl >= 2.2 && < 3
517 , primitive >= 0.5.4 && < 0.8
518 , transformers >= 0.4 && < 0.6
520 , heaps >= 0.3 && < 0.5
522 -- concurrency
523 , atomic-primops >= 0.8 && < 0.9
524 , lockfree-queue >= 0.2.3 && < 0.3
526 -- transfomers
527 , monad-control >= 1.0 && < 2
528 , transformers-base >= 0.4 && < 0.5
530 , fusion-plugin-types >= 0.1 && < 0.2
532 -- Network
533 , network >= 2.6 && < 4
536 if flag(inspection)
537 build-depends: template-haskell >= 2.14 && < 2.17
538 , inspection-testing >= 0.4 && < 0.5
540 -- Array uses a Storable constraint in dev build making several inspection
541 -- tests fail
542 if flag(dev) && flag(inspection)
543 build-depends: inspection-and-dev-flags-cannot-be-used-together
545test-suite doctests
546 type: exitcode-stdio-1.0
547 main-is: doctests.hs
548 if flag(doctests)
549 build-depends:
550 base
551 , base-compat >=0.10.5 && <0.12
552 , doctest >=0.15 && <0.18
553 , streamly
554 else
555 buildable: False
557 ghc-options: -Wall -threaded
558 hs-source-dirs: .
559 default-language: Haskell2010