on master help sign in
Add fs event module related build notes
5912650Harendra Kumar
docs/Build.md+38−12
@@ -1,6 +1,20 @@
1−# Compilation Options
1+# GHC Haskell
2+## Compiler Versions
2
3
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+
3−## Absolute Minimum
17+### Absolute Minimum
4
18
5At the very least `-O -fdicts-strict` compilation options are
19At the very least `-O -fdicts-strict` compilation options are
6required. If these options are not used, the program may exhibit memory
20required. If these options are not used, the program may exhibit memory
@@ -11,7 +25,7 @@ optimization option, is known to hog memory:
11main = S.drain $ S.concatMap S.fromList $ S.repeat []
25main = S.drain $ S.concatMap S.fromList $ S.repeat []
12```
26```
13
27
14−## Recommended Options
28+### Recommended Options
15
29
16Use the following GHC options:
30Use the following GHC options:
17
31
@@ -28,7 +42,7 @@ value or remove that option.
28
42
29See [Explanation](#explanation) for details about these flags.
43See [Explanation](#explanation) for details about these flags.
30
44
31−## Using Fusion Plugin
45+### Using Fusion Plugin
32
46
33In many cases
47In many cases
34[fusion-plugin](https://hackage.haskell.org/package/fusion-plugin) can
48[fusion-plugin](https://hackage.haskell.org/package/fusion-plugin) can
@@ -44,7 +58,7 @@ package works only for GHC >= 8.6.
44 -fplugin=Fusion.Plugin
58 -fplugin=Fusion.Plugin
45```
59```
46
60
47−## Explanation
61+### Explanation
48
62
49* `-fdicts-strict` is needed to avoid [a GHC
63* `-fdicts-strict` is needed to avoid [a GHC
50issue](https://gitlab.haskell.org/ghc/ghc/issues/17745) leading to
64issue](https://gitlab.haskell.org/ghc/ghc/issues/17745) leading to
@@ -64,7 +78,7 @@ bindings and therefore enabling case-of-case optimization. In some
64cases, especially in some file IO benchmarks, it can make a difference of
78cases, especially in some file IO benchmarks, it can make a difference of
655-10x better performance.
795-10x better performance.
66
80
67−# Multi-core Parallelism
81+## Multi-core Parallelism
68
82
69Concurrency without a threaded runtime may be a bit more efficient. Do not use
83Concurrency without a threaded runtime may be a bit more efficient. Do not use
70threaded runtime unless you really need multi-core parallelism. To get
84threaded runtime unless you really need multi-core parallelism. To get
@@ -72,14 +86,26 @@ multi-core parallelism use the following GHC options:
72
86
73 `-threaded -with-rtsopts "-N"`
87 `-threaded -with-rtsopts "-N"`
74
88
75−# Compiler Versions
89+# Platform Specific
76
90
77−Use GHC 8.8 for best performance. Benchmarks show that GHC 8.8 has
91+Streamly supports Linux, macOS and Windows operating systems. Some
78−significantly better performance than GHC 8.6 in many cases.
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.
79
94
80−GHC 8.2.2 may hog memory and hang when building certain application using
95+## Linux
81−streamly (particularly the benchmark programs in the streamly package).
96+
82−Therefore we recommend avoiding using the GHC version 8.2.x.
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.
83
109
84# Performance Optimizations
110# Performance Optimizations
85
111