on f2b2aa4 help sign in
streamly/streamly.cabal
558 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 CONTRIBUTING.md
58 Changelog.md
59 INSTALL.md
60 MAINTAINING.md
61 README.md
62 appveyor.yml
63 benchmark/*.hs
64 benchmark/README.md
65 benchmark/Streamly/Benchmark/Data/*.hs
66 benchmark/Streamly/Benchmark/Data/Array/Stream/Foreign.hs
67 benchmark/Streamly/Benchmark/Data/Parser/*.hs
68 benchmark/Streamly/Benchmark/Data/Stream/*.hs
69 benchmark/Streamly/Benchmark/FileSystem/*.hs
70 benchmark/Streamly/Benchmark/FileSystem/Handle/*.hs
71 benchmark/Streamly/Benchmark/Prelude/*.hs
72 benchmark/Streamly/Benchmark/Prelude/Serial/*.hs
73 benchmark/Streamly/Benchmark/Unicode/*.hs
74 benchmark/lib/Streamly/Benchmark/*.hs
75 benchmark/lib/Streamly/Benchmark/Common/*.hs
76 benchmark/streamly-benchmarks.cabal
77 bin/bench.sh
78 bin/bench-exec-one.sh
79 bin/build-lib.sh
80 bin/ghc.sh
81 bin/run-ci.sh
82 bin/mk-hscope.sh
83 bin/mk-tags.sh
84 bin/targets.sh
85 bin/test.sh
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
138extra-tmp-files:
139 config.log
140 config.status
141 autom4te.cache
142 src/config.h
144source-repository head
145 type: git
146 location: https://github.com/composewell/streamly
148flag fusion-plugin
149 description: Use fusion plugin for benchmarks and executables
150 manual: True
151 default: False
153flag inspection
154 description: Enable inspection testing
155 manual: True
156 default: False
158flag debug
159 description: Debug build with asserts enabled
160 manual: True
161 default: False
163flag dev
164 description: Development build
165 manual: True
166 default: False
168flag has-llvm
169 description: Use llvm backend for code generation
170 manual: True
171 default: False
173flag no-fusion
174 description: Disable rewrite rules for stream fusion
175 manual: True
176 default: False
178flag streamk
179 description: Use CPS style streams when possible
180 manual: True
181 default: False
183flag use-c-malloc
184 description: Use C malloc instead of GHC malloc
185 manual: True
186 default: False
188flag opt
189 description: off=GHC default, on=-O2
190 manual: True
191 default: True
193flag doctests
194 description: Build doctests test suite
195 manual: True
196 default: False
198custom-setup
199 setup-depends:
200 base >= 4 && <5,
201 cabal-doctest >= 1 && <1.1,
202 Cabal >= 2.2 && < 4
204-------------------------------------------------------------------------------
205-- Common stanzas
206-------------------------------------------------------------------------------
208common compile-options
209 default-language: Haskell2010
211 if os(darwin)
212 cpp-options: -DCABAL_OS_DARWIN
214 if os(linux)
215 cpp-options: -DCABAL_OS_LINUX
217 if os(windows)
218 cpp-options: -DCABAL_OS_WINDOWS
220 if flag(streamk)
221 cpp-options: -DUSE_STREAMK_ONLY
223 if flag(no-fusion)
224 cpp-options: -DDISABLE_FUSION
226 if flag(dev)
227 cpp-options: -DDEVBUILD
229 if flag(inspection)
230 cpp-options: -DINSPECTION
232 if flag(use-c-malloc)
233 cpp-options: -DUSE_C_MALLOC
235 ghc-options: -Wall
236 -Wcompat
237 -Wunrecognised-warning-flags
238 -Widentities
239 -Wincomplete-record-updates
240 -Wincomplete-uni-patterns
241 -Wredundant-constraints
242 -Wnoncanonical-monad-instances
243 -Rghc-timing
245 if flag(has-llvm)
246 ghc-options: -fllvm
248 if flag(dev)
249 ghc-options: -Wmissed-specialisations
250 -Wall-missed-specialisations
252 if flag(dev) || flag(debug)
253 ghc-options: -fno-ignore-asserts
255common default-extensions
256 default-extensions:
257 BangPatterns
258 CApiFFI
259 CPP
260 ConstraintKinds
261 DeriveDataTypeable
262 DeriveGeneric
263 DeriveTraversable
264 ExistentialQuantification
265 FlexibleContexts
266 FlexibleInstances
267 GeneralizedNewtypeDeriving
268 InstanceSigs
269 KindSignatures
270 LambdaCase
271 MagicHash
272 MultiParamTypeClasses
273 PatternSynonyms
274 RankNTypes
275 RecordWildCards
276 ScopedTypeVariables
277 TupleSections
278 TypeFamilies
279 ViewPatterns
281 -- MonoLocalBinds, enabled by TypeFamilies, causes performance
282 -- regressions. Disable it. This must come after TypeFamilies,
283 -- otherwise TypeFamilies will enable it again.
284 NoMonoLocalBinds
286 -- UndecidableInstances -- Does not show any perf impact
287 -- UnboxedTuples -- interferes with (#.)
289common optimization-options
290 if flag(opt)
291 ghc-options: -O2
292 -fdicts-strict
293 -fspec-constr-recursive=16
294 -fmax-worker-args=16
296common threading-options
297 ghc-options: -threaded
298 -with-rtsopts=-N
300-- We need optimization options here to optimize internal (non-inlined)
301-- versions of functions. Also, we have some benchmarking inspection tests
302-- part of the library when built with --benchmarks flag. Thos tests fail
303-- if we do not use optimization options here. It was observed that due to
304-- -O2 here some concurrent/nested benchmarks improved and others regressed.
305-- We can investigate a bit more here why the regression occurred.
306common lib-options
307 import: compile-options, optimization-options, default-extensions
309-------------------------------------------------------------------------------
310-- Library
311-------------------------------------------------------------------------------
313library
314 import: lib-options
316 if impl(ghc >= 8.1)
317 default-extensions: TypeApplications
318 if impl(ghc >= 8.6)
319 default-extensions: QuantifiedConstraints
321 js-sources: jsbits/clock.js
322 include-dirs: src
323 if os(windows)
324 c-sources: src/Streamly/Internal/Data/Time/Clock/Windows.c
325 exposed-modules: Streamly.Internal.FileSystem.Event.Windows
326 build-depends: Win32 >= 2.6 && < 2.10
328 if os(darwin)
329 frameworks: Cocoa
330 include-dirs: src/Streamly/Internal
331 c-sources: src/Streamly/Internal/Data/Time/Clock/Darwin.c
332 , src/Streamly/Internal/FileSystem/Event/Darwin.m
333 exposed-modules:
334 Streamly.Internal.FileSystem.Event.Darwin
336 if os(linux)
337 exposed-modules: Streamly.Internal.FileSystem.Event.Linux
339 hs-source-dirs: src
340 other-modules:
341 Streamly.Data.Array
342 , Streamly.Data.Prim.Array
343 , Streamly.Data.SmallArray
345 exposed-modules:
346 Streamly.Prelude
347 , Streamly.Data.Unfold
348 , Streamly.Data.Fold
349 , Streamly.Data.Fold.Tee
350 , Streamly.Data.Array.Foreign
352 -- Text Processing
353 , Streamly.Unicode.Stream
355 -- Filesystem/IO
356 , Streamly.FileSystem.Handle
357 , Streamly.Console.Stdio
359 -- Network/IO
360 , Streamly.Network.Socket
361 , Streamly.Network.Inet.TCP
363 -- documentation
364 , Streamly.Tutorial
366 -- Deprecated
367 , Streamly
368 , Streamly.Data.Unicode.Stream
369 , Streamly.Memory.Array
371 -- Internal modules, listed roughly in dependency order
372 -- To view dependency graph:
373 -- graphmod | dot -Tps > deps.ps
375 -- streamly-base
376 , Streamly.Internal.BaseCompat
377 , Streamly.Internal.Control.Exception
378 , Streamly.Internal.Control.Monad
379 , Streamly.Internal.Control.Concurrent
380 , Streamly.Internal.Data.Cont
381 , Streamly.Internal.Data.Tuple.Strict
382 , Streamly.Internal.Data.Maybe.Strict
383 , Streamly.Internal.Data.Either.Strict
384 , Streamly.Internal.Foreign.Malloc
385 , Streamly.Internal.Data.Atomics
386 , Streamly.Internal.Data.IOFinalizer
387 , Streamly.Internal.Data.Time
388 , Streamly.Internal.Data.Time.TimeSpec
389 , Streamly.Internal.Data.Time.Units
390 , Streamly.Internal.Data.Time.Clock.Type
391 , Streamly.Internal.Data.Time.Clock
393 -- streamly-core-stream
394 , Streamly.Internal.Data.SVar
395 , Streamly.Internal.Data.Stream.StreamK.Type
396 , Streamly.Internal.Data.Fold.Type
397 , Streamly.Internal.Data.Stream.StreamD.Step
398 , Streamly.Internal.Data.Stream.StreamD.Type
399 , Streamly.Internal.Data.Stream.StreamDK.Type
400 , Streamly.Internal.Data.Unfold.Type
401 , Streamly.Internal.Data.Producer.Type
402 , Streamly.Internal.Data.Producer
403 , Streamly.Internal.Data.Producer.Source
404 , Streamly.Internal.Data.Sink.Type
405 , Streamly.Internal.Data.Parser.ParserK.Type
406 , Streamly.Internal.Data.Parser.ParserD.Type
407 , Streamly.Internal.Data.Pipe.Type
409 -- Unboxed IORef
410 , Streamly.Internal.Data.IORef.Prim
412 -- streamly-core-array
413 -- May depend on streamly-core-stream
414 , Streamly.Internal.Data.Array.Foreign.Mut.Type
415 , Streamly.Internal.Data.Array.Foreign.Type
416 , Streamly.Internal.Data.Array.Prim.Mut.Type
417 , Streamly.Internal.Data.Array.Prim.Type
418 , Streamly.Internal.Data.Array.Prim.Pinned.Mut.Type
419 , Streamly.Internal.Data.Array.Prim.Pinned.Type
420 , Streamly.Internal.Data.SmallArray.Type
422 -- streamly-base-streams
423 , Streamly.Internal.Data.Stream.StreamK
424 -- StreamD depends on streamly-core-array
425 , Streamly.Internal.Data.Stream.StreamD.Generate
426 , Streamly.Internal.Data.Stream.StreamD.Eliminate
427 , Streamly.Internal.Data.Stream.StreamD.Nesting
428 , Streamly.Internal.Data.Stream.StreamD.Transform
429 , Streamly.Internal.Data.Stream.StreamD.Exception
430 , Streamly.Internal.Data.Stream.StreamD.Lift
431 , Streamly.Internal.Data.Stream.StreamD
432 , Streamly.Internal.Data.Stream.StreamDK
433 , Streamly.Internal.Data.Stream.Prelude
435 , Streamly.Internal.Data.Parser.ParserD.Tee
436 , Streamly.Internal.Data.Parser.ParserD
438 -- streamly-core
439 , Streamly.Internal.Data.Unfold
440 , Streamly.Internal.Data.Fold.Tee
441 , Streamly.Internal.Data.Fold
442 , Streamly.Internal.Data.Sink
443 , Streamly.Internal.Data.Parser
444 , Streamly.Internal.Data.Pipe
446 , Streamly.Internal.Data.Stream.SVar
447 , Streamly.Internal.Data.Stream.Serial
448 , Streamly.Internal.Data.Stream.Async
449 , Streamly.Internal.Data.Stream.Parallel
450 , Streamly.Internal.Data.Stream.Ahead
451 , Streamly.Internal.Data.Stream.Zip
452 , Streamly.Internal.Data.Stream.IsStream.Combinators
453 , Streamly.Internal.Data.Stream.IsStream.Common
454 , Streamly.Internal.Data.Stream.IsStream.Types
455 , Streamly.Internal.Data.Stream.IsStream.Enumeration
456 , Streamly.Internal.Data.Stream.IsStream.Generate
457 , Streamly.Internal.Data.Stream.IsStream.Eliminate
458 , Streamly.Internal.Data.Stream.IsStream.Transform
459 , Streamly.Internal.Data.Stream.IsStream.Expand
460 , Streamly.Internal.Data.Stream.IsStream.Reduce
461 , Streamly.Internal.Data.Stream.IsStream.Exception
462 , Streamly.Internal.Data.Stream.IsStream.Lift
463 , Streamly.Internal.Data.Stream.IsStream.Top
464 , Streamly.Internal.Data.Stream.IsStream
465 , Streamly.Internal.Data.List
467 -- streamly-arrays
468 -- May depend on streamly-core
469 , Streamly.Internal.Data.Array
470 , Streamly.Internal.Data.Array.Foreign
471 , Streamly.Internal.Data.Array.Prim
472 , Streamly.Internal.Data.Array.Prim.Pinned
473 , Streamly.Internal.Data.SmallArray
474 , Streamly.Internal.Data.Array.Stream.Mut.Foreign
475 , Streamly.Internal.Data.Array.Stream.Foreign
476 , Streamly.Internal.Data.Array.Stream.Fold.Foreign
478 -- Memory storage
479 , Streamly.Internal.Ring.Foreign
481 -- streamly-unicode
482 , Streamly.Internal.Unicode.Stream
483 , Streamly.Internal.Unicode.Char
484 , Streamly.Internal.Unicode.Array.Char
485 , Streamly.Internal.Unicode.Array.Prim.Pinned
487 -- streamly-serde
488 , Streamly.Internal.Data.Binary.Decode
490 -- streamly-filesystem
491 , Streamly.Internal.FileSystem.Handle
492 , Streamly.Internal.FileSystem.Dir
493 , Streamly.Internal.FileSystem.File
494 , Streamly.Internal.FileSystem.IOVec
495 , Streamly.Internal.FileSystem.FDIO
496 , Streamly.Internal.FileSystem.FD
498 -- streamly-console
499 , Streamly.Internal.Console.Stdio
501 -- streamly-network
502 , Streamly.Internal.Network.Socket
503 , Streamly.Internal.Network.Inet.TCP
505 build-depends:
506 -- Core libraries shipped with ghc, the min and max
507 -- constraints of these libraries should match with
508 -- the GHC versions we support
509 base >= 4.9 && < 5
510 , containers >= 0.5 && < 0.7
511 , deepseq >= 1.4.1 && < 1.5
512 , directory >= 1.2.2 && < 1.4
513 , exceptions >= 0.8 && < 0.11
514 , ghc-prim >= 0.2 && < 0.8
515 , mtl >= 2.2 && < 3
516 , primitive >= 0.5.4 && < 0.8
517 , transformers >= 0.4 && < 0.6
519 , heaps >= 0.3 && < 0.5
521 -- concurrency
522 , atomic-primops >= 0.8 && < 0.9
523 , lockfree-queue >= 0.2.3 && < 0.3
525 -- transfomers
526 , monad-control >= 1.0 && < 2
527 , transformers-base >= 0.4 && < 0.5
529 , fusion-plugin-types >= 0.1 && < 0.2
531 -- Network
532 , network >= 2.6 && < 4
535 if flag(inspection)
536 build-depends: template-haskell >= 2.14 && < 2.17
537 , inspection-testing >= 0.4 && < 0.5
539 -- Array uses a Storable constraint in dev build making several inspection
540 -- tests fail
541 if flag(dev) && flag(inspection)
542 build-depends: inspection-and-dev-flags-cannot-be-used-together
544test-suite doctests
545 type: exitcode-stdio-1.0
546 main-is: doctests.hs
547 if flag(doctests)
548 build-depends:
549 base
550 , base-compat >=0.10.5 && <0.12
551 , doctest >=0.15 && <0.18
552 , streamly
553 else
554 buildable: False
556 ghc-options: -Wall -threaded
557 hs-source-dirs: .
558 default-language: Haskell2010