packages feed

Cabal revisions of streamly-core-0.3.0

Hackage metadata revisions edit the .cabal file after upload; each diff below is one revision.

revision 1
-cabal-version:      2.4-name:               streamly-core-version:            0.3.0-synopsis:           Streaming, parsers, arrays, serialization and more-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.-  .-  @streamly-core@ is a Haskell standard library built on top of @base@-  and GHC boot libraries only. Stream processing abstractions include-  streams, scans, folds, parsers; and console I/O, file I/O; text-  processing.  Array abstractions include pinned, unpinned, mutable,-  immutable, boxed and unboxed arrays, and ring arrays.  Builders,-  binary serialization, and deserialization are built-in features of-  arrays.-  .-  This package provides a high-performance, unified and ergonomic-  alternative to many disparate packages, such as @streaming, pipes,-  conduit, list-t, logict, foldl, attoparsec, array, primitive,-  vector, vector-algorithms, binary, cereal, store, bytestring, text,-  stringsearch, interpolate, filepath, and path@.-  .-  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.1-                   , GHC==9.12.1-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/doctest/*.hs--    -- This is duplicated-    src/Streamly/Internal/Data/Array/ArrayMacros.h-    src/Streamly/Internal/Data/ParserDrivers.h-    src/assert.hs-    src/inline.hs-    src/deprecation.h--    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/*.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 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--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--flag force-lstat-readdir-  description: Use lstat instead of checking for dtype in ReadDir-  manual: True-  default: False------------------------------------------------------------------------------------ Common stanzas----------------------------------------------------------------------------------common compile-options-    if flag(force-lstat-readdir)-      cpp-options:    -DFORCE_LSTAT_READDIR--    if flag(internal-dev)-      cpp-options:    -DDEVBUILD--    if flag(use-unfolds)-      cpp-options:    -DUSE_UNFOLDS_EVERYWHERE--    if flag(use-folds)-      cpp-options:    -DUSE_FOLDS_EVERYWHERE--    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 impl(ghc >= 9.10)-      ghc-options:-        -Wno-missing-poly-kind-signatures--    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-        StandaloneDeriving-        TupleSections-        TypeApplications-        TypeOperators--        -- Not in GHC2024-        CApiFFI-        CPP-        DefaultSignatures-        MagicHash-        RecordWildCards--        -- TypeFamilies is required by IsList, IsMap type classes and-        -- Unbox generic deriving code.-        -- TypeFamilies--        -- 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).  It also causes some-        -- code to not compile, so has been disabled in specific-        -- modules. 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)-    cpp-options: -DDEBUG-    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--    js-sources: jsbits/clock.js--    include-dirs:-          src-        , src/doctest-        , src/Streamly/Internal/Data-        , src/Streamly/Internal/Data/Array-        , src/Streamly/Internal/Data/Stream--    c-sources: src/Streamly/Internal/Data/MutArray/Lib.c--    -- Prefer OS conditionals inside the source files rather than here,-    -- conditionals here do not work well with cabal2nix.-    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-                     , Streamly.Internal.Data.Path--                     -- streamly-core-stream-types-                     , Streamly.Internal.Data.SVar.Type-                     , Streamly.Internal.Data.Refold.Type-                     , Streamly.Internal.Data.Producer--                     -- streamly-core-array-types-                     , Streamly.Internal.Data.MutByteArray-                     , Streamly.Internal.Data.CString--                     -- streaming and parsing Haskell types to/from bytes-                     , Streamly.Internal.Data.Binary.Parser-                     , Streamly.Internal.Data.Binary.Stream--                     -- May depend on streamly-core-stream-                     , Streamly.Internal.Data.MutArray-                     , Streamly.Internal.Data.MutArray.Generic--                     -- streamly-core-streams-                     , Streamly.Internal.Data.StreamK-                     -- StreamD depends on streamly-array-types-                     , Streamly.Internal.Data.Stream--                     -- streamly-core-data-                     , Streamly.Internal.Data.Builder-                     , Streamly.Internal.Data.Unfold-                     , Streamly.Internal.Data.Parser-                     , Streamly.Internal.Data.ParserK-                     , Streamly.Internal.Data.Pipe-                     , Streamly.Internal.Data.Scanr--                     -- streamly-containers (non-base)-                     , Streamly.Internal.Data.Fold-                     , Streamly.Internal.Data.Scanl--                     -- streamly-core-data-arrays-                     , Streamly.Internal.Data.Array.Generic-                     , Streamly.Internal.Data.Array--                     -- Unboxed IORef-                     , Streamly.Internal.Data.IORef--                    -- streamly-unicode-core-                     , Streamly.Internal.Unicode.Stream-                     , Streamly.Internal.Unicode.String-                     , Streamly.Internal.Unicode.Parser-                     , Streamly.Internal.Unicode.Array--                     -- Filesystem/IO--                     , Streamly.Internal.FileSystem.Path-                     , Streamly.Internal.FileSystem.Path.Seg-                     , Streamly.Internal.FileSystem.Path.Node-                     , Streamly.Internal.FileSystem.Path.SegNode--                     , Streamly.Internal.FileSystem.PosixPath-                     , Streamly.Internal.FileSystem.PosixPath.Seg-                     , Streamly.Internal.FileSystem.PosixPath.Node-                     , Streamly.Internal.FileSystem.PosixPath.SegNode--                     , Streamly.Internal.FileSystem.WindowsPath-                     , Streamly.Internal.FileSystem.WindowsPath.Seg-                     , Streamly.Internal.FileSystem.WindowsPath.Node-                     , Streamly.Internal.FileSystem.WindowsPath.SegNode--                     , Streamly.Internal.FileSystem.Handle-                     , Streamly.Internal.FileSystem.File.Common-                     , Streamly.Internal.FileSystem.Posix.Errno-                     , Streamly.Internal.FileSystem.Posix.File-                     , Streamly.Internal.FileSystem.Posix.ReadDir-                     , Streamly.Internal.FileSystem.Windows.ReadDir-                     , Streamly.Internal.FileSystem.Windows.File-                     , Streamly.Internal.FileSystem.FileIO-                     , Streamly.Internal.FileSystem.DirIO--                    -- RingArray Arrays-                     , Streamly.Internal.Data.RingArray-                     , Streamly.Internal.Data.RingArray.Generic--                     -- streamly-console-                     , Streamly.Internal.Console.Stdio--                     -- To be implemented-                     -- , Streamly.Data.Refold--                     -- Pre-release modules-                     -- , Streamly.Data.Pipe-                     -- , Streamly.Data.RingArray.Generic-                     -- , Streamly.Data.IORef-                     -- , Streamly.Data.List-                     -- , 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-                     , Streamly.Console.Stdio-                     , Streamly.Control.Exception-                     , Streamly.Data.Array-                     , Streamly.Data.Array.Generic-                     , Streamly.Data.Fold-                     , Streamly.Data.MutArray-                     , Streamly.Data.MutArray.Generic-                     , Streamly.Data.MutByteArray-                     , Streamly.Data.Parser-                     , Streamly.Data.ParserK-                     , Streamly.Data.RingArray-                     , Streamly.Data.Scanl-                     , Streamly.Data.Stream-                     , Streamly.Data.StreamK-                     , Streamly.Data.Unfold-                     , Streamly.FileSystem.DirIO-                     , Streamly.FileSystem.FileIO-                     , Streamly.FileSystem.Handle-                     , Streamly.FileSystem.Path-                     , Streamly.Unicode.Parser-                     , Streamly.Unicode.Stream-                     , Streamly.Unicode.String--                    -- Deprecated in 0.3.0-                     , Streamly.Internal.FileSystem.File-                     , Streamly.Internal.FileSystem.Dir-                     , Streamly.FileSystem.Dir-                     , Streamly.FileSystem.File--                    -- Deprecated in 0.2.0-                     , Streamly.Internal.Data.MutArray.Stream-                     , Streamly.Internal.Data.Array.Stream-                     , Streamly.Internal.Data.Stream.StreamD-                     , Streamly.Internal.Data.Fold.Chunked--    -- Only those modules should be here which are fully re-exported via some-    -- other module.-    other-modules:-                      Streamly.FileSystem.Path.Seg-                    , Streamly.FileSystem.Path.Node-                    , Streamly.FileSystem.Path.SegNode--                    , Streamly.Internal.Data.Fold.Step-                    , Streamly.Internal.Data.Fold.Type-                    , Streamly.Internal.Data.Fold.Combinators-                    , Streamly.Internal.Data.Fold.Container-                    , Streamly.Internal.Data.Fold.Exception-                    , Streamly.Internal.Data.Fold.Tee-                    , Streamly.Internal.Data.Fold.Window--                    , Streamly.Internal.Data.Scanl.Type-                    , Streamly.Internal.Data.Scanl.Window-                    , Streamly.Internal.Data.Scanl.Combinators-                    , Streamly.Internal.Data.Scanl.Container--                    , Streamly.Internal.Data.Parser.Type-                    , Streamly.Internal.Data.Parser.Tee-                    , Streamly.Internal.Data.ParserK.Type-                    , Streamly.Internal.Data.ParserDrivers--                    , Streamly.Internal.Data.Stream.Container-                    , Streamly.Internal.Data.Stream.Eliminate-                    , Streamly.Internal.Data.Stream.Exception-                    , Streamly.Internal.Data.Stream.Generate-                    , Streamly.Internal.Data.Stream.Lift-                    , Streamly.Internal.Data.Stream.Nesting-                    , Streamly.Internal.Data.Stream.Step-                    , Streamly.Internal.Data.Stream.Top-                    , Streamly.Internal.Data.Stream.Transform-                    , Streamly.Internal.Data.Stream.Transformer-                    , Streamly.Internal.Data.Stream.Type--                    , Streamly.Internal.Data.StreamK.Type-                    , Streamly.Internal.Data.StreamK.Transformer--                    , Streamly.Internal.Data.Pipe.Type--                    , Streamly.Internal.Data.Unfold.Type-                    , Streamly.Internal.Data.Unfold.Enumeration--                    , Streamly.Internal.Data.MutArray.Type--                    , Streamly.Internal.Data.Array.Type-                    , Streamly.Internal.Data.Array.Generic.Type--                    , Streamly.Internal.Data.MutByteArray.Type-                    , Streamly.Internal.Data.Unbox-                    , Streamly.Internal.Data.Unbox.TH-                    , Streamly.Internal.Data.Serialize.Type-                    , Streamly.Internal.Data.Serialize.TH-                    , Streamly.Internal.Data.Serialize.TH.RecHeader-                    , Streamly.Internal.Data.Serialize.TH.Common-                    , Streamly.Internal.Data.Serialize.TH.Bottom--                    , Streamly.Internal.Data.Producer.Type-                    , Streamly.Internal.Data.Producer.Source--                    , Streamly.Internal.Data.Time.Clock.Type-                    , Streamly.Internal.FileSystem.Path.Common-                    , Streamly.Internal.FileSystem.DirOptions--    if flag(internal-dev)-      exposed-modules:-                        Streamly.Internal.Data.StreamK.Alt-                        -- XXX Compilation needs to be fixed-                      -- , Streamly.Internal.Data.List--    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.14-                     , fusion-plugin-types >= 0.1 && < 0.2-                     , base              >= 4.12  && < 4.22-                     , exceptions        >= 0.8.0 && < 0.11-                     , transformers      >= 0.5.5 && < 0.7--                    -- streamly-unicode-core-                     , template-haskell  >= 2.14  && < 2.24--                     -- XXX to be removed-                     , filepath          >= 1.4.2 && < 1.6-                     , containers        >= 0.6.0 && < 0.8-                     , heaps             >= 0.3   && < 0.5--    if impl(ghc >= 9.0)-      build-depends:  ghc-bignum >= 1.0  && < 2-    else-      build-depends:  integer-gmp >= 1.0 && < 1.2--    if !flag(internal-use-unliftio)-      build-depends:   monad-control     >= 1.0 && < 1.1--    if os(windows)-      build-depends: Win32            >= 2.6 && < 2.14+cabal-version:      2.4
+name:               streamly-core
+version:            0.3.0
+x-revision: 1
+synopsis:           Streaming, parsers, arrays, serialization and more
+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.
+  .
+  @streamly-core@ is a Haskell standard library built on top of @base@
+  and GHC boot libraries only. Stream processing abstractions include
+  streams, scans, folds, parsers; and console I/O, file I/O; text
+  processing.  Array abstractions include pinned, unpinned, mutable,
+  immutable, boxed and unboxed arrays, and ring arrays.  Builders,
+  binary serialization, and deserialization are built-in features of
+  arrays.
+  .
+  This package provides a high-performance, unified and ergonomic
+  alternative to many disparate packages, such as @streaming, pipes,
+  conduit, list-t, logict, foldl, attoparsec, array, primitive,
+  vector, vector-algorithms, binary, cereal, store, bytestring, text,
+  stringsearch, interpolate, filepath, and path@.
+  .
+  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.1
+                   , GHC==9.12.1
+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/doctest/*.hs
+
+    -- This is duplicated
+    src/Streamly/Internal/Data/Array/ArrayMacros.h
+    src/Streamly/Internal/Data/ParserDrivers.h
+    src/assert.hs
+    src/inline.hs
+    src/deprecation.h
+
+    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/*.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 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
+
+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
+
+flag force-lstat-readdir
+  description: Use lstat instead of checking for dtype in ReadDir
+  manual: True
+  default: False
+
+-------------------------------------------------------------------------------
+-- Common stanzas
+-------------------------------------------------------------------------------
+
+common compile-options
+    if flag(force-lstat-readdir)
+      cpp-options:    -DFORCE_LSTAT_READDIR
+
+    if flag(internal-dev)
+      cpp-options:    -DDEVBUILD
+
+    if flag(use-unfolds)
+      cpp-options:    -DUSE_UNFOLDS_EVERYWHERE
+
+    if flag(use-folds)
+      cpp-options:    -DUSE_FOLDS_EVERYWHERE
+
+    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 impl(ghc >= 9.10)
+      ghc-options:
+        -Wno-missing-poly-kind-signatures
+
+    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
+        StandaloneDeriving
+        TupleSections
+        TypeApplications
+        TypeOperators
+
+        -- Not in GHC2024
+        CApiFFI
+        CPP
+        DefaultSignatures
+        MagicHash
+        RecordWildCards
+
+        -- TypeFamilies is required by IsList, IsMap type classes and
+        -- Unbox generic deriving code.
+        -- TypeFamilies
+
+        -- 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).  It also causes some
+        -- code to not compile, so has been disabled in specific
+        -- modules. 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)
+    cpp-options: -DDEBUG
+    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
+
+    js-sources: jsbits/clock.js
+
+    include-dirs:
+          src
+        , src/doctest
+        , src/Streamly/Internal/Data
+        , src/Streamly/Internal/Data/Array
+        , src/Streamly/Internal/Data/Stream
+
+    c-sources: src/Streamly/Internal/Data/MutArray/Lib.c
+
+    -- Prefer OS conditionals inside the source files rather than here,
+    -- conditionals here do not work well with cabal2nix.
+    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
+                     , Streamly.Internal.Data.Path
+
+                     -- streamly-core-stream-types
+                     , Streamly.Internal.Data.SVar.Type
+                     , Streamly.Internal.Data.Refold.Type
+                     , Streamly.Internal.Data.Producer
+
+                     -- streamly-core-array-types
+                     , Streamly.Internal.Data.MutByteArray
+                     , Streamly.Internal.Data.CString
+
+                     -- streaming and parsing Haskell types to/from bytes
+                     , Streamly.Internal.Data.Binary.Parser
+                     , Streamly.Internal.Data.Binary.Stream
+
+                     -- May depend on streamly-core-stream
+                     , Streamly.Internal.Data.MutArray
+                     , Streamly.Internal.Data.MutArray.Generic
+
+                     -- streamly-core-streams
+                     , Streamly.Internal.Data.StreamK
+                     -- StreamD depends on streamly-array-types
+                     , Streamly.Internal.Data.Stream
+
+                     -- streamly-core-data
+                     , Streamly.Internal.Data.Builder
+                     , Streamly.Internal.Data.Unfold
+                     , Streamly.Internal.Data.Parser
+                     , Streamly.Internal.Data.ParserK
+                     , Streamly.Internal.Data.Pipe
+                     , Streamly.Internal.Data.Scanr
+
+                     -- streamly-containers (non-base)
+                     , Streamly.Internal.Data.Fold
+                     , Streamly.Internal.Data.Scanl
+
+                     -- streamly-core-data-arrays
+                     , Streamly.Internal.Data.Array.Generic
+                     , Streamly.Internal.Data.Array
+
+                     -- Unboxed IORef
+                     , Streamly.Internal.Data.IORef
+
+                    -- streamly-unicode-core
+                     , Streamly.Internal.Unicode.Stream
+                     , Streamly.Internal.Unicode.String
+                     , Streamly.Internal.Unicode.Parser
+                     , Streamly.Internal.Unicode.Array
+
+                     -- Filesystem/IO
+
+                     , Streamly.Internal.FileSystem.Path
+                     , Streamly.Internal.FileSystem.Path.Seg
+                     , Streamly.Internal.FileSystem.Path.Node
+                     , Streamly.Internal.FileSystem.Path.SegNode
+
+                     , Streamly.Internal.FileSystem.PosixPath
+                     , Streamly.Internal.FileSystem.PosixPath.Seg
+                     , Streamly.Internal.FileSystem.PosixPath.Node
+                     , Streamly.Internal.FileSystem.PosixPath.SegNode
+
+                     , Streamly.Internal.FileSystem.WindowsPath
+                     , Streamly.Internal.FileSystem.WindowsPath.Seg
+                     , Streamly.Internal.FileSystem.WindowsPath.Node
+                     , Streamly.Internal.FileSystem.WindowsPath.SegNode
+
+                     , Streamly.Internal.FileSystem.Handle
+                     , Streamly.Internal.FileSystem.File.Common
+                     , Streamly.Internal.FileSystem.Posix.Errno
+                     , Streamly.Internal.FileSystem.Posix.File
+                     , Streamly.Internal.FileSystem.Posix.ReadDir
+                     , Streamly.Internal.FileSystem.Windows.ReadDir
+                     , Streamly.Internal.FileSystem.Windows.File
+                     , Streamly.Internal.FileSystem.FileIO
+                     , Streamly.Internal.FileSystem.DirIO
+
+                    -- RingArray Arrays
+                     , Streamly.Internal.Data.RingArray
+                     , Streamly.Internal.Data.RingArray.Generic
+
+                     -- streamly-console
+                     , Streamly.Internal.Console.Stdio
+
+                     -- To be implemented
+                     -- , Streamly.Data.Refold
+
+                     -- Pre-release modules
+                     -- , Streamly.Data.Pipe
+                     -- , Streamly.Data.RingArray.Generic
+                     -- , Streamly.Data.IORef
+                     -- , Streamly.Data.List
+                     -- , 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
+                     , Streamly.Console.Stdio
+                     , Streamly.Control.Exception
+                     , Streamly.Data.Array
+                     , Streamly.Data.Array.Generic
+                     , Streamly.Data.Fold
+                     , Streamly.Data.MutArray
+                     , Streamly.Data.MutArray.Generic
+                     , Streamly.Data.MutByteArray
+                     , Streamly.Data.Parser
+                     , Streamly.Data.ParserK
+                     , Streamly.Data.RingArray
+                     , Streamly.Data.Scanl
+                     , Streamly.Data.Stream
+                     , Streamly.Data.StreamK
+                     , Streamly.Data.Unfold
+                     , Streamly.FileSystem.DirIO
+                     , Streamly.FileSystem.FileIO
+                     , Streamly.FileSystem.Handle
+                     , Streamly.FileSystem.Path
+                     , Streamly.Unicode.Parser
+                     , Streamly.Unicode.Stream
+                     , Streamly.Unicode.String
+
+                    -- Deprecated in 0.3.0
+                     , Streamly.Internal.FileSystem.File
+                     , Streamly.Internal.FileSystem.Dir
+                     , Streamly.FileSystem.Dir
+                     , Streamly.FileSystem.File
+
+                    -- Deprecated in 0.2.0
+                     , Streamly.Internal.Data.MutArray.Stream
+                     , Streamly.Internal.Data.Array.Stream
+                     , Streamly.Internal.Data.Stream.StreamD
+                     , Streamly.Internal.Data.Fold.Chunked
+
+    -- Only those modules should be here which are fully re-exported via some
+    -- other module.
+    other-modules:
+                      Streamly.FileSystem.Path.Seg
+                    , Streamly.FileSystem.Path.Node
+                    , Streamly.FileSystem.Path.SegNode
+
+                    , Streamly.Internal.Data.Fold.Step
+                    , Streamly.Internal.Data.Fold.Type
+                    , Streamly.Internal.Data.Fold.Combinators
+                    , Streamly.Internal.Data.Fold.Container
+                    , Streamly.Internal.Data.Fold.Exception
+                    , Streamly.Internal.Data.Fold.Tee
+                    , Streamly.Internal.Data.Fold.Window
+
+                    , Streamly.Internal.Data.Scanl.Type
+                    , Streamly.Internal.Data.Scanl.Window
+                    , Streamly.Internal.Data.Scanl.Combinators
+                    , Streamly.Internal.Data.Scanl.Container
+
+                    , Streamly.Internal.Data.Parser.Type
+                    , Streamly.Internal.Data.Parser.Tee
+                    , Streamly.Internal.Data.ParserK.Type
+                    , Streamly.Internal.Data.ParserDrivers
+
+                    , Streamly.Internal.Data.Stream.Container
+                    , Streamly.Internal.Data.Stream.Eliminate
+                    , Streamly.Internal.Data.Stream.Exception
+                    , Streamly.Internal.Data.Stream.Generate
+                    , Streamly.Internal.Data.Stream.Lift
+                    , Streamly.Internal.Data.Stream.Nesting
+                    , Streamly.Internal.Data.Stream.Step
+                    , Streamly.Internal.Data.Stream.Top
+                    , Streamly.Internal.Data.Stream.Transform
+                    , Streamly.Internal.Data.Stream.Transformer
+                    , Streamly.Internal.Data.Stream.Type
+
+                    , Streamly.Internal.Data.StreamK.Type
+                    , Streamly.Internal.Data.StreamK.Transformer
+
+                    , Streamly.Internal.Data.Pipe.Type
+
+                    , Streamly.Internal.Data.Unfold.Type
+                    , Streamly.Internal.Data.Unfold.Enumeration
+
+                    , Streamly.Internal.Data.MutArray.Type
+
+                    , Streamly.Internal.Data.Array.Type
+                    , Streamly.Internal.Data.Array.Generic.Type
+
+                    , Streamly.Internal.Data.MutByteArray.Type
+                    , Streamly.Internal.Data.Unbox
+                    , Streamly.Internal.Data.Unbox.TH
+                    , Streamly.Internal.Data.Serialize.Type
+                    , Streamly.Internal.Data.Serialize.TH
+                    , Streamly.Internal.Data.Serialize.TH.RecHeader
+                    , Streamly.Internal.Data.Serialize.TH.Common
+                    , Streamly.Internal.Data.Serialize.TH.Bottom
+
+                    , Streamly.Internal.Data.Producer.Type
+                    , Streamly.Internal.Data.Producer.Source
+
+                    , Streamly.Internal.Data.Time.Clock.Type
+                    , Streamly.Internal.FileSystem.Path.Common
+                    , Streamly.Internal.FileSystem.DirOptions
+
+    if flag(internal-dev)
+      exposed-modules:
+                        Streamly.Internal.Data.StreamK.Alt
+                        -- XXX Compilation needs to be fixed
+                      -- , Streamly.Internal.Data.List
+
+    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.14
+                     , fusion-plugin-types >= 0.1 && < 0.2
+                     , base              >= 4.12  && < 4.23
+                     , exceptions        >= 0.8.0 && < 0.11
+                     , transformers      >= 0.5.5 && < 0.7
+
+                    -- streamly-unicode-core
+                     , template-haskell  >= 2.14  && < 2.25
+
+                     -- XXX to be removed
+                     , filepath          >= 1.4.2 && < 1.6
+                     , containers        >= 0.6.0 && < 0.9
+                     , heaps             >= 0.3   && < 0.5
+
+    if impl(ghc >= 9.0)
+      build-depends:  ghc-bignum >= 1.0  && < 2
+    else
+      build-depends:  integer-gmp >= 1.0 && < 1.2
+
+    if !flag(internal-use-unliftio)
+      build-depends:   monad-control     >= 1.0 && < 1.1
+
+    if os(windows)
+      build-depends: Win32            >= 2.6 && < 2.15