streamly-0.11.1: streamly.cabal
cabal-version: 2.4
name: streamly
version: 0.11.1
synopsis: Streaming data pipelines with declarative concurrency
description:
For upgrading to streamly-0.9.0+ please read the
<https://github.com/composewell/streamly/blob/streamly-0.10.0/docs/User/Project/Upgrading-0.8-to-0.9.md Streamly-0.9.0 upgrade guide>.
.
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 <https://streamly.composewell.com the streamly website>.
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.3
, GHC==9.12.4
, GHC==9.14.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.23
, fusion-plugin-types >= 0.1 && < 0.2
, containers >= 0.6.0 && < 0.9
, 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.25
-- The core streamly package
, streamly-core >= 0.3.0 && < 0.3.2
, 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.9
-- Network
-- network version 3.2.8 is broken on windows
, 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.10
-- For FileSystem.Event module
if os(linux)
build-depends: directory >= 1.2.2 && < 1.4
if os(windows)
build-depends: Win32 >= 2.6 && < 2.15
if os(darwin)
build-depends: directory >= 1.2.2 && < 1.4
frameworks: Cocoa
if flag(inspection)
build-depends: inspection-testing >= 0.4 && < 0.7
-- 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