cabal-version: 2.4 name: streamly version: 0.11.0 synopsis: Streaming data pipelines with declarative concurrency description: For upgrading to streamly-0.9.0+ please read the . . Streamly is a high-performance, beginner-friendly standard library for Haskell. It unifies streaming with list transformers and logic programming; unifies streaming with concurrency and reactive programming; unifies arrays with ring arrays, text, bytestring and vector use cases; unifies arrays with builders and binary serialization; generalizes parsers to any input type and unifies attoparsec, parsec use cases with better performance; provides streaming fileIO — all with a clean, consistent, well-integrated and streaming enabled API. . Streams are designed to have a list like interface — no steep learning curve, no complex types. Streamly is designed to build general purpose applications in a truly functional manner, from simple hello-world to advanced high-performance systems. The design emphasizes simplicity, modularity, and code reuse with minimal building blocks. Performance is on par with C, tuning is easy, and it’s hard to get it wrong. . Streamly is serial by default, with seamless declarative concurrency that scales automatically when needed. It provides prompt and safe resource management, works well with other streaming libraries as well as core libraries like bytestring and text, and is backed by solid documentation. . The @streamly@ package is built on top of the @streamly-core@ package and offers high-level capabilities such as concurrency, reactive programming, time-related combinators, lifted exceptions, and networking. It provides streaming with concurrency, and is a more powerful, higher-level and more expressive alternative to the @async@ package. . Performant. Unified. Modular. Powerful. Simple. . Learn more at . 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.8 , GHC==9.4.7 , GHC==9.6.3 , GHC==9.8.1 , GHC==9.10.1 , GHC==9.12.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: bench-test-lib/bench-test-lib.cabal bench-test-lib/src/BenchTestLib/DirIO.hs benchmark/*.hs benchmark/bench-runner/Main.hs benchmark/bench-runner/bench-runner.cabal benchmark/Streamly/Benchmark/Data/*.hs benchmark/Streamly/Benchmark/Data/Scanl/*.hs benchmark/Streamly/Benchmark/Data/Fold/*.hs benchmark/Streamly/Benchmark/Data/Serialize/*.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/RingArray.hs benchmark/Streamly/Benchmark/Data/MutArray.hs benchmark/Streamly/Benchmark/Data/Array/Stream.hs benchmark/Streamly/Benchmark/Data/Fold/Window.hs benchmark/Streamly/Benchmark/Data/Stream/*.hs benchmark/Streamly/Benchmark/Data/StreamK/*.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 src/doctest/*.hs 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/FileSystem/Event/Darwin.h src/assert.hs src/config.h.in src/inline.hs src/deprecation.h 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/MutArray.hs test/Streamly/Test/Data/RingArray.hs test/Streamly/Test/Data/Array/Stream.hs test/Streamly/Test/Data/Parser.hs test/Streamly/Test/Data/Parser/*.hs test/Streamly/Test/Data/ParserK.hs test/Streamly/Test/Data/Stream/*.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/*.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/Scanl/*.hs test/Streamly/Test/Data/Fold/*.hs test/lib/Streamly/Test/Common.hs test/lib/Streamly/Test/Prelude/Common.hs test/lib/Streamly/Test/Parser/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 test/Streamly/Test/Data/Unbox/*.hs test/Streamly/Test/Data/Serialize.hs test/Streamly/Test/Data/Serialize/*.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/*.md docs/diagrams/module-diagram.hs docs/Developer/*.link docs/Developer/*.md docs/Developer/*.png docs/Developer/*.rst docs/User/*.md docs/User/Explanatory/*.md docs/User/Explanatory/streaming-pradigms.rst docs/User/HowTo/*.md docs/User/HowTo/*.svg docs/User/Project/*.link docs/User/Project/*.md docs/User/Project/ApiChangelogs/*.txt docs/User/Tutorials/*.md docs/User/Tutorials/*.link docs/User/Tutorials/*.svg docs/User/Tutorials/all-your-base.jpg 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 internal-dev description: DO NOT USE, ONLY FOR INTERNAL USE. 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 internal-use-unliftio description: DO NOT USE, ONLY FOR INTERNAL USE. manual: True default: False ------------------------------------------------------------------------------- -- Common stanzas ------------------------------------------------------------------------------- common compile-options 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(internal-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 impl(ghc >= 9.8) ghc-options: -Wno-missing-role-annotations if flag(has-llvm) ghc-options: -fllvm if flag(internal-dev) ghc-options: -Wmissed-specialisations -Wall-missed-specialisations if flag(limit-build-mem) ghc-options: +RTS -M1000M -RTS if flag(internal-use-unliftio) cpp-options: -DUSE_UNLIFTIO common default-extensions default-language: Haskell2010 -- GHC2024 may include more extensions than we are actually using, see the -- full list below. We enable this to ensure that we are able to compile -- with this i.e. there is no interference by other extensions. -- Don't enforce GHC2024 and GHC2021 but We can support the build with them. -- if impl(ghc >= 9.10) -- default-language: GHC2024 -- if impl(ghc >= 9.2) && impl(ghc < 9.10) -- default-language: GHC2021 if impl(ghc >= 8.10) default-extensions: StandaloneKindSignatures -- In GHC 2024 default-extensions: BangPatterns ConstraintKinds DeriveDataTypeable DeriveGeneric DeriveTraversable ExistentialQuantification FlexibleContexts FlexibleInstances GeneralizedNewtypeDeriving InstanceSigs KindSignatures LambdaCase MultiParamTypeClasses RankNTypes ScopedTypeVariables TupleSections TypeApplications TypeOperators -- Not in GHC2024 default-extensions: CApiFFI CPP MagicHash RecordWildCards -- TypeFamilies -- required by IsHashMap type class -- MonoLocalBinds, enabled by TypeFamilies and GHC2024, was -- once found to cause runtime performance regressions which -- does not seem to be the case anymore, but need more testing -- to confirm. It is confirmed that it requires more memory -- for compilation at least in some cases (Data.Fold.Window -- benchmark on GHC-9.10.1 macOS). Disabling this must come -- after TypeFamilies, otherwise TypeFamilies will enable it -- again. -- NoMonoLocalBinds -- UndecidableInstances -- Does not show any perf impact -- UnboxedTuples -- interferes with (#.) if impl(ghc >= 8.6) default-extensions: QuantifiedConstraints 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(internal-dev) || flag(debug) || !flag(opt) ghc-options: -fno-ignore-asserts cpp-options: -DDEBUG 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 include-dirs: src , src/doctest , src/Streamly/Internal/Data/Stream 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.Channel , 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.Prelude , Streamly.Internal.Data.Unfold.Prelude , Streamly.Internal.Data.Fold.Prelude , Streamly.Internal.Data.Scanl.Prelude -- 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 , Streamly.Data.Fold.Prelude , Streamly.Data.Scanl.Prelude -- Network/IO , Streamly.Network.Socket , Streamly.Network.Inet.TCP -- Deprecated , Streamly.Data.Array.Foreign , Streamly.Data.Fold.Tee , Streamly.Prelude -- Deprecated Internal modules , Streamly.Internal.Data.SVar , Streamly.Internal.Data.Stream.SVar , 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 if !impl(ghcjs) && flag(internal-dev) other-modules: Streamly.Internal.System.IOVec.Type , Streamly.Internal.System.IOVec , Streamly.Internal.FileSystem.FDIO , Streamly.Internal.FileSystem.FD if flag(internal-dev) exposed-modules: Streamly.Internal.Data.SmallArray -- Exposed modules show up on hackage irrespective of the flag, so keep -- it hidden. other-modules: Streamly.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.c 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.Internal.Data.Channel.Types , Streamly.Internal.Data.Channel.Dispatcher , Streamly.Internal.Data.Channel.Worker , Streamly.Internal.Data.Stream.Channel.Type , Streamly.Internal.Data.Stream.Channel.Dispatcher , Streamly.Internal.Data.Stream.Channel.Consumer , Streamly.Internal.Data.Stream.Channel.Append , Streamly.Internal.Data.Stream.Channel.Interleave , Streamly.Internal.Data.Stream.Channel.Operations , Streamly.Internal.Data.Stream.Channel , Streamly.Internal.Data.Stream.Concurrent , Streamly.Internal.Data.Stream.Time , Streamly.Internal.Data.Stream.Lifted , Streamly.Internal.Data.Fold.Time , Streamly.Internal.Data.Fold.Channel.Type , Streamly.Internal.Data.Fold.Channel , Streamly.Internal.Data.Fold.Concurrent , Streamly.Internal.Data.Scanl.Concurrent , Streamly.Internal.Data.Unfold.Exception , Streamly.Internal.Data.Unfold.SVar -- Deprecated , Streamly.Internal.Data.Stream.Common , Streamly.Internal.Data.Stream.IsStream.Type , 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.Combinators , Streamly.Internal.Data.Stream.IsStream.Common , Streamly.Internal.Data.Stream.IsStream.Enumeration , Streamly.Internal.Data.Stream.SVar.Generate , Streamly.Internal.Data.Stream.SVar.Eliminate , Streamly.Internal.Data.Fold.SVar , Streamly.Internal.Data.SVar.Worker , Streamly.Internal.Data.SVar.Dispatch , Streamly.Internal.Data.SVar.Pull 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.22 , fusion-plugin-types >= 0.1 && < 0.2 , containers >= 0.6.0 && < 0.8 , deepseq >= 1.4.4 && < 1.6 , exceptions >= 0.8.0 && < 0.11 , mtl >= 2.2.2 && < 2.4 , transformers >= 0.5.5 && < 0.7 , template-haskell >= 2.14 && < 2.24 -- The core streamly package , streamly-core == 0.3.0 , hashable >= 1.3 && < 1.6 , unordered-containers >= 0.2 && < 0.3 , heaps >= 0.3 && < 0.5 -- concurrency , lockfree-queue >= 0.2.4 && < 0.3 , unicode-data >= 0.1 && < 0.7 -- Network , network >= 2.6 && < 3.3 if impl(ghc < 9.10) build-depends: atomic-primops >= 0.8 && < 0.9 else build-depends: atomic-primops >= 0.8.8 && < 0.9 if impl(ghc < 9.6) build-depends: transformers-base >= 0.4 && < 0.5 if flag(internal-use-unliftio) build-depends: unliftio-core >= 0.2 && < 0.3 else build-depends: monad-control >= 1.0 && < 1.1 if flag(internal-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(internal-dev) && flag(inspection) build-depends: inspection-and-dev-flags-cannot-be-used-together