From: Simon Marlow Date: Tue, 7 Oct 2008 15:16:47 +0000 (+0000) Subject: various updates to the release notes X-Git-Url: http://git.megacz.com/?p=ghc-hetmet.git;a=commitdiff_plain;h=6a81723bd5a74696d9de5104a395a1314d477b25 various updates to the release notes --- diff --git a/docs/users_guide/6.10.1-notes.xml b/docs/users_guide/6.10.1-notes.xml index f005e4c..442618f 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.