on master help sign in
Add fs event module related build notes
commit59126504237a4e1c99f25e2c187afe4be646b11d authorHarendra Kumar <harendra@composewell.com> dateSun 16 Aug 2020, 20:48 (6 years ago) parentf03a4e8
1 file changed+38−12
docs/Build.md+38−12
docs/Build.md+38−12
@@ -1,6 +1,20 @@
1−# Compilation Options
1+# GHC Haskell
2+## Compiler Versions
23
3−## Absolute Minimum
4+GHC versions 8.0 onwards are supported by streamly per se. However, note
5+that some packages we depend on (e.g. `network`) support only last three
6+versions of GHC.
7+
8+Use GHC 8.8 for best performance. Benchmarks show that GHC 8.8 has
9+significantly better performance than GHC 8.6 in many cases.
10+
11+GHC 8.2.2 may hog memory and hang when building certain applications using
12+streamly (particularly the benchmark programs in the streamly package).
13+Therefore, we recommend avoiding using the GHC version 8.2.x.
14+
15+## Compilation Options
16+
17+### Absolute Minimum
418
519At the very least `-O -fdicts-strict` compilation options are
620required. If these options are not used, the program may exhibit memory
@@ -11,7 +25,7 @@ optimization option, is known to hog memory:
1125main = S.drain $ S.concatMap S.fromList $ S.repeat []
1226```
1327
14−## Recommended Options
28+### Recommended Options
1529
1630Use the following GHC options:
1731
@@ -28,7 +42,7 @@ value or remove that option.
2842
2943See [Explanation](#explanation) for details about these flags.
3044
31−## Using Fusion Plugin
45+### Using Fusion Plugin
3246
3347In many cases
3448[fusion-plugin](https://hackage.haskell.org/package/fusion-plugin) can
@@ -44,7 +58,7 @@ package works only for GHC >= 8.6.
4458 -fplugin=Fusion.Plugin
4559```
4660
47−## Explanation
61+### Explanation
4862
4963* `-fdicts-strict` is needed to avoid [a GHC
5064issue](https://gitlab.haskell.org/ghc/ghc/issues/17745) leading to
@@ -64,7 +78,7 @@ bindings and therefore enabling case-of-case optimization. In some
6478cases, especially in some file IO benchmarks, it can make a difference of
65795-10x better performance.
6680
67−# Multi-core Parallelism
81+## Multi-core Parallelism
6882
6983Concurrency without a threaded runtime may be a bit more efficient. Do not use
7084threaded runtime unless you really need multi-core parallelism. To get
@@ -72,14 +86,26 @@ multi-core parallelism use the following GHC options:
7286
7387 `-threaded -with-rtsopts "-N"`
7488
75−# Compiler Versions
89+# Platform Specific
7690
77−Use GHC 8.8 for best performance. Benchmarks show that GHC 8.8 has
78−significantly better performance than GHC 8.6 in many cases.
91+Streamly supports Linux, macOS and Windows operating systems. Some
92+modules and functionality may depend on specific OS kernel features.
93+Features/modules may get disabled if the kernel/OS does not support it.
7994
80−GHC 8.2.2 may hog memory and hang when building certain application using
81−streamly (particularly the benchmark programs in the streamly package).
82−Therefore we recommend avoiding using the GHC version 8.2.x.
95+## Linux
96+
97+* File system events notification module is supported only for kernel versions
98+ 2.6.36 onwards.
99+
100+## Mac OSX
101+
102+* File system events notification module requires macOS 10.7+ with
103+ Xcode/macOS SDK installed (depends on `Cocoa` framework). However, we only
104+ test on latest three versions of the OS.
105+
106+## Windows
107+
108+* File system event notification module is not yet available for Windows.
83109
84110# Performance Optimizations
85111