Cabal revisions of streamly-0.8.3
Hackage metadata revisions edit the .cabal file after upload; each diff below is one revision.
revision 1
-cabal-version: 2.2-name: streamly-version: 0.8.3-synopsis: Dataflow programming and declarative concurrency-description:- Browse the documentation at https://streamly.composewell.com.- .- Streamly is a streaming framework to build reliable and scalable- software systems from modular building blocks using dataflow- programming and declarative concurrency. Stream fusion optimizations- in streamly result in high-performance, modular combinatorial- programming.- .- Performance with simplicity:- .- * Performance on par with C (<https://github.com/composewell/streaming-benchmarks Benchmarks>)- * API close to standard Haskell lists (<https://github.com/composewell/streamly-examples Examples>)- * Declarative concurrency with automatic scaling- * Filesystem, fsnotify, network, and Unicode support included- * More functionality provided via many ecosystem packages- .- Unified and powerful abstractions:- .- * Unifies unfolds, arrays, folds, and parsers with streaming- * Unifies @Data.List@, @list-t@, and @logict@ with streaming- * Unifies concurrency with standard streaming abstractions- * Provides time-domain combinators for reactive programming- * Interworks with bytestring and streaming libraries--homepage: https://streamly.composewell.com-bug-reports: https://github.com/composewell/streamly/issues-license: BSD-3-Clause-license-file: LICENSE-tested-with: GHC==8.0.2- , GHC==8.4.4- , GHC==8.6.5- , GHC==8.8.4- , GHC==8.10.7- , GHC==9.0.1- , GHC==9.2.1-author: Composewell Technologies-maintainer: streamly@composewell.com-copyright: 2017 Composewell Technologies-category:- Streamly, Concurrency, Streaming, Dataflow, Pipes, Reactivity, List,- Logic, Non-determinism, Parsing, Array, Time, Unicode, Filesystem,- Network-stability: Stable-build-type: Configure--extra-source-files:- benchmark/*.hs- benchmark/bench-report/BenchReport.hs- benchmark/bench-report/bench-report.cabal- benchmark/bench-report/bin/bench-runner.sh- benchmark/bench-report/bin/build-lib.sh- benchmark/bench-report/cabal.project- benchmark/Streamly/Benchmark/Data/*.hs- benchmark/Streamly/Benchmark/Data/Array/Common.hs- benchmark/Streamly/Benchmark/Data/Array/CommonImports.hs- benchmark/Streamly/Benchmark/Data/Array/SmallArray.hs- benchmark/Streamly/Benchmark/Data/Array/Foreign.hs- benchmark/Streamly/Benchmark/Data/Array/Foreign/Mut.hs- benchmark/Streamly/Benchmark/Data/Array/Prim.hs- benchmark/Streamly/Benchmark/Data/Array/Prim/Pinned.hs- benchmark/Streamly/Benchmark/Data/Array/Stream/Foreign.hs- benchmark/Streamly/Benchmark/Data/Parser/*.hs- benchmark/Streamly/Benchmark/Data/Stream/*.hs- benchmark/Streamly/Benchmark/FileSystem/*.hs- benchmark/Streamly/Benchmark/FileSystem/Handle/*.hs- benchmark/Streamly/Benchmark/Prelude/*.hs- benchmark/Streamly/Benchmark/Prelude/Serial/*.hs- benchmark/Streamly/Benchmark/Unicode/*.hs- benchmark/lib/Streamly/Benchmark/*.hs- benchmark/lib/Streamly/Benchmark/Common/*.hs- benchmark/streamly-benchmarks.cabal- bin/bench.sh- bin/bench-config.sh- bin/mk-hscope.sh- bin/mk-tags.sh- bin/targets.sh- bin/test.sh- configure- configure.ac- docs/*.hs- docs/streamly-docs.cabal- src/Streamly/Internal/Data/Stream/Instances.hs- src/Streamly/Internal/Data/Stream/PreludeCommon.hs- src/Streamly/Internal/Data/Time/Clock/config-clock.h- src/Streamly/Internal/Data/Array/ArrayMacros.h- src/Streamly/Internal/Data/Array/PrimInclude.hs- src/Streamly/Internal/Data/Array/Prim/TypesInclude.hs- src/Streamly/Internal/Data/Array/Prim/MutTypesInclude.hs- src/Streamly/Internal/FileSystem/Event/Darwin.h- src/config.h.in- src/inline.hs- test/Streamly/Test/Data/*.hs- test/Streamly/Test/Data/Array/CommonImports.hs- test/Streamly/Test/Data/Array/Common.hs- test/Streamly/Test/Data/Array/Prim.hs- test/Streamly/Test/Data/Array/Prim/Pinned.hs- test/Streamly/Test/Data/Array/Foreign.hs- test/Streamly/Test/Data/Array/Stream/Foreign.hs- test/Streamly/Test/Data/Parser/ParserD.hs- test/Streamly/Test/FileSystem/Event.hs- test/Streamly/Test/FileSystem/Event/Common.hs- test/Streamly/Test/FileSystem/Event/Darwin.hs- test/Streamly/Test/FileSystem/Event/Windows.hs- test/Streamly/Test/FileSystem/Event/Linux.hs- test/Streamly/Test/FileSystem/Handle.hs- test/Streamly/Test/Network/Socket.hs- test/Streamly/Test/Network/Inet/TCP.hs- test/Streamly/Test/Prelude.hs- test/Streamly/Test/Prelude/*.hs- test/Streamly/Test/Unicode/*.hs- test/lib/Streamly/Test/Common.hs- test/lib/Streamly/Test/Prelude/Common.hs- test/streamly-tests.cabal- test/version-bounds.hs- test/Streamly/Test/Unicode/ucd/NormalizationTest.txt- test/Streamly/Test/Unicode/extra/NormalizationTest.txt- benchmark/Streamly/Benchmark/Unicode/data/AllChars.txt- benchmark/Streamly/Benchmark/Unicode/data/Devanagari.txt- benchmark/Streamly/Benchmark/Unicode/data/Japanese.txt- benchmark/Streamly/Benchmark/Unicode/data/Vietnamese.txt- benchmark/Streamly/Benchmark/Unicode/data/Deutsch.txt- benchmark/Streamly/Benchmark/Unicode/data/English.txt- benchmark/Streamly/Benchmark/Unicode/data/Korean.txt--extra-doc-files:- CONTRIBUTING.md- CHANGELOG.md- README.md- benchmark/README.md- dev/*.md- dev/*.png- dev/*.rst- docs/*.md- docs/*.link- docs/*.rst- docs/*.svg- docs/API-changelog.txt- test/README.md--extra-tmp-files:- config.log- config.status- autom4te.cache- src/config.h--source-repository head- type: git- location: https://github.com/composewell/streamly--flag fusion-plugin- description: Use fusion plugin for benchmarks and executables- manual: True- default: False--flag inspection- description: Enable inspection testing- manual: True- default: False--flag debug- description: Debug build with asserts enabled- manual: True- default: False--flag dev- description: Development build- manual: True- default: False--flag has-llvm- description: Use llvm backend for code generation- manual: True- default: False--flag no-fusion- description: Disable rewrite rules for stream fusion- manual: True- default: False--flag streamk- description: Use CPS style streams when possible- manual: True- default: False--flag use-c-malloc- description: Use C malloc instead of GHC malloc- manual: True- default: False--flag opt- description: off=GHC default, on=-O2- manual: True- default: True--flag limit-build-mem- description: Limits memory when building- manual: True- default: False--flag streamly-core- description: Build only the core modules- manual: True- default: False--flag use-unliftio- description: Use unliftio-core instead of monad-control- manual: True- default: False------------------------------------------------------------------------------------ Common stanzas----------------------------------------------------------------------------------common compile-options- default-language: Haskell2010-- if os(darwin)- cpp-options: -DCABAL_OS_DARWIN-- if os(linux)- cpp-options: -DCABAL_OS_LINUX-- if os(windows)- cpp-options: -DCABAL_OS_WINDOWS-- if flag(streamk)- cpp-options: -DUSE_STREAMK_ONLY-- if flag(no-fusion)- cpp-options: -DDISABLE_FUSION-- if flag(dev)- cpp-options: -DDEVBUILD-- if flag(inspection)- cpp-options: -DINSPECTION-- if flag(use-c-malloc)- cpp-options: -DUSE_C_MALLOC-- ghc-options: -Wall- -Wcompat- -Wunrecognised-warning-flags- -Widentities- -Wincomplete-record-updates- -Wincomplete-uni-patterns- -Wredundant-constraints- -Wnoncanonical-monad-instances- -Wmissing-export-lists- -Rghc-timing-- if flag(has-llvm)- ghc-options: -fllvm-- if flag(dev)- ghc-options: -Wmissed-specialisations- -Wall-missed-specialisations-- if flag(limit-build-mem)- ghc-options: +RTS -M1000M -RTS-- if flag(use-unliftio)- cpp-options: -DUSE_UNLIFTIO--common default-extensions- default-extensions:- BangPatterns- CApiFFI- CPP- ConstraintKinds- DeriveDataTypeable- DeriveGeneric- DeriveTraversable- ExistentialQuantification- FlexibleContexts- FlexibleInstances- GeneralizedNewtypeDeriving- InstanceSigs- KindSignatures- LambdaCase- MagicHash- MultiParamTypeClasses- PatternSynonyms- RankNTypes- RecordWildCards- ScopedTypeVariables- TupleSections- TypeApplications- TypeFamilies- ViewPatterns-- -- MonoLocalBinds, enabled by TypeFamilies, causes performance- -- regressions. Disable it. This must come after TypeFamilies,- -- otherwise TypeFamilies will enable it again.- NoMonoLocalBinds-- -- UndecidableInstances -- Does not show any perf impact- -- UnboxedTuples -- interferes with (#.)--common optimization-options- if flag(opt)- ghc-options: -O2- -fdicts-strict- -fspec-constr-recursive=16- -fmax-worker-args=16-- -- For this to be effective it must come after the -O2 option- if flag(dev) || flag(debug) || !flag(opt)- ghc-options: -fno-ignore-asserts--common threading-options- ghc-options: -threaded- -with-rtsopts=-N---- We need optimization options here to optimize internal (non-inlined)--- versions of functions. Also, we have some benchmarking inspection tests--- part of the library when built with --benchmarks flag. Thos tests fail--- if we do not use optimization options here. It was observed that due to--- -O2 here some concurrent/nested benchmarks improved and others regressed.--- We can investigate a bit more here why the regression occurred.-common lib-options- import: compile-options, optimization-options, default-extensions------------------------------------------------------------------------------------ Library----------------------------------------------------------------------------------library- import: lib-options-- if impl(ghc >= 8.6)- default-extensions: QuantifiedConstraints-- js-sources: jsbits/clock.js- include-dirs:- src- , src/Streamly/Internal/Data/Stream- , src/Streamly/Internal/Data/Array-- if os(windows)- c-sources: src/Streamly/Internal/Data/Time/Clock/Windows.c-- if os(darwin)- include-dirs: src/Streamly/Internal- c-sources: src/Streamly/Internal/Data/Time/Clock/Darwin.c-- hs-source-dirs: src- exposed-modules:- -- Internal modules, listed roughly in bottom up- -- dependency order To view dependency graph:- -- graphmod | dot -Tps > deps.ps-- -- streamly-base- Streamly.Internal.BaseCompat- , Streamly.Internal.Control.Exception- , Streamly.Internal.Control.Monad- , Streamly.Internal.Control.ForkIO- , Streamly.Internal.Data.Cont- , Streamly.Internal.Foreign.Malloc- , Streamly.Internal.System.IO-- -- streamly-strict-data- , Streamly.Internal.Data.Tuple.Strict- , Streamly.Internal.Data.Maybe.Strict- , Streamly.Internal.Data.Either.Strict-- -- XXX Depends on monad-control or unliftio-core- , Streamly.Internal.Control.Concurrent- , Streamly.Internal.Control.ForkLifted- , Streamly.Internal.Data.IOFinalizer-- -- streamly-time- , Streamly.Internal.Data.Time- , Streamly.Internal.Data.Time.TimeSpec- , Streamly.Internal.Data.Time.Units- , Streamly.Internal.Data.Time.Clock.Type- , Streamly.Internal.Data.Time.Clock-- -- streamly-core-stream-types- , Streamly.Internal.Data.SVar.Type- , Streamly.Internal.Data.Stream.StreamK.Type- , Streamly.Internal.Data.Fold.Step- , Streamly.Internal.Data.Refold.Type- , Streamly.Internal.Data.Fold.Type- , Streamly.Internal.Data.Stream.StreamD.Step- , Streamly.Internal.Data.Stream.StreamD.Type- , Streamly.Internal.Data.Stream.StreamDK.Type- , Streamly.Internal.Data.Unfold.Type- , Streamly.Internal.Data.Producer.Type- , Streamly.Internal.Data.Producer- , Streamly.Internal.Data.Producer.Source- , Streamly.Internal.Data.Sink.Type- , Streamly.Internal.Data.Parser.ParserK.Type- , Streamly.Internal.Data.Parser.ParserD.Type- , Streamly.Internal.Data.Pipe.Type-- -- streamly-core-array-types- -- Unboxed IORef- -- XXX Depends on primitive- , Streamly.Internal.Data.IORef.Prim- -- May depend on streamly-core-stream- , Streamly.Internal.Data.Array.Foreign.Mut.Type- , Streamly.Internal.Data.Array.Foreign.Mut- , Streamly.Internal.Data.Array.Foreign.Type- , Streamly.Internal.Data.Array.Mut.Type-- -- streamly-core-streams- -- StreamD depends on streamly-array-types- , Streamly.Internal.Data.Stream.StreamD.Generate- , Streamly.Internal.Data.Stream.StreamD.Eliminate- , Streamly.Internal.Data.Stream.StreamD.Nesting- , Streamly.Internal.Data.Stream.StreamD.Transform- , Streamly.Internal.Data.Stream.StreamD.Exception- , Streamly.Internal.Data.Stream.StreamD.Lift- , Streamly.Internal.Data.Stream.StreamD- , Streamly.Internal.Data.Stream.StreamDK- , Streamly.Internal.Data.Stream.Prelude-- , Streamly.Internal.Data.Parser.ParserD.Tee- , Streamly.Internal.Data.Parser.ParserD-- -- streamly-core-data- , Streamly.Internal.Data.Unfold- , Streamly.Internal.Data.Unfold.Enumeration- , Streamly.Internal.Data.Fold.Tee- , Streamly.Internal.Data.Fold- , Streamly.Internal.Data.Sink- , Streamly.Internal.Data.Parser- , Streamly.Internal.Data.Pipe- , Streamly.Internal.Data.Stream.Serial- , Streamly.Internal.Data.Stream.Zip- , Streamly.Internal.Data.List-- -- streamly-core-data-arrays- -- XXX Depends on primitive- , Streamly.Internal.Data.Array- , Streamly.Internal.Data.Array.Foreign- , Streamly.Internal.Data.Array.Stream.Mut.Foreign- , Streamly.Internal.Data.Array.Stream.Fold.Foreign-- -- Ring Arrays- , Streamly.Internal.Data.Ring.Foreign- -- XXX Depends on primitive- , Streamly.Internal.Data.Ring-- -- Only used for benchmarks- , Streamly.Internal.Data.Stream.StreamK-- -- streamly-core exposed modules- , Streamly.Data.Fold- , Streamly.Data.Fold.Tee- , Streamly.Data.Array.Foreign-- if !flag(streamly-core)- exposed-modules:- -- XXX To be moved to streamly-core- Streamly.Data.Unfold-- -- XXX To be removed or put under dev flag- , Streamly.Internal.Data.Array.Prim.Mut.Type- , Streamly.Internal.Data.Array.Prim.Type- , Streamly.Internal.Data.Array.Prim.Pinned.Mut.Type- , Streamly.Internal.Data.Array.Prim.Pinned.Type- , Streamly.Internal.Data.SmallArray.Type- , Streamly.Internal.Data.Array.Prim- , Streamly.Internal.Data.Array.Prim.Pinned- , Streamly.Internal.Data.SmallArray-- -- streamly-concurrent- , Streamly.Internal.Data.Atomics- , Streamly.Internal.Data.SVar.Worker- , Streamly.Internal.Data.SVar.Dispatch- , Streamly.Internal.Data.SVar.Pull- , Streamly.Internal.Data.SVar-- , Streamly.Internal.Data.Unfold.SVar- , Streamly.Internal.Data.Fold.SVar- , Streamly.Internal.Data.Fold.Async- , Streamly.Internal.Data.Stream.SVar.Generate- , Streamly.Internal.Data.Stream.SVar.Eliminate-- , Streamly.Internal.Data.Stream.Async- , Streamly.Internal.Data.Stream.Parallel- , Streamly.Internal.Data.Stream.Ahead- , Streamly.Internal.Data.Stream.ZipAsync-- , Streamly.Internal.Data.Stream.IsStream.Type- , Streamly.Internal.Data.Stream.IsStream.Combinators- , Streamly.Internal.Data.Stream.IsStream.Common- , Streamly.Internal.Data.Stream.IsStream.Enumeration- , Streamly.Internal.Data.Stream.IsStream.Generate- , Streamly.Internal.Data.Stream.IsStream.Eliminate- , Streamly.Internal.Data.Stream.IsStream.Transform- , Streamly.Internal.Data.Stream.IsStream.Expand- , Streamly.Internal.Data.Stream.IsStream.Reduce- , Streamly.Internal.Data.Stream.IsStream.Exception- , Streamly.Internal.Data.Stream.IsStream.Lift- , Streamly.Internal.Data.Stream.IsStream.Top- , Streamly.Internal.Data.Stream.IsStream-- , Streamly.Internal.Data.Array.Stream.Foreign-- -- streamly-serde- , Streamly.Internal.Data.Binary.Decode-- -- streamly-unicode- , Streamly.Internal.Unicode.Stream- , Streamly.Internal.Unicode.Utf8- , Streamly.Internal.Unicode.Char- , Streamly.Internal.Unicode.Char.Parser- , Streamly.Internal.Unicode.Array.Char- , Streamly.Internal.Unicode.Array.Prim.Pinned-- -- streamly-filesystem- , Streamly.Internal.System.IOVec.Type- , Streamly.Internal.System.IOVec- , Streamly.Internal.FileSystem.Handle- , Streamly.Internal.FileSystem.Dir- , Streamly.Internal.FileSystem.File- , Streamly.Internal.FileSystem.FDIO- , Streamly.Internal.FileSystem.FD-- -- streamly-console- , Streamly.Internal.Console.Stdio-- -- streamly-network- , Streamly.Internal.Network.Socket- , Streamly.Internal.Network.Inet.TCP-- -- Exposed modules- , Streamly.Prelude-- -- Text Processing- , Streamly.Unicode.Stream-- -- Filesystem/IO- , Streamly.FileSystem.Handle- , Streamly.Console.Stdio-- -- Network/IO- , Streamly.Network.Socket- , Streamly.Network.Inet.TCP-- -- Deprecated- , Streamly- , Streamly.Data.Unicode.Stream- , Streamly.Memory.Array-- other-modules:- Streamly.Data.Array- , Streamly.Data.Prim.Array- , Streamly.Data.SmallArray-- if os(windows)- exposed-modules: Streamly.Internal.FileSystem.Event.Windows-- if os(darwin)- c-sources: src/Streamly/Internal/FileSystem/Event/Darwin.m- exposed-modules: Streamly.Internal.FileSystem.Event.Darwin-- if os(linux)- exposed-modules: Streamly.Internal.FileSystem.Event.Linux-- if os(linux) || os(darwin) || os(windows)- exposed-modules: Streamly.Internal.FileSystem.Event-- build-depends:- -- Core libraries shipped with ghc, the min and max- -- constraints of these libraries should match with- -- the GHC versions we support. This is to make sure that- -- packages depending on the "ghc" package (packages- -- depending on doctest is a common example) can- -- depend on streamly.- base >= 4.9 && < 4.18- , containers >= 0.5 && < 0.7- , deepseq >= 1.4.1 && < 1.5- , directory >= 1.2.2 && < 1.4- , exceptions >= 0.8 && < 0.11- , ghc-prim >= 0.2 && < 0.10- , mtl >= 2.2 && < 2.3- , transformers >= 0.4 && < 0.7- , filepath >= 1.2.0.0 && < 1.5-- , fusion-plugin-types >= 0.1 && < 0.2-- -- XXX to be removed- , transformers-base >= 0.4 && < 0.5- , primitive >= 0.5.4 && < 0.8- , heaps >= 0.3 && < 0.5- if flag(use-unliftio)- build-depends: unliftio-core >= 0.2 && < 0.3- else- build-depends: monad-control >= 1.0 && < 1.1-- if !flag(streamly-core)- build-depends:- -- concurrency- , atomic-primops >= 0.8 && < 0.9- , lockfree-queue >= 0.2.4 && < 0.3-- , unicode-data >= 0.1 && < 0.4-- -- Network- , network >= 2.6 && < 3.2--- if os(windows)- build-depends: Win32 >= 2.6 && < 2.13-- if os(darwin)- frameworks: Cocoa-- if flag(inspection)- build-depends: template-haskell >= 2.14 && < 2.17- , inspection-testing >= 0.4 && < 0.5-- -- Array uses a Storable constraint in dev build making several inspection- -- tests fail- if flag(dev) && flag(inspection)- build-depends: inspection-and-dev-flags-cannot-be-used-together+cabal-version: 2.2 +name: streamly +version: 0.8.3 +x-revision: 1 +synopsis: Dataflow programming and declarative concurrency +description: + Browse the documentation at https://streamly.composewell.com. + . + Streamly is a streaming framework to build reliable and scalable + software systems from modular building blocks using dataflow + programming and declarative concurrency. Stream fusion optimizations + in streamly result in high-performance, modular combinatorial + programming. + . + Performance with simplicity: + . + * Performance on par with C (<https://github.com/composewell/streaming-benchmarks Benchmarks>) + * API close to standard Haskell lists (<https://github.com/composewell/streamly-examples Examples>) + * Declarative concurrency with automatic scaling + * Filesystem, fsnotify, network, and Unicode support included + * More functionality provided via many ecosystem packages + . + Unified and powerful abstractions: + . + * Unifies unfolds, arrays, folds, and parsers with streaming + * Unifies @Data.List@, @list-t@, and @logict@ with streaming + * Unifies concurrency with standard streaming abstractions + * Provides time-domain combinators for reactive programming + * Interworks with bytestring and streaming libraries + +homepage: https://streamly.composewell.com +bug-reports: https://github.com/composewell/streamly/issues +license: BSD-3-Clause +license-file: LICENSE +tested-with: GHC==8.0.2 + , GHC==8.4.4 + , GHC==8.6.5 + , GHC==8.8.4 + , GHC==8.10.7 + , GHC==9.0.1 + , GHC==9.2.1 +author: Composewell Technologies +maintainer: streamly@composewell.com +copyright: 2017 Composewell Technologies +category: + Streamly, Concurrency, Streaming, Dataflow, Pipes, Reactivity, List, + Logic, Non-determinism, Parsing, Array, Time, Unicode, Filesystem, + Network +stability: Stable +build-type: Configure + +extra-source-files: + benchmark/*.hs + benchmark/bench-report/BenchReport.hs + benchmark/bench-report/bench-report.cabal + benchmark/bench-report/bin/bench-runner.sh + benchmark/bench-report/bin/build-lib.sh + benchmark/bench-report/cabal.project + benchmark/Streamly/Benchmark/Data/*.hs + benchmark/Streamly/Benchmark/Data/Array/Common.hs + benchmark/Streamly/Benchmark/Data/Array/CommonImports.hs + benchmark/Streamly/Benchmark/Data/Array/SmallArray.hs + benchmark/Streamly/Benchmark/Data/Array/Foreign.hs + benchmark/Streamly/Benchmark/Data/Array/Foreign/Mut.hs + benchmark/Streamly/Benchmark/Data/Array/Prim.hs + benchmark/Streamly/Benchmark/Data/Array/Prim/Pinned.hs + benchmark/Streamly/Benchmark/Data/Array/Stream/Foreign.hs + benchmark/Streamly/Benchmark/Data/Parser/*.hs + benchmark/Streamly/Benchmark/Data/Stream/*.hs + benchmark/Streamly/Benchmark/FileSystem/*.hs + benchmark/Streamly/Benchmark/FileSystem/Handle/*.hs + benchmark/Streamly/Benchmark/Prelude/*.hs + benchmark/Streamly/Benchmark/Prelude/Serial/*.hs + benchmark/Streamly/Benchmark/Unicode/*.hs + benchmark/lib/Streamly/Benchmark/*.hs + benchmark/lib/Streamly/Benchmark/Common/*.hs + benchmark/streamly-benchmarks.cabal + bin/bench.sh + bin/bench-config.sh + bin/mk-hscope.sh + bin/mk-tags.sh + bin/targets.sh + bin/test.sh + configure + configure.ac + docs/*.hs + docs/streamly-docs.cabal + src/Streamly/Internal/Data/Stream/Instances.hs + src/Streamly/Internal/Data/Stream/PreludeCommon.hs + src/Streamly/Internal/Data/Time/Clock/config-clock.h + src/Streamly/Internal/Data/Array/ArrayMacros.h + src/Streamly/Internal/Data/Array/PrimInclude.hs + src/Streamly/Internal/Data/Array/Prim/TypesInclude.hs + src/Streamly/Internal/Data/Array/Prim/MutTypesInclude.hs + src/Streamly/Internal/FileSystem/Event/Darwin.h + src/config.h.in + src/inline.hs + test/Streamly/Test/Data/*.hs + test/Streamly/Test/Data/Array/CommonImports.hs + test/Streamly/Test/Data/Array/Common.hs + test/Streamly/Test/Data/Array/Prim.hs + test/Streamly/Test/Data/Array/Prim/Pinned.hs + test/Streamly/Test/Data/Array/Foreign.hs + test/Streamly/Test/Data/Array/Stream/Foreign.hs + test/Streamly/Test/Data/Parser/ParserD.hs + test/Streamly/Test/FileSystem/Event.hs + test/Streamly/Test/FileSystem/Event/Common.hs + test/Streamly/Test/FileSystem/Event/Darwin.hs + test/Streamly/Test/FileSystem/Event/Windows.hs + test/Streamly/Test/FileSystem/Event/Linux.hs + test/Streamly/Test/FileSystem/Handle.hs + test/Streamly/Test/Network/Socket.hs + test/Streamly/Test/Network/Inet/TCP.hs + test/Streamly/Test/Prelude.hs + test/Streamly/Test/Prelude/*.hs + test/Streamly/Test/Unicode/*.hs + test/lib/Streamly/Test/Common.hs + test/lib/Streamly/Test/Prelude/Common.hs + test/streamly-tests.cabal + test/version-bounds.hs + test/Streamly/Test/Unicode/ucd/NormalizationTest.txt + test/Streamly/Test/Unicode/extra/NormalizationTest.txt + benchmark/Streamly/Benchmark/Unicode/data/AllChars.txt + benchmark/Streamly/Benchmark/Unicode/data/Devanagari.txt + benchmark/Streamly/Benchmark/Unicode/data/Japanese.txt + benchmark/Streamly/Benchmark/Unicode/data/Vietnamese.txt + benchmark/Streamly/Benchmark/Unicode/data/Deutsch.txt + benchmark/Streamly/Benchmark/Unicode/data/English.txt + benchmark/Streamly/Benchmark/Unicode/data/Korean.txt + +extra-doc-files: + CONTRIBUTING.md + CHANGELOG.md + README.md + benchmark/README.md + dev/*.md + dev/*.png + dev/*.rst + docs/*.md + docs/*.link + docs/*.rst + docs/*.svg + docs/API-changelog.txt + test/README.md + +extra-tmp-files: + config.log + config.status + autom4te.cache + src/config.h + +source-repository head + type: git + location: https://github.com/composewell/streamly + +flag fusion-plugin + description: Use fusion plugin for benchmarks and executables + manual: True + default: False + +flag inspection + description: Enable inspection testing + manual: True + default: False + +flag debug + description: Debug build with asserts enabled + manual: True + default: False + +flag dev + description: Development build + manual: True + default: False + +flag has-llvm + description: Use llvm backend for code generation + manual: True + default: False + +flag no-fusion + description: Disable rewrite rules for stream fusion + manual: True + default: False + +flag streamk + description: Use CPS style streams when possible + manual: True + default: False + +flag use-c-malloc + description: Use C malloc instead of GHC malloc + manual: True + default: False + +flag opt + description: off=GHC default, on=-O2 + manual: True + default: True + +flag limit-build-mem + description: Limits memory when building + manual: True + default: False + +flag streamly-core + description: Build only the core modules + manual: True + default: False + +flag use-unliftio + description: Use unliftio-core instead of monad-control + manual: True + default: False + +------------------------------------------------------------------------------- +-- Common stanzas +------------------------------------------------------------------------------- + +common compile-options + default-language: Haskell2010 + + if os(darwin) + cpp-options: -DCABAL_OS_DARWIN + + if os(linux) + cpp-options: -DCABAL_OS_LINUX + + if os(windows) + cpp-options: -DCABAL_OS_WINDOWS + + if flag(streamk) + cpp-options: -DUSE_STREAMK_ONLY + + if flag(no-fusion) + cpp-options: -DDISABLE_FUSION + + if flag(dev) + cpp-options: -DDEVBUILD + + if flag(inspection) + cpp-options: -DINSPECTION + + if flag(use-c-malloc) + cpp-options: -DUSE_C_MALLOC + + ghc-options: -Wall + -Wcompat + -Wunrecognised-warning-flags + -Widentities + -Wincomplete-record-updates + -Wincomplete-uni-patterns + -Wredundant-constraints + -Wnoncanonical-monad-instances + -Wmissing-export-lists + -Rghc-timing + + if flag(has-llvm) + ghc-options: -fllvm + + if flag(dev) + ghc-options: -Wmissed-specialisations + -Wall-missed-specialisations + + if flag(limit-build-mem) + ghc-options: +RTS -M1000M -RTS + + if flag(use-unliftio) + cpp-options: -DUSE_UNLIFTIO + +common default-extensions + default-extensions: + BangPatterns + CApiFFI + CPP + ConstraintKinds + DeriveDataTypeable + DeriveGeneric + DeriveTraversable + ExistentialQuantification + FlexibleContexts + FlexibleInstances + GeneralizedNewtypeDeriving + InstanceSigs + KindSignatures + LambdaCase + MagicHash + MultiParamTypeClasses + PatternSynonyms + RankNTypes + RecordWildCards + ScopedTypeVariables + TupleSections + TypeApplications + TypeFamilies + ViewPatterns + + -- MonoLocalBinds, enabled by TypeFamilies, causes performance + -- regressions. Disable it. This must come after TypeFamilies, + -- otherwise TypeFamilies will enable it again. + NoMonoLocalBinds + + -- UndecidableInstances -- Does not show any perf impact + -- UnboxedTuples -- interferes with (#.) + +common optimization-options + if flag(opt) + ghc-options: -O2 + -fdicts-strict + -fspec-constr-recursive=16 + -fmax-worker-args=16 + + -- For this to be effective it must come after the -O2 option + if flag(dev) || flag(debug) || !flag(opt) + ghc-options: -fno-ignore-asserts + +common threading-options + ghc-options: -threaded + -with-rtsopts=-N + +-- We need optimization options here to optimize internal (non-inlined) +-- versions of functions. Also, we have some benchmarking inspection tests +-- part of the library when built with --benchmarks flag. Thos tests fail +-- if we do not use optimization options here. It was observed that due to +-- -O2 here some concurrent/nested benchmarks improved and others regressed. +-- We can investigate a bit more here why the regression occurred. +common lib-options + import: compile-options, optimization-options, default-extensions + +------------------------------------------------------------------------------- +-- Library +------------------------------------------------------------------------------- + +library + import: lib-options + + if impl(ghc >= 8.6) + default-extensions: QuantifiedConstraints + + js-sources: jsbits/clock.js + include-dirs: + src + , src/Streamly/Internal/Data/Stream + , src/Streamly/Internal/Data/Array + + if os(windows) + c-sources: src/Streamly/Internal/Data/Time/Clock/Windows.c + + if os(darwin) + include-dirs: src/Streamly/Internal + c-sources: src/Streamly/Internal/Data/Time/Clock/Darwin.c + + hs-source-dirs: src + exposed-modules: + -- Internal modules, listed roughly in bottom up + -- dependency order To view dependency graph: + -- graphmod | dot -Tps > deps.ps + + -- streamly-base + Streamly.Internal.BaseCompat + , Streamly.Internal.Control.Exception + , Streamly.Internal.Control.Monad + , Streamly.Internal.Control.ForkIO + , Streamly.Internal.Data.Cont + , Streamly.Internal.Foreign.Malloc + , Streamly.Internal.System.IO + + -- streamly-strict-data + , Streamly.Internal.Data.Tuple.Strict + , Streamly.Internal.Data.Maybe.Strict + , Streamly.Internal.Data.Either.Strict + + -- XXX Depends on monad-control or unliftio-core + , Streamly.Internal.Control.Concurrent + , Streamly.Internal.Control.ForkLifted + , Streamly.Internal.Data.IOFinalizer + + -- streamly-time + , Streamly.Internal.Data.Time + , Streamly.Internal.Data.Time.TimeSpec + , Streamly.Internal.Data.Time.Units + , Streamly.Internal.Data.Time.Clock.Type + , Streamly.Internal.Data.Time.Clock + + -- streamly-core-stream-types + , Streamly.Internal.Data.SVar.Type + , Streamly.Internal.Data.Stream.StreamK.Type + , Streamly.Internal.Data.Fold.Step + , Streamly.Internal.Data.Refold.Type + , Streamly.Internal.Data.Fold.Type + , Streamly.Internal.Data.Stream.StreamD.Step + , Streamly.Internal.Data.Stream.StreamD.Type + , Streamly.Internal.Data.Stream.StreamDK.Type + , Streamly.Internal.Data.Unfold.Type + , Streamly.Internal.Data.Producer.Type + , Streamly.Internal.Data.Producer + , Streamly.Internal.Data.Producer.Source + , Streamly.Internal.Data.Sink.Type + , Streamly.Internal.Data.Parser.ParserK.Type + , Streamly.Internal.Data.Parser.ParserD.Type + , Streamly.Internal.Data.Pipe.Type + + -- streamly-core-array-types + -- Unboxed IORef + -- XXX Depends on primitive + , Streamly.Internal.Data.IORef.Prim + -- May depend on streamly-core-stream + , Streamly.Internal.Data.Array.Foreign.Mut.Type + , Streamly.Internal.Data.Array.Foreign.Mut + , Streamly.Internal.Data.Array.Foreign.Type + , Streamly.Internal.Data.Array.Mut.Type + + -- streamly-core-streams + -- StreamD depends on streamly-array-types + , Streamly.Internal.Data.Stream.StreamD.Generate + , Streamly.Internal.Data.Stream.StreamD.Eliminate + , Streamly.Internal.Data.Stream.StreamD.Nesting + , Streamly.Internal.Data.Stream.StreamD.Transform + , Streamly.Internal.Data.Stream.StreamD.Exception + , Streamly.Internal.Data.Stream.StreamD.Lift + , Streamly.Internal.Data.Stream.StreamD + , Streamly.Internal.Data.Stream.StreamDK + , Streamly.Internal.Data.Stream.Prelude + + , Streamly.Internal.Data.Parser.ParserD.Tee + , Streamly.Internal.Data.Parser.ParserD + + -- streamly-core-data + , Streamly.Internal.Data.Unfold + , Streamly.Internal.Data.Unfold.Enumeration + , Streamly.Internal.Data.Fold.Tee + , Streamly.Internal.Data.Fold + , Streamly.Internal.Data.Sink + , Streamly.Internal.Data.Parser + , Streamly.Internal.Data.Pipe + , Streamly.Internal.Data.Stream.Serial + , Streamly.Internal.Data.Stream.Zip + , Streamly.Internal.Data.List + + -- streamly-core-data-arrays + -- XXX Depends on primitive + , Streamly.Internal.Data.Array + , Streamly.Internal.Data.Array.Foreign + , Streamly.Internal.Data.Array.Stream.Mut.Foreign + , Streamly.Internal.Data.Array.Stream.Fold.Foreign + + -- Ring Arrays + , Streamly.Internal.Data.Ring.Foreign + -- XXX Depends on primitive + , Streamly.Internal.Data.Ring + + -- Only used for benchmarks + , Streamly.Internal.Data.Stream.StreamK + + -- streamly-core exposed modules + , Streamly.Data.Fold + , Streamly.Data.Fold.Tee + , Streamly.Data.Array.Foreign + + if !flag(streamly-core) + exposed-modules: + -- XXX To be moved to streamly-core + Streamly.Data.Unfold + + -- XXX To be removed or put under dev flag + , Streamly.Internal.Data.Array.Prim.Mut.Type + , Streamly.Internal.Data.Array.Prim.Type + , Streamly.Internal.Data.Array.Prim.Pinned.Mut.Type + , Streamly.Internal.Data.Array.Prim.Pinned.Type + , Streamly.Internal.Data.SmallArray.Type + , Streamly.Internal.Data.Array.Prim + , Streamly.Internal.Data.Array.Prim.Pinned + , Streamly.Internal.Data.SmallArray + + -- streamly-concurrent + , Streamly.Internal.Data.Atomics + , Streamly.Internal.Data.SVar.Worker + , Streamly.Internal.Data.SVar.Dispatch + , Streamly.Internal.Data.SVar.Pull + , Streamly.Internal.Data.SVar + + , Streamly.Internal.Data.Unfold.SVar + , Streamly.Internal.Data.Fold.SVar + , Streamly.Internal.Data.Fold.Async + , Streamly.Internal.Data.Stream.SVar.Generate + , Streamly.Internal.Data.Stream.SVar.Eliminate + + , Streamly.Internal.Data.Stream.Async + , Streamly.Internal.Data.Stream.Parallel + , Streamly.Internal.Data.Stream.Ahead + , Streamly.Internal.Data.Stream.ZipAsync + + , Streamly.Internal.Data.Stream.IsStream.Type + , Streamly.Internal.Data.Stream.IsStream.Combinators + , Streamly.Internal.Data.Stream.IsStream.Common + , Streamly.Internal.Data.Stream.IsStream.Enumeration + , Streamly.Internal.Data.Stream.IsStream.Generate + , Streamly.Internal.Data.Stream.IsStream.Eliminate + , Streamly.Internal.Data.Stream.IsStream.Transform + , Streamly.Internal.Data.Stream.IsStream.Expand + , Streamly.Internal.Data.Stream.IsStream.Reduce + , Streamly.Internal.Data.Stream.IsStream.Exception + , Streamly.Internal.Data.Stream.IsStream.Lift + , Streamly.Internal.Data.Stream.IsStream.Top + , Streamly.Internal.Data.Stream.IsStream + + , Streamly.Internal.Data.Array.Stream.Foreign + + -- streamly-serde + , Streamly.Internal.Data.Binary.Decode + + -- streamly-unicode + , Streamly.Internal.Unicode.Stream + , Streamly.Internal.Unicode.Utf8 + , Streamly.Internal.Unicode.Char + , Streamly.Internal.Unicode.Char.Parser + , Streamly.Internal.Unicode.Array.Char + , Streamly.Internal.Unicode.Array.Prim.Pinned + + -- streamly-filesystem + , Streamly.Internal.System.IOVec.Type + , Streamly.Internal.System.IOVec + , Streamly.Internal.FileSystem.Handle + , Streamly.Internal.FileSystem.Dir + , Streamly.Internal.FileSystem.File + , Streamly.Internal.FileSystem.FDIO + , Streamly.Internal.FileSystem.FD + + -- streamly-console + , Streamly.Internal.Console.Stdio + + -- streamly-network + , Streamly.Internal.Network.Socket + , Streamly.Internal.Network.Inet.TCP + + -- Exposed modules + , Streamly.Prelude + + -- Text Processing + , Streamly.Unicode.Stream + + -- Filesystem/IO + , Streamly.FileSystem.Handle + , Streamly.Console.Stdio + + -- Network/IO + , Streamly.Network.Socket + , Streamly.Network.Inet.TCP + + -- Deprecated + , Streamly + , Streamly.Data.Unicode.Stream + , Streamly.Memory.Array + + other-modules: + Streamly.Data.Array + , Streamly.Data.Prim.Array + , Streamly.Data.SmallArray + + if os(windows) + exposed-modules: Streamly.Internal.FileSystem.Event.Windows + + if os(darwin) + c-sources: src/Streamly/Internal/FileSystem/Event/Darwin.m + exposed-modules: Streamly.Internal.FileSystem.Event.Darwin + + if os(linux) + exposed-modules: Streamly.Internal.FileSystem.Event.Linux + + if os(linux) || os(darwin) || os(windows) + exposed-modules: Streamly.Internal.FileSystem.Event + + build-depends: + -- Core libraries shipped with ghc, the min and max + -- constraints of these libraries should match with + -- the GHC versions we support. This is to make sure that + -- packages depending on the "ghc" package (packages + -- depending on doctest is a common example) can + -- depend on streamly. + base >= 4.9 && < 4.18 + , containers >= 0.5 && < 0.7 + , deepseq >= 1.4.1 && < 1.5 + , directory >= 1.2.2 && < 1.4 + , exceptions >= 0.8 && < 0.11 + , ghc-prim >= 0.2 && < 0.10 + , mtl >= 2.2 && < 2.3 + , transformers >= 0.4 && < 0.7 + , filepath >= 1.2.0.0 && < 1.5 + + , fusion-plugin-types >= 0.1 && < 0.2 + + -- XXX to be removed + , transformers-base >= 0.4 && < 0.5 + , primitive >= 0.5.4 && < 0.9 + , heaps >= 0.3 && < 0.5 + if flag(use-unliftio) + build-depends: unliftio-core >= 0.2 && < 0.3 + else + build-depends: monad-control >= 1.0 && < 1.1 + + if !flag(streamly-core) + build-depends: + -- concurrency + , atomic-primops >= 0.8 && < 0.9 + , lockfree-queue >= 0.2.4 && < 0.3 + + , unicode-data >= 0.1 && < 0.4 + + -- Network + , network >= 2.6 && < 3.2 + + + if os(windows) + build-depends: Win32 >= 2.6 && < 2.13 + + if os(darwin) + frameworks: Cocoa + + if flag(inspection) + build-depends: template-haskell >= 2.14 && < 2.17 + , inspection-testing >= 0.4 && < 0.5 + + -- Array uses a Storable constraint in dev build making several inspection + -- tests fail + if flag(dev) && flag(inspection) + build-depends: inspection-and-dev-flags-cannot-be-used-together