X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=docs%2Fusers_guide%2F6.10.1-notes.xml;h=bd3656c684d0d9cf4d0d2399ebb8a6532563b96e;hb=cc8e41a3c5e05a1076254ab39a56074e70f9e863;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.
+
+
+
+
+