on 178b0ba help sign in
streamly/streamly.cabal
562 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:
44 Streamly, Concurrency, Streaming, Dataflow, Pipes, Reactivity, List,
45 Logic, Non-determinism, Parsing, Array, Time, Unicode, Filesystem,
46 Network
47stability: Stable
48build-type: Custom
50extra-source-files:
51 .circleci/config.yml
52 .ghci
53 .github/workflows/haskell.yml
54 .gitignore
55 .hlint.ignore
56 .hlint.yaml
57 .travis.yml
58 CONTRIBUTING.md
59 Changelog.md
60 INSTALL.md
61 MAINTAINING.md
62 README.md
63 appveyor.yml
64 benchmark/*.hs
65 benchmark/README.md
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
78 bin/bench.sh
79 bin/bench-exec-one.sh
80 bin/build-lib.sh
81 bin/ghc.sh
82 bin/run-ci.sh
83 bin/mk-hscope.sh
84 bin/mk-tags.sh
85 bin/targets.sh
86 bin/test.sh
87 cabal.project
88 cabal.project.ci
89 charts-0/streamly-vs-list-time.svg
90 configure
91 configure.ac
92 credits/*.md
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
104 default.nix
105 design/*.md
106 design/*.png
107 design/*.rst
108 docs/Overview.md
109 docs/Build.md
110 docs/streamly-vs-async.md
111 docs/streamly-vs-lists.md
112 docs/transformers.md
113 examples/README.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
120 src/config.h.in
121 src/inline.hs
122 test/README.md
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
140 stack.yaml
142extra-tmp-files:
143 config.log
144 config.status
145 autom4te.cache
146 src/config.h
148source-repository head
149 type: git
150 location: https://github.com/composewell/streamly
152flag fusion-plugin
153 description: Use fusion plugin for benchmarks and executables
154 manual: True
155 default: False
157flag inspection
158 description: Enable inspection testing
159 manual: True
160 default: False
162flag debug
163 description: Debug build with asserts enabled
164 manual: True
165 default: False
167flag dev
168 description: Development build
169 manual: True
170 default: False
172flag has-llvm
173 description: Use llvm backend for code generation
174 manual: True
175 default: False
177flag no-fusion
178 description: Disable rewrite rules for stream fusion
179 manual: True
180 default: False
182flag streamk
183 description: Use CPS style streams when possible
184 manual: True
185 default: False
187flag use-c-malloc
188 description: Use C malloc instead of GHC malloc
189 manual: True
190 default: False
192flag opt
193 description: off=GHC default, on=-O2
194 manual: True
195 default: True
197flag doctests
198 description: Build doctests test suite
199 manual: True
200 default: False
202custom-setup
203 setup-depends:
204 base >= 4 && <5,
205 cabal-doctest >= 1 && <1.1,
206 Cabal >= 2.2 && < 4
208-------------------------------------------------------------------------------
209-- Common stanzas
210-------------------------------------------------------------------------------
212common compile-options
213 default-language: Haskell2010
215 if os(darwin)
216 cpp-options: -DCABAL_OS_DARWIN
218 if os(linux)
219 cpp-options: -DCABAL_OS_LINUX
221 if os(windows)
222 cpp-options: -DCABAL_OS_WINDOWS
224 if flag(streamk)
225 cpp-options: -DUSE_STREAMK_ONLY
227 if flag(no-fusion)
228 cpp-options: -DDISABLE_FUSION
230 if flag(dev)
231 cpp-options: -DDEVBUILD
233 if flag(inspection)
234 cpp-options: -DINSPECTION
236 if flag(use-c-malloc)
237 cpp-options: -DUSE_C_MALLOC
239 ghc-options: -Wall
240 -Wcompat
241 -Wunrecognised-warning-flags
242 -Widentities
243 -Wincomplete-record-updates
244 -Wincomplete-uni-patterns
245 -Wredundant-constraints
246 -Wnoncanonical-monad-instances
247 -Rghc-timing
249 if flag(has-llvm)
250 ghc-options: -fllvm
252 if flag(dev)
253 ghc-options: -Wmissed-specialisations
254 -Wall-missed-specialisations
256 if flag(dev) || flag(debug)
257 ghc-options: -fno-ignore-asserts
259common default-extensions
260 default-extensions:
261 BangPatterns
262 CApiFFI
263 CPP
264 ConstraintKinds
265 DeriveDataTypeable
266 DeriveGeneric
267 DeriveTraversable
268 ExistentialQuantification
269 FlexibleContexts
270 FlexibleInstances
271 GeneralizedNewtypeDeriving
272 InstanceSigs
273 KindSignatures
274 LambdaCase
275 MagicHash
276 MultiParamTypeClasses
277 PatternSynonyms
278 RankNTypes
279 RecordWildCards
280 ScopedTypeVariables
281 TupleSections
282 TypeFamilies
283 ViewPatterns
285 -- MonoLocalBinds, enabled by TypeFamilies, causes performance
286 -- regressions. Disable it. This must come after TypeFamilies,
287 -- otherwise TypeFamilies will enable it again.
288 NoMonoLocalBinds
290 -- UndecidableInstances -- Does not show any perf impact
291 -- UnboxedTuples -- interferes with (#.)
293common optimization-options
294 if flag(opt)
295 ghc-options: -O2
296 -fdicts-strict
297 -fspec-constr-recursive=16
298 -fmax-worker-args=16
300common threading-options
301 ghc-options: -threaded
302 -with-rtsopts=-N
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.
310common lib-options
311 import: compile-options, optimization-options, default-extensions
313-------------------------------------------------------------------------------
314-- Library
315-------------------------------------------------------------------------------
317library
318 import: lib-options
320 if impl(ghc >= 8.1)
321 default-extensions: TypeApplications
322 if impl(ghc >= 8.6)
323 default-extensions: QuantifiedConstraints
325 js-sources: jsbits/clock.js
326 include-dirs: src
327 if os(windows)
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
332 if os(darwin)
333 frameworks: Cocoa
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
337 exposed-modules:
338 Streamly.Internal.FileSystem.Event.Darwin
340 if os(linux)
341 exposed-modules: Streamly.Internal.FileSystem.Event.Linux
343 hs-source-dirs: src
344 other-modules:
345 Streamly.Data.Array
346 , Streamly.Data.Prim.Array
347 , Streamly.Data.SmallArray
349 exposed-modules:
350 Streamly.Prelude
351 , Streamly.Data.Unfold
352 , Streamly.Data.Fold
353 , Streamly.Data.Fold.Tee
354 , Streamly.Data.Array.Foreign
356 -- Text Processing
357 , Streamly.Unicode.Stream
359 -- Filesystem/IO
360 , Streamly.FileSystem.Handle
361 , Streamly.Console.Stdio
363 -- Network/IO
364 , Streamly.Network.Socket
365 , Streamly.Network.Inet.TCP
367 -- documentation
368 , Streamly.Tutorial
370 -- Deprecated
371 , Streamly
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
379 -- streamly-base
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
413 -- Unboxed IORef
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
442 -- streamly-core
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
471 -- streamly-arrays
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
482 -- Memory storage
483 , Streamly.Internal.Ring.Foreign
485 -- streamly-unicode
486 , Streamly.Internal.Unicode.Stream
487 , Streamly.Internal.Unicode.Char
488 , Streamly.Internal.Unicode.Array.Char
489 , Streamly.Internal.Unicode.Array.Prim.Pinned
491 -- streamly-serde
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
502 -- streamly-console
503 , Streamly.Internal.Console.Stdio
505 -- streamly-network
506 , Streamly.Internal.Network.Socket
507 , Streamly.Internal.Network.Inet.TCP
509 build-depends:
510 -- Core libraries shipped with ghc, the min and max
511 -- constraints of these libraries should match with
512 -- the GHC versions we support
513 base >= 4.9 && < 5
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
519 , mtl >= 2.2 && < 3
520 , primitive >= 0.5.4 && < 0.8
521 , transformers >= 0.4 && < 0.6
523 , heaps >= 0.3 && < 0.5
525 -- concurrency
526 , atomic-primops >= 0.8 && < 0.9
527 , lockfree-queue >= 0.2.3 && < 0.3
529 -- transfomers
530 , monad-control >= 1.0 && < 2
531 , transformers-base >= 0.4 && < 0.5
533 , fusion-plugin-types >= 0.1 && < 0.2
535 -- Network
536 , network >= 2.6 && < 4
539 if flag(inspection)
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
544 -- tests fail
545 if flag(dev) && flag(inspection)
546 build-depends: inspection-and-dev-flags-cannot-be-used-together
548test-suite doctests
549 type: exitcode-stdio-1.0
550 main-is: doctests.hs
551 if flag(doctests)
552 build-depends:
553 base
554 , base-compat >=0.10.5 && <0.12
555 , doctest >=0.15 && <0.18
556 , streamly
557 else
558 buildable: False
560 ghc-options: -Wall -threaded
561 hs-source-dirs: .
562 default-language: Haskell2010