GHC is more portable. The main change is a detailed set of instructions in the building guide for getting an unregisterised build of GHC up and running on a new architecture.
The policy regarding which files are created where has been cleaned up and documented better. See Section 4.6.
Some options which were previously static are now dynamic. Most notably, the optimisation options are now dynamic, which means that you can use -Onot or -funbox-strict-fields in an OPTIONS pragma.
New flag: -main-is, allows for specifying an alternative to Main.main for the function to call to start the program. See Section 4.10.7.
New command-line option -e for giving an expression on the command line to be evaluated. See Section 4.4.2.
New command-line option -fth to enable Template Haskell. Template Haskell is still enabled by -fgasgow-exts too.
New command-line option -fimplicit-params to enable Implicit Parameters. Implicit Parameters are still enabled by -fglasgow-exts too.
The following deprecated features have been removed: _ccall_, _casm_, ``...'' (literal-literals), the CCallable and CReturnable classes. These features have been obsoleted by the Foreign Function Interface for some time now.
The deprecated keyword with has been removed, along with the option -fwith that used to enable it.
Constructor fields may be unpacked on an individual basis using the UNPACK pragma (see Section 7.8.8). Previously, the only way to unpack constructor fields was to use the -funbox-strict-fields flag which causes all strict fields to be unpacked.
GHCi now uses a more liberal defaulting strategy at the expression prompt. See Section 3.4.4.
The I/O library now supports large files (>4Gb) if the underlying OS supports them.
Some changes to THSyntax for Template Haskell users.
Many changes to the Data.Generics library. The library now solidly implements the functionality described in "Scrap your boilerplate", and quite bit more besides.
Added System.posix.Temp.
System.Sendfile is gone.
Updated FFI libraries to match the spec. ForeignPtr: foreignPtrToPtr is now unsafeForeignPtrToPtr, and newForeignPtr_ has been added.
Also the argument order for newForeignPtr and addForeignPtrFinalizer have changed.
rawSystem has a new interface, and works more consistenty across platforms.
Various libraries have more comprehensive documentation.
System.IO: added openBinaryFile and hSetBinaryMode.
Numeric: showHex and showOct changed behaviour to match the report (drop the leading “0x” and “0o” respectively). Also, shoBin was removed.
Showing System.IO.Handle was previously an impure operation, because it displayed too much of the Handle's internal state. Now it is pure, showing only the filename that the Handle is associated with (if any).
System.IO.hShow was added, for converting a Handle to a String with more detail.
parsec and QuickCheck now have their own packages.
Data.Char: the character classification functions (isUpper, isLower, etc.) and the conversion functions (toUpper, toLower) now understand the full Unicode character set, at least on some platforms. On a glibc-based platform (eg. Linux), you need to set the environment variable LANG to something other than C. On Windows, these functions will work for Unicode characters up to 0xffff.
The Regex and MatchPS libraries in the text package have been removed. Please use Text.Regex instead.
The MD5 library in the util package has been removed. We'll include a replacement in the hierarchical libraries if someone would like to send us one!
System.IO: added hGetBufNonBlocking and hPutBufNonBlocking.
Data.FiniteMap: added foldFM_GE, fmToList_GE, keysFM_GE, eltsFM_GE.
Initial support for interop'ing with .NET via FFI declarations.
Initial support for arrows syntax. See Section 7.6.
Initial support for the x86-64 (or amd64) platform.
autoreconf is now required instead of autoconf to generate GHC's configure script. The configure setup has seen a great deal of cleanup thanks to work by Sven Panne.
Alex is now required to build GHC. GHC's old handwritten lexer has been replaced by one generated from an Alex specification.
New link options: -threaded, selects the threaded runtime system, and -debug selects a debug version of the runtime. See Section 4.10.7.