cabal-version: 2.2 name: streamly version: 0.9.0 synopsis: Streaming, dataflow programming and declarative concurrency description: Streamly comprises two packages, the package provides functionality that depends only on boot libraries, and the package provides additional functionality like concurrency, time, lifted exceptions, and networking. For unified documentation visit . . Streamly provides unified, modular building blocks to build high-performance, concurrent, scalable applications in Haskell. Stream fusion optimizations in streamly enable exceptional modularity with high performance comparable to C. Streamly complements the Haskell package, supplying the missing functionality to quickly build general-purpose applications in Haskell. For high-level functionality built over streamly like streaming system processes, shell programming, GNU coreutils, statistics, and compression libraries please see the . . Performance with modularity: . * Performance on par with C () * API close to standard Haskell lists () * Declarative concurrency with automatic scaling * Filesystem, fsnotify, network, and Unicode support included * More functionality is provided via many () . Unified and powerful abstractions: . * Unifies streams, arrays, folds, and parsers * Unifies @Data.List@, @list-t@, and @logict@ with streaming * Unifies concurrency with standard streaming abstractions * Unifies reactive, time-domain programming with streaming * Interworks with other 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.6.5 , GHC==8.8.4 , GHC==8.10.7 , GHC==9.0.2 , GHC==9.2.7 , GHC==9.4.4 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-runner/Main.hs benchmark/bench-runner/bench-runner.cabal benchmark/Streamly/Benchmark/Data/*.hs benchmark/Streamly/Benchmark/Data/Array/Common.hs benchmark/Streamly/Benchmark/Data/Array/CommonImports.hs benchmark/Streamly/Benchmark/Data/Array/Generic.hs benchmark/Streamly/Benchmark/Data/Array/SmallArray.hs benchmark/Streamly/Benchmark/Data/Array.hs benchmark/Streamly/Benchmark/Data/Ring/Unboxed.hs benchmark/Streamly/Benchmark/Data/Array/Mut.hs benchmark/Streamly/Benchmark/Data/Array/Stream.hs benchmark/Streamly/Benchmark/Data/Fold/Window.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/Unicode/*.hs benchmark/lib/Streamly/Benchmark/*.hs benchmark/lib/Streamly/Benchmark/Common/*.hs benchmark/streamly-benchmarks.cabal bin/mk-hscope.sh bin/mk-tags.sh configure configure.ac docs/*.hs docs/streamly-docs.cabal targets/streamly-targets.cabal targets/Targets.hs test/test-runner/Main.hs test/test-runner/test-runner.cabal -- This is duplicated src/Streamly/Internal/Data/Stream/Instances.hs src/Streamly/Internal/Data/Array/ArrayMacros.h src/Streamly/Internal/FileSystem/Event/Darwin.h src/assert.hs 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/Generic.hs test/Streamly/Test/Data/Array.hs test/Streamly/Test/Data/Array/Mut.hs test/Streamly/Test/Data/Ring/Unboxed.hs test/Streamly/Test/Data/Array/Stream.hs test/Streamly/Test/Data/Parser/ParserD.hs test/Streamly/Test/Data/Stream/Concurrent.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/Streamly/Test/Serialize/*.hs test/Streamly/Test/Data/Fold/*.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 test/Streamly/Test/Data/Unbox.hs 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 docs/Developer/Benchmarks.md docs/Developer/*.png docs/Developer/*.md docs/Developer/*.rst docs/Developer/*.png docs/Developer/*.md docs/Developer/*.rst docs/Developer/*.link docs/User/*.md docs/User/Tutorials/*.md docs/User/Tutorials/*.link docs/User/Tutorials/*.hs docs/User/HowTo/*.md docs/User/HowTo/*.link docs/User/HowTo/*.svg docs/User/Explanatory/*.md docs/User/Explanatory/streaming-pradigms.rst docs/User/ProjectRelated/*.md docs/User/ProjectRelated/*.link docs/User/ProjectRelated/ApiChangelogs/0.8.3-0.9.0.txt docs/User/ProjectRelated/ApiChangelogs/0.8.3.txt test/README.md docs/Developer/Tests.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 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 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(dev) cpp-options: -DDEVBUILD if flag(inspection) cpp-options: -DINSPECTION ghc-options: -Weverything -Wno-implicit-prelude -Wno-missing-deriving-strategies -Wno-missing-exported-signatures -Wno-missing-import-lists -Wno-missing-local-signatures -Wno-missing-safe-haskell-mode -Wno-missed-specialisations -Wno-all-missed-specialisations -Wno-monomorphism-restriction -Wno-prepositive-qualified-module -Wno-unsafe -Rghc-timing if impl(ghc >= 9.2) ghc-options: -Wno-missing-kind-signatures -Wno-redundant-bang-patterns -Wno-operator-whitespace 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 TypeOperators 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 include-dirs: src , src/Streamly/Internal/Data/Stream , src/Streamly/Internal/Data/Array 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.Internal.Data.IsMap.HashMap , Streamly.Internal.Data.Cont , Streamly.Internal.Data.Stream.MkType -- streamly-concurrent , Streamly.Internal.Control.Concurrent , Streamly.Internal.Control.ForkLifted , Streamly.Internal.Data.Atomics , Streamly.Internal.Data.IOFinalizer.Lifted , Streamly.Internal.Data.Stream.Channel.Types , Streamly.Internal.Data.Stream.Channel.Dispatcher , Streamly.Internal.Data.Stream.Channel.Worker , Streamly.Internal.Data.Unfold.Exception , Streamly.Internal.Data.Fold.Concurrent.Channel.Type , Streamly.Internal.Data.Fold.Concurrent.Channel , Streamly.Internal.Data.Fold.Concurrent , Streamly.Data.Fold.Tee , Streamly.Internal.Data.Stream.Concurrent.Channel.Type , Streamly.Internal.Data.Stream.Concurrent.Channel.Dispatcher , Streamly.Internal.Data.Stream.Concurrent.Channel.Consumer , Streamly.Internal.Data.Stream.Concurrent.Channel.Append , Streamly.Internal.Data.Stream.Concurrent.Channel.Interleave , Streamly.Internal.Data.Stream.Concurrent.Channel.Operations , Streamly.Internal.Data.Stream.Concurrent.Channel , Streamly.Internal.Data.Stream.Concurrent , Streamly.Internal.Data.Stream.Zip.Concurrent , Streamly.Internal.Data.Stream.Time , Streamly.Internal.Data.Stream.Exception.Lifted -- streamly-unicode (depends on unicode-data) , Streamly.Internal.Unicode.Utf8 , Streamly.Internal.Unicode.Char -- streamly-network , Streamly.Internal.Network.Socket , Streamly.Internal.Network.Inet.TCP -- Exposed modules , Streamly.Data.Stream.MkType , Streamly.Data.Stream.Prelude -- Network/IO , Streamly.Network.Socket , Streamly.Network.Inet.TCP -- Deprecated , Streamly , Streamly.Data.Unicode.Stream , Streamly.Memory.Array , Streamly.Data.Array.Foreign , Streamly.Prelude -- Deprecated Internal modules , 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.Serial , Streamly.Internal.Data.Stream.Zip , 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 if !impl(ghcjs) && flag(dev) exposed-modules: Streamly.Internal.System.IOVec.Type , Streamly.Internal.System.IOVec , Streamly.Internal.FileSystem.FDIO , Streamly.Internal.FileSystem.FD if flag(dev) exposed-modules: Streamly.Data.SmallArray , Streamly.Internal.Data.SmallArray , Streamly.Internal.Data.SmallArray.Type if os(windows) exposed-modules: Streamly.Internal.FileSystem.Event.Windows if os(darwin) include-dirs: src/Streamly/Internal 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 other-modules: Streamly.Data.Stream.Exception , Streamly.Data.Stream.Concurrent , Streamly.Data.Stream.Time 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.12 && < 4.19 , containers >= 0.6.0 && < 0.7 , deepseq >= 1.4.4 && < 1.5 , exceptions >= 0.8.0 && < 0.11 , mtl >= 2.2.2 && < 2.4 , transformers >= 0.5.5 && < 0.7 , template-haskell >= 2.14 && < 2.20 -- The core streamly package , streamly-core == 0.1.0 , hashable >= 1.3 && < 1.5 , unordered-containers >= 0.2 && < 0.3 -- XXX to be removed , transformers-base >= 0.4 && < 0.5 , heaps >= 0.3 && < 0.5 -- concurrency , atomic-primops >= 0.8 && < 0.9 , lockfree-queue >= 0.2.4 && < 0.3 , unicode-data >= 0.1 && < 0.5 -- Network , network >= 2.6 && < 3.2 if flag(use-unliftio) build-depends: unliftio-core >= 0.2 && < 0.3 else build-depends: monad-control >= 1.0 && < 1.1 if flag(dev) build-depends: primitive >= 0.5.4 && < 0.9 -- For FileSystem.Event module if os(linux) build-depends: directory >= 1.2.2 && < 1.4 if os(windows) build-depends: Win32 >= 2.6 && < 2.14 if os(darwin) build-depends: directory >= 1.2.2 && < 1.4 frameworks: Cocoa if flag(inspection) build-depends: inspection-testing >= 0.4 && < 0.6 -- 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