mirror of
https://github.com/composewell/streamly.git
synced 2024-08-17 15:30:24 +03:00
Basically remove depdency on GHC rewrite rules. The reason for separating StreamD and StreamK instead of using rewrite rules: * Separate types provide better reasoning for the programmer about performance. Each type has its own pros and cons and the programmer can choose the best one based on the use case. * rewrite rules are fragile, led to broken performance in the past dues to change in GHC. * Rewrite rules lead to optimization problems, blocking fusion in some cases, specifically when combining multiple operations e.g. (filter . drop). * Rewrite rules lead to problems when calling a function recursively. For example, the StreamD version of foldBreak cannot be used recursively when wrapped in rewrite rules because each recursive call adds a roundtrip conversion from D to K and back to D. We can use the StreamK versions of these though because the rewrite rule gets eliminated in that case. * If we have a unified module, we need two different versions of several operations e.g. appendK and appendD, both are useful in different cases.
25 lines
511 B
Plaintext
25 lines
511 B
Plaintext
packages: streamly.cabal
|
|
, core/streamly-core.cabal
|
|
-- , docs/streamly-docs.cabal
|
|
-- for QuickCheck in property doctests
|
|
, test/streamly-tests.cabal
|
|
|
|
-- Keep the flags same as cabal.project.O0 because we utilize the same build
|
|
-- for doctest in CI.
|
|
|
|
package streamly
|
|
flags: -opt
|
|
ghc-options: -O0
|
|
|
|
package streamly-core
|
|
flags: -opt
|
|
ghc-options: -O0
|
|
|
|
package streamly-docs
|
|
flags: -opt
|
|
ghc-options: -O0
|
|
|
|
package streamly-tests
|
|
flags: -opt
|
|
ghc-options: -O0
|