Cabal revisions of streamly-0.8.0
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.0-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.4- , GHC==9.0.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:- .circleci/config.yml- .ghci- .github/workflows/haskell.yml- .gitignore- .hlint.ignore- .hlint.yaml- CONTRIBUTING.md- Changelog.md- README.md- appveyor.yml- benchmark/*.hs- benchmark/README.md- benchmark/bench-report/BenchReport.hs- benchmark/bench-report/bench-report.cabal- benchmark/bench-report/cabal.project- benchmark/bench-report/default.nix- benchmark/Streamly/Benchmark/Data/*.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-exec-one.sh- bin/build-lib.sh- bin/ghc.sh- bin/run-ci.sh- bin/mk-hscope.sh- bin/mk-tags.sh- bin/targets.sh- bin/test.sh- configure- configure.ac- credits/*.md- credits/Yampa-0.10.6.2.txt- credits/base-4.12.0.0.txt- credits/bjoern-2008-2009.txt- credits/clock-0.7.2.txt- credits/foldl-1.4.5.txt- credits/fsnotify-0.3.0.1.txt- credits/hfsevents-0.1.6.txt- credits/pipes-concurrency-2.0.8.txt- credits/primitive-0.7.0.0.txt- credits/transient-0.5.5.txt- credits/vector-0.12.0.2.txt- default.nix- dev/*.md- dev/*.png- dev/*.rst- docs/*.md- docs/*.hs- docs/*.svg- docs/API-changelog.txt- docs/streamly-docs.cabal- examples/README.md- src/Streamly/Internal/Data/Stream/Instances.hs- src/Streamly/Internal/Data/Time/Clock/config-clock.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/README.md- test/Streamly/Test/Common/Array.hs- test/Streamly/Test/Data/*.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/Parser/ParserD.hs- test/Streamly/Test/FileSystem/Event.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/Stream.hs- test/lib/Streamly/Test/Common.hs- test/lib/Streamly/Test/Prelude/Common.hs- test/streamly-tests.cabal- test/version-bounds.hs--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------------------------------------------------------------------------------------ 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- -Rghc-timing-- if flag(has-llvm)- ghc-options: -fllvm-- if flag(dev)- ghc-options: -Wmissed-specialisations- -Wall-missed-specialisations-- if flag(dev) || flag(debug)- ghc-options: -fno-ignore-asserts--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- 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--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.1)- default-extensions: TypeApplications- if impl(ghc >= 8.6)- default-extensions: QuantifiedConstraints-- js-sources: jsbits/clock.js- include-dirs: src- if os(windows)- c-sources: src/Streamly/Internal/Data/Time/Clock/Windows.c- exposed-modules: Streamly.Internal.FileSystem.Event.Windows- build-depends: Win32 >= 2.6 && < 2.13-- if os(darwin)- frameworks: Cocoa- include-dirs: src/Streamly/Internal- c-sources: src/Streamly/Internal/Data/Time/Clock/Darwin.c- , src/Streamly/Internal/FileSystem/Event/Darwin.m- exposed-modules:- Streamly.Internal.FileSystem.Event.Darwin-- if os(linux)- exposed-modules: Streamly.Internal.FileSystem.Event.Linux-- hs-source-dirs: src- other-modules:- Streamly.Data.Array- , Streamly.Data.Prim.Array- , Streamly.Data.SmallArray-- exposed-modules:- Streamly.Prelude- , Streamly.Data.Unfold- , Streamly.Data.Fold- , Streamly.Data.Fold.Tee- , Streamly.Data.Array.Foreign-- -- 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-- -- Internal modules, listed roughly in 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.Concurrent- , Streamly.Internal.Data.Cont- , Streamly.Internal.Data.Tuple.Strict- , Streamly.Internal.Data.Maybe.Strict- , Streamly.Internal.Data.Either.Strict- , Streamly.Internal.Foreign.Malloc- , Streamly.Internal.Data.Atomics- , Streamly.Internal.Data.IOFinalizer- , 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- , Streamly.Internal.Data.SVar- , Streamly.Internal.Data.Stream.StreamK.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-- -- Unboxed IORef- , Streamly.Internal.Data.IORef.Prim-- -- streamly-core-array- -- May depend on streamly-core-stream- , Streamly.Internal.Data.Array.Foreign.Mut.Type- , Streamly.Internal.Data.Array.Foreign.Type- , 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-base-streams- , Streamly.Internal.Data.Stream.StreamK- -- StreamD depends on streamly-core-array- , 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- , Streamly.Internal.Data.Unfold- , 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.SVar- , Streamly.Internal.Data.Stream.Serial- , Streamly.Internal.Data.Stream.Async- , Streamly.Internal.Data.Stream.Parallel- , Streamly.Internal.Data.Stream.Ahead- , Streamly.Internal.Data.Stream.Zip- , Streamly.Internal.Data.Stream.IsStream.Combinators- , Streamly.Internal.Data.Stream.IsStream.Common- , Streamly.Internal.Data.Stream.IsStream.Types- , 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.List-- -- streamly-arrays- -- May depend on streamly-core- , Streamly.Internal.Data.Array- , Streamly.Internal.Data.Array.Foreign- , Streamly.Internal.Data.Array.Prim- , Streamly.Internal.Data.Array.Prim.Pinned- , Streamly.Internal.Data.SmallArray- , Streamly.Internal.Data.Array.Stream.Mut.Foreign- , Streamly.Internal.Data.Array.Stream.Foreign- , Streamly.Internal.Data.Array.Stream.Fold.Foreign-- -- Memory storage- , Streamly.Internal.Ring.Foreign-- -- streamly-unicode- , Streamly.Internal.Unicode.Stream- , Streamly.Internal.Unicode.Char- , Streamly.Internal.Unicode.Array.Char- , Streamly.Internal.Unicode.Array.Prim.Pinned-- -- streamly-serde- , Streamly.Internal.Data.Binary.Decode-- -- streamly-filesystem- , Streamly.Internal.FileSystem.Handle- , Streamly.Internal.FileSystem.Dir- , Streamly.Internal.FileSystem.File- , Streamly.Internal.FileSystem.IOVec- , 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-- 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 && < 5- , 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.8- , mtl >= 2.2 && < 3- , primitive >= 0.5.4 && < 0.8- , transformers >= 0.4 && < 0.6-- , heaps >= 0.3 && < 0.5-- -- concurrency- , atomic-primops >= 0.8 && < 0.9- , lockfree-queue >= 0.2.3 && < 0.3-- -- transfomers- , monad-control >= 1.0 && < 2- , transformers-base >= 0.4 && < 0.5-- , fusion-plugin-types >= 0.1 && < 0.2-- -- Network- , network >= 2.6 && < 4--- 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.0 +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.4 + , GHC==9.0.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: + .circleci/config.yml + .ghci + .github/workflows/haskell.yml + .gitignore + .hlint.ignore + .hlint.yaml + CONTRIBUTING.md + Changelog.md + README.md + appveyor.yml + benchmark/*.hs + benchmark/README.md + benchmark/bench-report/BenchReport.hs + benchmark/bench-report/bench-report.cabal + benchmark/bench-report/cabal.project + benchmark/bench-report/default.nix + benchmark/Streamly/Benchmark/Data/*.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-exec-one.sh + bin/build-lib.sh + bin/ghc.sh + bin/run-ci.sh + bin/mk-hscope.sh + bin/mk-tags.sh + bin/targets.sh + bin/test.sh + configure + configure.ac + credits/*.md + credits/Yampa-0.10.6.2.txt + credits/base-4.12.0.0.txt + credits/bjoern-2008-2009.txt + credits/clock-0.7.2.txt + credits/foldl-1.4.5.txt + credits/fsnotify-0.3.0.1.txt + credits/hfsevents-0.1.6.txt + credits/pipes-concurrency-2.0.8.txt + credits/primitive-0.7.0.0.txt + credits/transient-0.5.5.txt + credits/vector-0.12.0.2.txt + default.nix + dev/*.md + dev/*.png + dev/*.rst + docs/*.md + docs/*.hs + docs/*.svg + docs/API-changelog.txt + docs/streamly-docs.cabal + examples/README.md + src/Streamly/Internal/Data/Stream/Instances.hs + src/Streamly/Internal/Data/Time/Clock/config-clock.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/README.md + test/Streamly/Test/Common/Array.hs + test/Streamly/Test/Data/*.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/Parser/ParserD.hs + test/Streamly/Test/FileSystem/Event.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/Stream.hs + test/lib/Streamly/Test/Common.hs + test/lib/Streamly/Test/Prelude/Common.hs + test/streamly-tests.cabal + test/version-bounds.hs + +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 + +------------------------------------------------------------------------------- +-- 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 + -Rghc-timing + + if flag(has-llvm) + ghc-options: -fllvm + + if flag(dev) + ghc-options: -Wmissed-specialisations + -Wall-missed-specialisations + + if flag(dev) || flag(debug) + ghc-options: -fno-ignore-asserts + +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 + 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 + +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.1) + default-extensions: TypeApplications + if impl(ghc >= 8.6) + default-extensions: QuantifiedConstraints + + js-sources: jsbits/clock.js + include-dirs: src + if os(windows) + c-sources: src/Streamly/Internal/Data/Time/Clock/Windows.c + exposed-modules: Streamly.Internal.FileSystem.Event.Windows + build-depends: Win32 >= 2.6 && < 2.13 + + if os(darwin) + frameworks: Cocoa + include-dirs: src/Streamly/Internal + c-sources: src/Streamly/Internal/Data/Time/Clock/Darwin.c + , src/Streamly/Internal/FileSystem/Event/Darwin.m + exposed-modules: + Streamly.Internal.FileSystem.Event.Darwin + + if os(linux) + exposed-modules: Streamly.Internal.FileSystem.Event.Linux + + hs-source-dirs: src + other-modules: + Streamly.Data.Array + , Streamly.Data.Prim.Array + , Streamly.Data.SmallArray + + exposed-modules: + Streamly.Prelude + , Streamly.Data.Unfold + , Streamly.Data.Fold + , Streamly.Data.Fold.Tee + , Streamly.Data.Array.Foreign + + -- 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 + + -- Internal modules, listed roughly in 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.Concurrent + , Streamly.Internal.Data.Cont + , Streamly.Internal.Data.Tuple.Strict + , Streamly.Internal.Data.Maybe.Strict + , Streamly.Internal.Data.Either.Strict + , Streamly.Internal.Foreign.Malloc + , Streamly.Internal.Data.Atomics + , Streamly.Internal.Data.IOFinalizer + , 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 + , Streamly.Internal.Data.SVar + , Streamly.Internal.Data.Stream.StreamK.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 + + -- Unboxed IORef + , Streamly.Internal.Data.IORef.Prim + + -- streamly-core-array + -- May depend on streamly-core-stream + , Streamly.Internal.Data.Array.Foreign.Mut.Type + , Streamly.Internal.Data.Array.Foreign.Type + , 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-base-streams + , Streamly.Internal.Data.Stream.StreamK + -- StreamD depends on streamly-core-array + , 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 + , Streamly.Internal.Data.Unfold + , 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.SVar + , Streamly.Internal.Data.Stream.Serial + , Streamly.Internal.Data.Stream.Async + , Streamly.Internal.Data.Stream.Parallel + , Streamly.Internal.Data.Stream.Ahead + , Streamly.Internal.Data.Stream.Zip + , Streamly.Internal.Data.Stream.IsStream.Combinators + , Streamly.Internal.Data.Stream.IsStream.Common + , Streamly.Internal.Data.Stream.IsStream.Types + , 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.List + + -- streamly-arrays + -- May depend on streamly-core + , Streamly.Internal.Data.Array + , Streamly.Internal.Data.Array.Foreign + , Streamly.Internal.Data.Array.Prim + , Streamly.Internal.Data.Array.Prim.Pinned + , Streamly.Internal.Data.SmallArray + , Streamly.Internal.Data.Array.Stream.Mut.Foreign + , Streamly.Internal.Data.Array.Stream.Foreign + , Streamly.Internal.Data.Array.Stream.Fold.Foreign + + -- Memory storage + , Streamly.Internal.Ring.Foreign + + -- streamly-unicode + , Streamly.Internal.Unicode.Stream + , Streamly.Internal.Unicode.Char + , Streamly.Internal.Unicode.Array.Char + , Streamly.Internal.Unicode.Array.Prim.Pinned + + -- streamly-serde + , Streamly.Internal.Data.Binary.Decode + + -- streamly-filesystem + , Streamly.Internal.FileSystem.Handle + , Streamly.Internal.FileSystem.Dir + , Streamly.Internal.FileSystem.File + , Streamly.Internal.FileSystem.IOVec + , 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 + + 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 && < 5 + , 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.9 + , mtl >= 2.2 && < 3 + , primitive >= 0.5.4 && < 0.8 + , transformers >= 0.4 && < 0.6 + + , heaps >= 0.3 && < 0.5 + + -- concurrency + , atomic-primops >= 0.8 && < 0.9 + , lockfree-queue >= 0.2.3 && < 0.3 + + -- transfomers + , monad-control >= 1.0 && < 2 + , transformers-base >= 0.4 && < 0.5 + + , fusion-plugin-types >= 0.1 && < 0.2 + + -- Network + , network >= 2.6 && < 4 + + + 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