cabal-version: 2.2 name: streamly version: 0.9.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 () * API close to standard Haskell lists () * 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.4.4 , GHC==8.6.5 , GHC==8.8.4 , GHC==8.10.7 , GHC==9.0.2 , GHC==9.2.2 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/SmallArray.hs benchmark/Streamly/Benchmark/Data/Array/Unboxed.hs benchmark/Streamly/Benchmark/Data/Ring/Unboxed.hs benchmark/Streamly/Benchmark/Data/Array/Unboxed/Mut.hs benchmark/Streamly/Benchmark/Data/Array/Stream/Foreign.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/Unboxed.hs test/Streamly/Test/Data/Array/Unboxed/Mut.hs test/Streamly/Test/Data/Ring/Unboxed.hs test/Streamly/Test/Data/Array/Stream/Foreign.hs test/Streamly/Test/Data/Parser/ParserD.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/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 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 -- Include streamly-core when packaging -- This is temporary as we will soon break this package out core/configure core/configure.ac core/src/assert.hs core/src/config.h.in core/src/inline.hs core/src/Streamly/Internal/Data/Stream/Instances.hs core/src/Streamly/Internal/Data/Array/ArrayMacros.h core/src/Streamly/Internal/Data/Time/Clock/config-clock.h core/src/Streamly/Internal/BaseCompat.hs core/src/Streamly/Internal/Control/Exception.hs core/src/Streamly/Internal/Control/Monad.hs core/src/Streamly/Internal/Control/ForkIO.hs core/src/Streamly/Internal/Data/Cont.hs core/src/Streamly/Internal/System/IO.hs core/src/Streamly/Internal/Data/IsMap.hs core/src/Streamly/Internal/Data/Tuple/Strict.hs core/src/Streamly/Internal/Data/Maybe/Strict.hs core/src/Streamly/Internal/Data/Either/Strict.hs core/src/Streamly/Internal/Control/Concurrent.hs core/src/Streamly/Internal/Control/ForkLifted.hs core/src/Streamly/Internal/Data/IOFinalizer.hs core/src/Streamly/Internal/Data/Time/TimeSpec.hsc core/src/Streamly/Internal/Data/Time/Units.hs core/src/Streamly/Internal/Data/Time/Clock/Type.hsc core/src/Streamly/Internal/Data/Time/Clock.hs core/src/Streamly/Internal/Data/SVar/Type.hs core/src/Streamly/Internal/Data/Stream/StreamK/Type.hs core/src/Streamly/Internal/Data/Fold/Step.hs core/src/Streamly/Internal/Data/Refold/Type.hs core/src/Streamly/Internal/Data/Fold/Type.hs core/src/Streamly/Internal/Data/Stream/StreamD/Step.hs core/src/Streamly/Internal/Data/Stream/StreamD/Type.hs core/src/Streamly/Internal/Data/Stream/StreamDK/Type.hs core/src/Streamly/Internal/Data/Unfold/Type.hs core/src/Streamly/Internal/Data/Producer/Type.hs core/src/Streamly/Internal/Data/Producer.hs core/src/Streamly/Internal/Data/Producer/Source.hs core/src/Streamly/Internal/Data/Parser/ParserK/Type.hs core/src/Streamly/Internal/Data/Parser/ParserD/Type.hs core/src/Streamly/Internal/Data/Pipe/Type.hs core/src/Streamly/Internal/Data/Unboxed.hs core/src/Streamly/Internal/Data/IORef/Unboxed.hs core/src/Streamly/Internal/Data/Array/Unboxed/Mut/Type.hs core/src/Streamly/Internal/Data/Array/Unboxed/Mut.hs core/src/Streamly/Internal/Data/Array/Unboxed/Type.hs core/src/Streamly/Internal/Data/Array/Mut/Type.hs core/src/Streamly/Internal/Data/Stream/StreamD/Generate.hs core/src/Streamly/Internal/Data/Stream/StreamD/Eliminate.hs core/src/Streamly/Internal/Data/Stream/StreamD/Nesting.hs core/src/Streamly/Internal/Data/Stream/StreamD/Transform.hs core/src/Streamly/Internal/Data/Stream/StreamD/Exception.hs core/src/Streamly/Internal/Data/Stream/StreamD/Lift.hs core/src/Streamly/Internal/Data/Stream/StreamD.hs core/src/Streamly/Internal/Data/Stream/StreamDK.hs core/src/Streamly/Internal/Data/Stream/Common.hs core/src/Streamly/Internal/Data/Parser/ParserD/Tee.hs core/src/Streamly/Internal/Data/Parser/ParserD.hs core/src/Streamly/Internal/Data/Unfold.hs core/src/Streamly/Internal/Data/Unfold/Enumeration.hs core/src/Streamly/Internal/Data/Fold/Tee.hs core/src/Streamly/Internal/Data/Fold.hs core/src/Streamly/Internal/Data/Parser.hs core/src/Streamly/Internal/Data/Pipe.hs core/src/Streamly/Internal/Data/Stream/Serial.hs core/src/Streamly/Internal/Data/Stream.hs core/src/Streamly/Internal/Data/Stream/Bottom.hs core/src/Streamly/Internal/Data/Stream/Eliminate.hs core/src/Streamly/Internal/Data/Stream/Enumerate.hs core/src/Streamly/Internal/Data/Stream/Exception.hs core/src/Streamly/Internal/Data/Stream/Expand.hs core/src/Streamly/Internal/Data/Stream/Generate.hs core/src/Streamly/Internal/Data/Stream/Lift.hs core/src/Streamly/Internal/Data/Stream/Reduce.hs core/src/Streamly/Internal/Data/Stream/Top.hs core/src/Streamly/Internal/Data/Stream/Transform.hs core/src/Streamly/Internal/Data/Stream/Type.hs core/src/Streamly/Internal/Data/Stream/WSerial.hs core/src/Streamly/Internal/Data/Stream/Zip.hs core/src/Streamly/Internal/Data/List.hs core/src/Streamly/Internal/Data/Array.hs core/src/Streamly/Internal/Data/Array/Unboxed.hs core/src/Streamly/Internal/Data/Array/Stream/Mut/Foreign.hs core/src/Streamly/Internal/Data/Array/Stream/Fold/Foreign.hs core/src/Streamly/Internal/Data/Ring/Foreign.hs core/src/Streamly/Internal/Data/Ring.hs core/src/Streamly/Internal/Data/Stream/StreamK.hs core/src/Streamly/Data/Stream.hs core/src/Streamly/Data/Fold.hs core/src/Streamly/Data/Fold/Tee.hs core/src/Streamly/Data/Unfold.hs core/src/Streamly/Internal/Data/Fold/Window.hs core/src/Streamly/Data/Array/Unboxed.hs core/src/Streamly/Internal/Data/Time/Clock/Darwin.c core/src/Streamly/Internal/Data/Time/Clock/Windows.c core/streamly-core.cabal core/jsbits/clock.js core/Setup.hs 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/API-changelog.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 ------------------------------------------------------------------------------- -- 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 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 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 -- XXX To be removed or put under dev flag , Streamly.Internal.Data.SmallArray.Type , Streamly.Internal.Data.SmallArray -- streamly-concurrent , Streamly.Internal.Data.Atomics , 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.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 , Streamly.Internal.Data.Array.Stream.Foreign -- streamly-serde , Streamly.Internal.Data.Binary.Decode -- streamly-unicode , Streamly.Internal.Unicode.Stream , Streamly.Internal.Unicode.String , Streamly.Internal.Unicode.Utf8 , Streamly.Internal.Unicode.Char , Streamly.Internal.Unicode.Char.Parser , Streamly.Internal.Unicode.Array.Char -- streamly-filesystem , Streamly.Internal.System.IOVec.Type , Streamly.Internal.System.IOVec , Streamly.Internal.FileSystem.Handle , Streamly.Internal.FileSystem.Dir , Streamly.Internal.FileSystem.File , 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 -- Exposed modules , Streamly.Prelude -- 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 , Streamly.Data.Array.Foreign reexported-modules: -- Re-exported modules, listed in the order described in -- streamly-core. -- streamly-base Streamly.Internal.BaseCompat , Streamly.Internal.Control.Exception , Streamly.Internal.Control.Monad , Streamly.Internal.Control.ForkIO , Streamly.Internal.Data.Cont , Streamly.Internal.System.IO -- streamly-strict-data , Streamly.Internal.Data.Tuple.Strict , Streamly.Internal.Data.Maybe.Strict , Streamly.Internal.Data.Either.Strict -- XXX Depends on monad-control or unliftio-core , Streamly.Internal.Control.Concurrent , Streamly.Internal.Control.ForkLifted , 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.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.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.Unboxed.Mut.Type , Streamly.Internal.Data.Array.Unboxed.Mut , Streamly.Internal.Data.Array.Unboxed.Type , Streamly.Internal.Data.Array.Mut.Type -- streamly-core-streams -- 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 , Streamly.Internal.Data.Stream.StreamDK , Streamly.Internal.Data.Stream.Common , Streamly.Internal.Data.Parser.ParserD.Tee , Streamly.Internal.Data.Parser.ParserD -- streamly-core-data , Streamly.Internal.Data.Unfold , Streamly.Internal.Data.Unfold.Enumeration , Streamly.Internal.Data.Fold.Tee , Streamly.Internal.Data.Fold , Streamly.Internal.Data.Fold.Window , Streamly.Internal.Data.Parser , Streamly.Internal.Data.Pipe , Streamly.Internal.Data.Stream.Type , Streamly.Internal.Data.Stream.Bottom , Streamly.Internal.Data.Stream.Enumerate , Streamly.Internal.Data.Stream.Generate , Streamly.Internal.Data.Stream.Eliminate , Streamly.Internal.Data.Stream.Expand , Streamly.Internal.Data.Stream.Reduce , Streamly.Internal.Data.Stream.Transform , Streamly.Internal.Data.Stream.Exception , Streamly.Internal.Data.Stream.Lift , Streamly.Internal.Data.Stream.Top , Streamly.Internal.Data.Stream , Streamly.Internal.Data.Stream.Serial , Streamly.Internal.Data.Stream.Zip , Streamly.Internal.Data.List -- streamly-core-data-arrays -- XXX Depends on primitive , Streamly.Internal.Data.Array , Streamly.Internal.Data.Array.Unboxed , Streamly.Internal.Data.Array.Stream.Mut.Foreign , Streamly.Internal.Data.Array.Stream.Fold.Foreign -- Ring Arrays , Streamly.Internal.Data.Ring.Foreign -- XXX Depends on primitive , Streamly.Internal.Data.Ring -- Only used for benchmarks , Streamly.Internal.Data.Stream.StreamK -- streamly-core exposed modules , Streamly.Data.Unfold , Streamly.Data.Stream , Streamly.Data.Fold , Streamly.Data.Fold.Tee , Streamly.Data.Array.Unboxed other-modules: Streamly.Data.Array , Streamly.Data.SmallArray 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 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 && < 4.18 , 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.10 , mtl >= 2.2 && < 2.3 , transformers >= 0.4 && < 0.7 , template-haskell >= 2.13 && < 2.20 -- The core streamly package , streamly-core == 0.1.0 , fusion-plugin-types >= 0.1 && < 0.2 , hashable >= 1.3 && < 1.5 , unordered-containers >= 0.2 && < 0.3 -- XXX to be removed , transformers-base >= 0.4 && < 0.5 , primitive >= 0.5.4 && < 0.8 , heaps >= 0.3 && < 0.5 -- concurrency , atomic-primops >= 0.8 && < 0.9 , lockfree-queue >= 0.2.3 && < 0.3 , unicode-data >= 0.1 && < 0.4 -- Network , network >= 2.6 && < 3.2 if os(windows) build-depends: Win32 >= 2.6 && < 2.13 if os(darwin) frameworks: Cocoa if flag(inspection) build-depends: 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