X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=docs%2Fusers_guide%2F6.10.1-notes.xml;h=bd3656c684d0d9cf4d0d2399ebb8a6532563b96e;hb=6ea06bbf08517d9805feb82df65cc56ecbaf23a4;hp=f005e4c1a08ca4c8a3022240a294b76d5bf69cec;hpb=6d07b348117cd42511e401276c959755d27d4c2a;p=ghc-hetmet.git
diff --git a/docs/users_guide/6.10.1-notes.xml b/docs/users_guide/6.10.1-notes.xml
index f005e4c..bd3656c 100644
--- a/docs/users_guide/6.10.1-notes.xml
+++ b/docs/users_guide/6.10.1-notes.xml
@@ -56,6 +56,47 @@
+ FFI change: header files are now not
+ used when compiling via C.
+ The flag,
+ the includes field
+ in .cabal files, and header files
+ specified in a foreign import
+ declaration all have no effect when compiling Haskell
+ source code.
+
+ This change has important ramifications if you are
+ calling FFI functions that are defined by macros (or renamed
+ by macros). If you need to call one of these functions,
+ then write a C wrapper for the function and call the wrapper
+ using the FFI instead. In this way, your code will work
+ with GHC 6.10.1, and will also work
+ with in older GHCs.
+
+ This change was made for several reasons.
+ Firstly, now behaves consistently
+ with , which is important because we
+ intend to stop compiling via C in the future. Also, we
+ don't need to worry about the interactions between header
+ files, or CPP options necessary to expose certain functions
+ from the system header files (this was becoming quite a
+ headache). We don't need to worry about needing header
+ files when inlining FFI calls across module or package
+ boundaries; calls can now be inlined freely. One downside
+ is that you don't get a warning from the C compiler when you
+ call a function via the FFI at the wrong type.
+
+
+ Another consequence of this change is that
+ calling varargs functions (such
+ as printf) via the FFI no longer works.
+ It has never been officially supported (the FFI spec outlaws
+ it), but in GHC 6.10.1 it may now really cause a crash on
+ certain platforms. Again, to call one of these functions
+ use appropriate fixed-argument C wrappers.
+
+
+
There is a new languages extension PackageImports which allows
imports to be qualified with the package they should come
from, e.g.
@@ -64,7 +105,10 @@
import "network" Network.Socket
- See for more details.
+ Note that this feature is not intended for general use, it
+ was added for constructing backwards-compatibility packages
+ such as the base-3.0.3.0 package. See
+ for more details.
@@ -77,30 +121,6 @@ import "network" Network.Socket
- When compiling with -fvia-C, we no longer
- use the C header files. Instead we rely on all the type
- information being given as part of the FFI import declaration.
- This makes it more consistent with -fasm.
-
-
- This means that, unlike -fasm,
- -fvia-C is no longer able to
- call varargs functions.
-
-
- Also, if you were using -fvia-C because
- your program didn't work with -fasm, then
- it probably won't work with -fvia-C either
- now.
-
-
- We recommend using -fasm (the default).
- We expect to remove the -fvia-C
- functionality in the 6.12 release.
-
-
-
-
GHC now treats the Unicode "Letter, Other" class as lowercase
letters. This is an arbitrary choice, but better than not
allowing them in identifiers at all. This may be revisited
@@ -576,8 +596,9 @@ Prelude>
- GHCi can now use libffi to make FFI calls, which means that
- it now works on all platforms that libffi supports.
+ GHCi now uses libffi to make FFI calls, which means that the
+ FFI now works in GHCi on a much wider range of platforms
+ (all those platforms that libffi supports).
@@ -585,27 +606,43 @@ Prelude>
Runtime system changes
-
+
- If the user presses control-C while running a Haskell program
- then the program gets an asynchronous UserInterrupt exception.
+ The garbage collector can now use multiple threads in parallel.
+ The new -gn RTS
+ flag controls it, e.g. run your program with
+ +RTS -g2 -RTS to use 2 threads.
+ The option is implied by the
+ usual option, so normally there will be
+ no need to specify it separately, although occasionally it
+ is useful to turn it off with .
+ Do let us know if you experience strange effects,
+ especially an increase in GC time when using the parallel GC
+ (use to measure GC time).
+ See for more details.
+
+
+
+ It is now possible to generate a heap profile without
+ recompiling your program for profiling. Run the program
+ with to generate a basic heap
+ profile, and use hp2ps as usual to
+ convert the heap profile into a .ps file
+ for viewing. See for more
+ details.
- We now ignore SIGPIPE by default.
+ If the user presses control-C while running a Haskell program
+ then the program gets an asynchronous UserInterrupt exception.
- The garbage collector can now use multiple threads in parallel.
- The new -gn RTS
- flag controls it, e.g. run your program with
- +RTS -g2 -RTS to use 2 threads.
- Don't use more threads than you have CPUs.
- Only major GCs are parallelised; minor GCs are still sequential.
+ We now ignore SIGPIPE by default.
@@ -663,6 +700,12 @@ Prelude>
+ ghc-pkg will refuse to unregister a package on which
+ other packages depend, unless
+ the option is also
+ supplied.
+
+
ghc-pkg now has a -no-user-package-conf
flag which instructs it to ignore the user's personal
@@ -768,6 +811,11 @@ Prelude>
+ The Show instance
+ for Ratio now puts spaces around
+ the %, as required by Haskell 98.
+
+
There is a new module Control.Category.
@@ -932,7 +980,7 @@ Prelude>
- Version number 1.6.0.0 (was 1.2.4.0)
+ Version number 1.6.0.1 (was 1.2.4.0)
@@ -982,7 +1030,7 @@ Prelude>
- This is a new bootlib, version 0.2.0.0.
+ This is a new bootlib, version 0.2.1.0.