X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=docs%2Fusers_guide%2F6.10.1-notes.xml;h=bd3656c684d0d9cf4d0d2399ebb8a6532563b96e;hb=83d563cb9ede0ba792836e529b1e2929db926355;hp=fd261b3a5e2d5189711ac1451e69e39606156fff;hpb=db161a60f27ce4d39fc86bf626ca0f0fbb441606;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 fd261b3..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 @@ -739,5 +782,474 @@ Prelude> + + Boot Libraries + + + array + + + + Version number 0.2.0.0 (was 0.1.0.0) + + + + + + + base + + + + Version number 4.0.0.0 (was 3.0.2.0) + + + + + We also ship a base version 3.0.3.0, so legacy code should + continue to work. + + + + The Show instance + for Ratio now puts spaces around + the %, as required by Haskell 98. + + + + There is a new module Control.Category. + + + + + >>> is no longer a method of the + Arrow class; instead + Category is a superclass of + Arrow. + + + + + pure is no longer a method of the + Arrow class; use arr + instead. + + + + + Control.Exception now uses extensible + exceptions. The old style of exceptions are still available + in Control.OldException, but we expect to + remove them in a future release. + + + + + There is a new function + System.Exit.exitSuccess :: IO a + analogous to the existing + System.Exit.exitFailure :: IO a. + + + + + There are new functions + Data.Either.lefts :: [Either a b] -> [a], + Data.Either.rights :: [Either a b] -> [b] + and + + Data.Either.partitionEithers :: [Either a b] -> ([a], [b]) + . + + + + + The new function + Data.List.subsequences :: [a] -> [[a]] + gives all sublists of a list, e.g. + + subsequences "abc" == + ["","a","b","ab","c","ac","bc","abc"] + . + + + + + The new function + Data.List.permutations :: [a] -> [[a]] + gives all permutations of a list, e.g. + + permutations "abc" == + ["abc","bac","cba","bca","cab","acb"] + . + + + + + The new functions + Data.Traversable.mapAccumL and + Data.Traversable.mapAccumR generalise their + Data.List counterparts to work on any + Traversable type. + + + + + The new function + Control.Exception.blocked :: IO Bool + tells you whether or not exceptions are blocked (as controlled + by Control.Exception.(un)block). + + + + + There is a new function + traceShow :: Show a => a -> b -> b in + Debug.Trace. + + + + + The type of Control.Monad.forever has + been generalised from + Monad m => m a -> m () to + Monad m => m a -> m b. + + + + + The new value GHC.Exts.maxTupleSize + tells you the largest tuple size that can be used. This is + mostly of use in Template Haskell programs. + + + + + GHC.Exts now exports + Down(..), + groupWith, + sortWith and + the which are used in the desugaring of + generalised comprehensions. + + + + + GHC.Exts no longer exports the + Integer internals. If you want them then + you need to get them directly from the + new integer package. + + + + + The new function GHC.Conc.threadStatus + allows you to ask whether a thread is running, blocked on + an MVar, etc. + + + + + The Data.Generics hierarchy has been + moved to a new package syb. + + + + + The GHC.Prim and + GHC.PrimopWrappers modules have been + moved into a new ghc-prim package. + + + + + + + bytestring + + + + Version number 0.9.0.1.2 (was 0.9.0.1.1) + + + + + + + Cabal + + + + Version number 1.6.0.1 (was 1.2.4.0) + + + + + Many API changes. See the Cabal docs for more information. + + + + + + + containers + + + + Version number 0.2.0.0 (was 0.1.0.2) + + + + + Various result type now use Maybe rather + than allowing any Monad. + + + + + + + directory + + + + Version number 1.0.0.2 (was 1.0.0.1) + + + + + No longer defines the UNICODE CPP symbol for packages that + use it. + + + + + + + editline + + + + This is a new bootlib, version 0.2.1.0. + + + + + + + filepath + + + + Version number 1.1.0.1 (was 1.1.0.0) + + + + + + + ghc-prim + + + + This is a new bootlib, version 0.1.0.0. + + + + + + + haskell98 + + + + Version number 1.0.1.0 (unchanged) + + + + + + + hpc + + + + Version number 0.5.0.2 (was 0.5.0.1) + + + + + + + integer + + + + This is a new bootlib, version 0.1.0.0. + + + + + + + old-locale + + + + Version number 1.0.0.1 (was 1.0.0.0) + + + + + + + old-time + + + + Version number 1.0.0.1 (was 1.0.0.0) + + + + + + + packedstring + + + + Version number 0.1.0.1 (was 0.1.0.0) + + + + + + + pretty + + + + Version number 1.0.1.0 (was 1.0.0.0) + + + + + There is a new combinator + zeroWidthText :: String -> Doc + for printing things like ANSI escape sequences. + + + + + + + process + + + + Version number 1.0.1.0 (was 1.0.0.1) + + + + + The System.Process API has been overhauled. + The new API is a superset of the old API, however. + + + + + + + random + + + + Version number 1.0.0.1 (was 1.0.0.0) + + + + + + + readline + + + + This is no longer a bootlib; editline replaces it. + + + + + + + syb + + + + This is a new bootlib, version 0.1.0.0. + + + + + + + template-haskell + + + + Version number 2.3.0.0 (was 2.2.0.0) + + + + + The datatypes now have support for Word primitives. + + + + + currentModule :: Q String has been + replaced with + location :: Q Loc, where + Loc is a new datatype. + + + + + + + unix + + + + Version number 2.3.1.0 (was 2.3.0.1) + + + + + The System.Posix.Terminal.BaudRate type + now includes B57600 and + B115200 constructors. + + + + + + + Win32 + + + + Version number 2.2.0.0 (was 2.1.1.1) + + + + + No longer defines the UNICODE CPP symbol for packages that + use it. + + + + +