X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=docs%2Fusers_guide%2Fphases.xml;h=3ac9ef27e27a6d6a0fd74e44c1e7717013fa105d;hb=eb51c44142ecd9dea175d9632f16cc75a44476f5;hp=fd034a305afc5dbdf30734b9b8a2775df0de8ea6;hpb=0065d5ab628975892cea1ec7303f968c3338cbe1;p=ghc-hetmet.git
diff --git a/docs/users_guide/phases.xml b/docs/users_guide/phases.xml
index fd034a3..3ac9ef2 100644
--- a/docs/users_guide/phases.xml
+++ b/docs/users_guide/phases.xml
@@ -49,6 +49,28 @@
+ cmd
+
+
+
+ Use cmd as the
+ mangler.
+
+
+
+
+
+ cmd
+
+
+
+ Use cmd as the
+ splitter.
+
+
+
+
+ cmd
@@ -82,17 +104,6 @@
- cmd
-
-
-
- Use cmd as the dependency
- generator.
-
-
-
-
- cmd
@@ -155,6 +166,15 @@
+ option
+
+
+
+ Pass option to the mangler.
+
+
+
+ option
@@ -486,6 +506,24 @@ $ cat foo.hspp
are fed to cmd on the command
line after the three standard input and output
arguments.
+
+
+ An example of a pre-processor is to convert your source files to the
+ input encoding that GHC expects, i.e. create a script
+ convert.sh containing the lines:
+
+
+#!/bin/sh
+( echo "{-# LINE 1 \"$2\" #-}" ; iconv -f l1 -t utf-8 $2 ) > $3
+
+ and pass -F -pgmF convert.sh to GHC.
+ The -f l1 option tells iconv to convert your
+ Latin-1 file, supplied in argument $2, while
+ the "-t utf-8" options tell iconv to return a UTF-8 encoded file.
+ The result is redirected into argument $3.
+ The echo "{-# LINE 1 \"$2\" #-}"
+ just makes sure that your error positions are reported as
+ in the original source file.
@@ -529,9 +567,7 @@ $ cat foo.hspp
Use GHC's native code generator rather than
compiling via C. This will compile faster (up to twice as
fast), but may produce code that is slightly slower than
- compiling via C. is the default
- when optimisation is off (see ).
+ compiling via C. is the default.
@@ -542,9 +578,8 @@ $ cat foo.hspp
Compile via C instead of using the native code
- generator. This is default for optimised compilations,
- and on architectures for which GHC doesn't have a native
- code generator.
+ generator. This is the default on architectures for which GHC
+ doesn't have a native code generator.
@@ -562,6 +597,32 @@ $ cat foo.hspp
+
+
+
+
+ Generate object code. This is the default outside of
+ GHCi, and can be used with GHCi to cause object code to be
+ generated in preference to bytecode.
+
+
+
+
+
+
+
+
+
+ Generate byte-code instead of object-code. This is
+ the default in GHCi. Byte-code can currently only be used
+ in the interactive interpreter, not saved to disk. This
+ option is only useful for reversing the effect of
+ .
+
+
+
+
+
@@ -725,7 +786,12 @@ $ cat foo.hspp
Tell the linker to split the single object file that
would normally be generated into multiple object files,
one per top-level Haskell function or type in the module.
- We use this feature for building GHC's libraries libraries
+ This only makes sense for libraries, where it means that
+ executables linked against the library are smaller as they only
+ link against the object files that they need. However, assembling
+ all the sections separately is expensive, so this is slower than
+ compiling normally.
+ We use this feature for building GHC's libraries
(warning: don't use it unless you know what you're
doing!).
@@ -783,7 +849,7 @@ $ cat foo.hspp
ghc is not clever
enough to figure out that they both need recompiling. You can
force recompilation by removing the object file, or by using the
- flag.
+ flag.
@@ -839,26 +905,43 @@ $ cat foo.hspp
- Link the program with the "threaded" runtime system.
- This version of the runtime is designed to be used in
- programs that use multiple operating-system threads. It
- supports calls to foreign-exported functions from multiple
- OS threads. Calls to foreign functions are made using the
- same OS thread that created the Haskell thread (if it was
- created by a call-in), or an arbitrary OS thread otherwise
- (if the Haskell thread was created by
+ Link the program with the "threaded" version of the
+ runtime system. The threaded runtime system is so-called
+ because it manages multiple OS threads, as opposed to the
+ default runtime system which is purely
+ single-threaded.
+
+ Note that you do not need
+ in order to use concurrency; the
+ single-threaded runtime supports concurrency between Haskell
+ threads just fine.
+
+ The threaded runtime system provides the following
+ benefits:
+
+
+
+ Parallelismparallelism on a multiprocessormultiprocessorSMP or multicoremulticore
+ machine. See .
+
+ The ability to make a foreign call that does not
+ block all other Haskell threads.
+
+ The ability to invoke foreign exported Haskell
+ functions from multiple OS threads.
+
+
+
+ With , calls to foreign
+ functions are made using the same OS thread that created the
+ Haskell thread (if it was created by a call to a foreign
+ exported Haskell function), or an arbitrary OS thread
+ otherwise (if the Haskell thread was created by
forkIO).More details on the use of "bound threads" in the
threaded runtime can be found in the Control.Concurrent module.
-
- The threaded RTS does not
- support using multiple CPUs to speed up execution of a
- multi-threaded Haskell program. The GHC runtime platform
- is still single-threaded, but using the
- option it can be used safely in
- a multi-threaded environment.