streamly-core-0.1.0: streamly-core.cabal
cabal-version: 2.2
name: streamly-core
version: 0.1.0
synopsis: Streaming, parsers, arrays and more
description:
Streamly consists of two packages: "streamly-core" and "streamly".
<https://hackage.haskell.org/package/streamly-core streamly-core>
provides basic features, and depends only on GHC boot libraries (see
note below), while
<https://hackage.haskell.org/package/streamly streamly> provides
higher-level features like concurrency, time, lifted exceptions,
and networking. For documentation, visit the
<https://streamly.composewell.com Streamly website>.
.
This package provides streams, arrays, parsers, unicode text, file
IO, and console IO functionality.
.
Note: The dependencies "heaps" and "monad-control" are included in
the package solely for backward compatibility, and will be removed in
future versions.
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, Streaming, Dataflow, Pipes, List,
Logic, Non-determinism, Parsing, Array, Time
stability: Stable
build-type: Configure
extra-source-files:
configure
configure.ac
-- doctest include files
src/DocTestDataArray.hs
src/DocTestDataFold.hs
src/DocTestDataMutArray.hs
src/DocTestDataMutArrayGeneric.hs
src/DocTestDataParser.hs
src/DocTestDataStream.hs
src/DocTestDataStreamK.hs
src/DocTestDataUnfold.hs
-- This is duplicated
src/Streamly/Internal/Data/Array/ArrayMacros.h
src/assert.hs
src/inline.hs
src/Streamly/Internal/Data/Time/Clock/config-clock.h
src/config.h.in
extra-tmp-files:
config.log
config.status
autom4te.cache
src/config.h
extra-doc-files:
Changelog.md
docs/*.md
docs/ApiChangelogs/0.1.0.txt
source-repository head
type: git
location: https://github.com/composewell/streamly
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 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 use-unliftio
description: Use unliftio-core instead of monad-control
manual: True
default: False
flag use-unfolds
description: Use unfolds for generation everywhere
manual: True
default: False
flag use-folds
description: Use folds for elimination everywhere
manual: True
default: False
-------------------------------------------------------------------------------
-- Common stanzas
-------------------------------------------------------------------------------
common compile-options
default-language: Haskell2010
if flag(no-fusion)
cpp-options: -DDISABLE_FUSION
if flag(dev)
cpp-options: -DDEVBUILD
if flag(use-unfolds)
cpp-options: -DUSE_UNFOLDS_EVERYWHERE
if flag(use-folds)
cpp-options: -DUSE_FOLDS_EVERYWHERE
if flag(use-c-malloc)
cpp-options: -DUSE_C_MALLOC
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
StandaloneDeriving
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
js-sources: jsbits/clock.js
include-dirs:
src
, src/Streamly/Internal/Data/Array
, src/Streamly/Internal/Data/Stream
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.IsMap
, Streamly.Internal.System.IO
-- streamly-strict-data
, Streamly.Internal.Data.Tuple.Strict
, Streamly.Internal.Data.Maybe.Strict
, Streamly.Internal.Data.Either.Strict
, Streamly.Internal.Data.IOFinalizer
-- streamly-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.Unfold.Type
, Streamly.Internal.Data.Producer.Type
, Streamly.Internal.Data.Producer
, Streamly.Internal.Data.Producer.Source
, Streamly.Internal.Data.Parser.ParserK.Type
, Streamly.Internal.Data.Parser.ParserD.Type
, Streamly.Internal.Data.Pipe.Type
-- streamly-core-array-types
, Streamly.Internal.Data.Unboxed
-- Unboxed IORef
, Streamly.Internal.Data.IORef.Unboxed
-- May depend on streamly-core-stream
, Streamly.Internal.Data.Array.Mut.Type
, Streamly.Internal.Data.Array.Mut
, Streamly.Internal.Data.Array.Type
, Streamly.Internal.Data.Array.Generic.Mut.Type
-- streamly-core-streams
, Streamly.Internal.Data.Stream.StreamK
-- 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.Top
, Streamly.Internal.Data.Stream.StreamD
, Streamly.Internal.Data.Stream.Common
, Streamly.Internal.Data.Stream
, Streamly.Internal.Data.Parser.ParserD.Tee
, Streamly.Internal.Data.Parser.ParserD
-- streamly-core-data
, Streamly.Internal.Data.Builder
, Streamly.Internal.Data.Unfold
, Streamly.Internal.Data.Unfold.Enumeration
, Streamly.Internal.Data.Fold.Tee
, Streamly.Internal.Data.Fold
, Streamly.Internal.Data.Fold.Chunked
, Streamly.Internal.Data.Fold.Window
, Streamly.Internal.Data.Parser
, Streamly.Internal.Data.Pipe
-- streamly-transformers (non-base)
, Streamly.Internal.Data.Stream.StreamD.Transformer
, Streamly.Internal.Data.Stream.StreamK.Transformer
-- streamly-containers (non-base)
, Streamly.Internal.Data.Stream.StreamD.Container
, Streamly.Internal.Data.Fold.Container
, Streamly.Internal.Data.Stream.Chunked
-- streamly-core-data-arrays
, Streamly.Internal.Data.Array.Generic
, Streamly.Internal.Data.Array
, Streamly.Internal.Data.Array.Mut.Stream
-- streamly-serde
, Streamly.Internal.Serialize.FromBytes
, Streamly.Internal.Serialize.ToBytes
-- streamly-unicode-core
, Streamly.Internal.Unicode.Stream
, Streamly.Internal.Unicode.String
, Streamly.Internal.Unicode.Parser
, Streamly.Internal.Unicode.Array
-- Filesystem/IO
, Streamly.Internal.FileSystem.Handle
, Streamly.Internal.FileSystem.File
, Streamly.Internal.FileSystem.Dir
-- Ring Arrays
, Streamly.Internal.Data.Ring.Unboxed
, Streamly.Internal.Data.Ring
-- streamly-console
, Streamly.Internal.Console.Stdio
-- To be implemented
-- , Streamly.Data.Refold
-- , Streamly.Data.Binary.Encode -- Stream types
-- Pre-release modules
-- , Streamly.Data.Fold.Window
-- , Streamly.Data.Pipe
-- , Streamly.Data.Array.Stream
-- , Streamly.Data.Array.Fold
-- , Streamly.Data.Array.Mut.Stream
-- , Streamly.Data.Ring
-- , Streamly.Data.Ring.Unboxed
-- , Streamly.Data.IORef.Unboxed
-- , Streamly.Data.List
-- , Streamly.Data.Binary.Decode
-- , Streamly.FileSystem.File
-- , Streamly.FileSystem.Dir
-- , Streamly.Data.Time.Units
-- , Streamly.Data.Time.Clock
-- , Streamly.Data.Tuple.Strict
-- , Streamly.Data.Maybe.Strict
-- , Streamly.Data.Either.Strict
-- streamly-core released modules in alphabetic order
-- NOTE: these must be added to streamly.cabal as well
, Streamly.Console.Stdio
, Streamly.Data.Array
, Streamly.Data.Array.Generic
, Streamly.Data.MutArray
, Streamly.Data.MutArray.Generic
, Streamly.Data.Fold
, Streamly.Data.Parser
, Streamly.Data.ParserK
, Streamly.Data.Stream
, Streamly.Data.StreamK
, Streamly.Data.Unfold
, Streamly.FileSystem.Dir
, Streamly.FileSystem.File
, Streamly.FileSystem.Handle
, Streamly.Unicode.Parser
, Streamly.Unicode.Stream
, Streamly.Unicode.String
if flag(dev)
exposed-modules:
Streamly.Internal.Data.Stream.StreamK.Alt
, Streamly.Internal.Data.Stream.Type
, Streamly.Internal.Data.Stream.Eliminate
, Streamly.Internal.Data.Stream.Enumerate
, Streamly.Internal.Data.Stream.Generate
, Streamly.Internal.Data.Stream.Transform
, Streamly.Internal.Data.Stream.Bottom
, Streamly.Internal.Data.Stream.Exception
, Streamly.Internal.Data.Stream.Expand
, Streamly.Internal.Data.Stream.Lift
, Streamly.Internal.Data.Stream.Reduce
, Streamly.Internal.Data.Stream.Transformer
, Streamly.Internal.Data.Stream.StreamDK
, Streamly.Internal.Data.Stream.Zip
, Streamly.Internal.Data.Stream.Cross
, Streamly.Internal.Data.List
, Streamly.Data.Stream.Zip
--, Streamly.Internal.Data.Parser.ParserDK
build-depends:
-- streamly-base
--
-- These dependencies can be reversed if we want
-- streamly-base to depend only on base.
--
-- 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.
ghc-prim >= 0.5.3 && < 0.10
, fusion-plugin-types >= 0.1 && < 0.2
, base >= 4.12 && < 4.19
, exceptions >= 0.8.0 && < 0.11
, transformers >= 0.5.5 && < 0.7
, filepath >= 1.4.2 && < 1.5
-- streamly-unicode-core
, template-haskell >= 2.14 && < 2.20
-- streamly-filesystem-core
, directory >= 1.3.3 && < 1.4
-- XXX to be removed
, containers >= 0.6.0 && < 0.7
, heaps >= 0.3 && < 0.5
if !flag(use-unliftio)
build-depends: monad-control >= 1.0 && < 1.1