From db161a60f27ce4d39fc86bf626ca0f0fbb441606 Mon Sep 17 00:00:00 2001 From: Ian Lynagh Date: Sat, 20 Sep 2008 11:48:57 +0000 Subject: [PATCH] Add release notes for the compiler --- docs/users_guide/6.10.1-notes.xml | 743 +++++++++++++++++++++++++++++++++++++ docs/users_guide/intro.xml | 2 +- docs/users_guide/ug-ent.xml | 2 +- 3 files changed, 745 insertions(+), 2 deletions(-) create mode 100644 docs/users_guide/6.10.1-notes.xml diff --git a/docs/users_guide/6.10.1-notes.xml b/docs/users_guide/6.10.1-notes.xml new file mode 100644 index 0000000..fd261b3 --- /dev/null +++ b/docs/users_guide/6.10.1-notes.xml @@ -0,0 +1,743 @@ + + + Release notes for version 6.10.1 + + + The significant changes to the various parts of the compiler are + listed in the following sections. + + + + User-visible compiler changes + + + + The new QuasiQuotes language extension adds + general quasi-quotation, as described in + "Nice to be Quoted: Quasiquoting for Haskell" + (Geoffrey Mainland, Haskell Workshop 2007). + See for more information. + + + + + The new ViewPatterns language extension allows + "view patterns". The syntax for view patterns + is expression -> pattern in a pattern. + For more information, see . + + + + + GHC already supported (e op) postfix operators, but this + support was enabled by default. Now you need to use the + PostfixOperators language extension if you want it. + See for more information + on postfix operators. + + + + + The new TransformListComp language extension enables + implements generalised list comprehensions, as described in + the paper "Comprehensive comprehensions" (Peyton Jones & + Wadler, Haskell Workshop 2007). + For more information see + . + + + + + If you want to use impredicative types then you now need to + enable the ImpredicativeTypes language extension. + See for more + information. + + + + + There is a new languages extension PackageImports which allows + imports to be qualified with the package they should come + from, e.g. + + +import "network" Network.Socket + + + See for more details. + + + + + In earlier versions of GHC, the recompilation checker didn't + notice changes in other packages meant that recompilation is + needed. This is now handled properly, using MD5 checksums of + the interface ABIs. + + + + + 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 + by Haskell'. + + + + + In addition to the DEPRECATED pragma, you + can now attach arbitrary warnings to declarations with the new + WARNING pragma. See + for more details. + + + + + If GHC is failing due to -Werror, then it + now emits a message telling you so. + + + + + GHC now warns about unrecognised pragmas, as they are often + caused by a typo. The + -fwarn-unrecognised-pragmas controls + whether this warning is emitted. + The warning is enabled by default. + + + + + There is a new flag + -fwarn-dodgy-foreign-imports which controls + a new warning about FFI delcarations of the form + + +foreign import "f" f :: FunPtr t + + + on the grounds that it is probably meant to be + + +foreign import "&f" f :: FunPtr t + + + The warning is enabled by default. + + + + + External core (output only) is working again. + + + + + There is a new flag -dsuppress-uniques that + makes GHC's intermediate core easier to read. This flag cannot + be used when actually generating code. + + + + + There is a new flag -dno-debug-output that + suppresses all of the debug information when running a + compiler built with the DEBUG option. + + + + + A bug in earlier versions of GHC meant that sections didn't + always need to be parenthesised, e.g. + (+ 1, 2) was accepted. This has now been + fixed. + + + + + The -fspec-threshold flag has been replaced + by -fspec-constr-threshold and + -fliberate-case-threshold flags. + The thresholds can be disabled by + -fno-spec-constr-threshold and + -fno-liberate-case-threshold. + + + + + The new flag -fsimplifier-phases + controls the number of simplifier phases run during + optimisation. These are numbered from n to 1 (by default, n=2). + Phase 0 is always run regardless of this flag. + + + + + Simplifier phases can have an arbitrary number of tags + assigned to them, and multiple phases can share the same tags. + The tags can be used as arguments to the new flag + -ddump-simpl-phases + to specify which phases are to be dumped. + + + + For example, + -ddump-simpl-phases=main will dump the + output of phases 2, 1 and 0 of the initial simplifier run + (they all share the "main" tag) while + -ddump-simpl-phases=main:0 + will dump only the output of phase 0 of that run. + + + + At the moment, the supported tags are + main (the main, staged simplifier run (before strictness)), + post-worker-wrapper (after the w/w split), + post-liberate-case (after LiberateCase), and + final (final clean-up run) + + + + The names are somewhat arbitrary and will change in the future. + + + + + The -fno-method-sharing flag is now + dynamic (it used to be static). + + + + + + + Deprecated flags + + + + + The new flag -fwarn-deprecated-flags, + controls whether we warn about deprecated flags and language + extensions. The warning is on by default. + + + + + The following language extensions are now marked as + deprecated; expect them to be removed in a future release: + + + + + RecordPuns + (use NamedFieldPuns instead) + + + + + PatternSignatures + (use ScopedTypeVariables instead) + + + + + + + The following flags are now marked as deprecated; + expect them to be removed in a future release: + + + + + -Onot + (use -O0 instead) + + + + + -Wnot + (use -w instead) + + + + + -frewrite-rules + (use -fenable-rewrite-rules instead) + + + + + -no-link + (use -c instead) + + + + + -recomp + (use -fno-force-recomp instead) + + + + + -no-recomp + (use -fforce-recomp instead) + + + + + -syslib + (use -package instead) + + + + + -fth + (use the TemplateHaskell language + extension instead) + + + + + -ffi, -fffi + (use the ForeignFunctionInterface + extension instead) + + + + + -farrows + (use the Arrows language + extension instead) + + + + + -fgenerics + (use the Generics language + extension instead) + + + + + -fno-implicit-prelude + (use the NoImplicitPrelude language + extension instead) + + + + + -fbang-patterns + (use the BangPatterns language + extension instead) + + + + + -fno-monomorphism-restriction + (use the NoMonomorphismRestriction language + extension instead) + + + + + -fmono-pat-binds + (use the MonoPatBinds language + extension instead) + + + + + -fextended-default-rules + (use the ExtendedDefaultRules language + extension instead) + + + + + -fimplicit-params + (use the ImplicitParams language + extension instead) + + + + + -fscoped-type-variables + (use the ScopedTypeVariables language + extension instead) + + + + + -fparr + (use the PArr language + extension instead) + + + + + -fallow-overlapping-instances + (use the OverlappingInstances language + extension instead) + + + + + -fallow-undecidable-instances + (use the UndecidableInstances language + extension instead) + + + + + -fallow-incoherent-instances + (use the IncoherentInstances language + extension instead) + + + + + -optdep-s + (use -dep-suffix instead) + + + + + -optdep-f + (use -dep-makefile instead) + + + + + -optdep-w + (has no effect) + + + + + -optdep--include-prelude + (use -include-pkg-deps instead) + + + + + -optdep--include-pkg-deps + (use -include-pkg-deps instead) + + + + + -optdep--exclude-module + (use -exclude-module instead) + + + + + -optdep-x + (use -exclude-module instead) + + + + + + + The following flags have been removed: + + + + + -no-link-chk + (has been a no-op since at least 6.0) + + + + + -fruntime-types + (has not been used for years) + + + + + -fhardwire-lib-paths + (use -dynload sysdep) + + + + + + + The -unreg flag, which was used to build + unregisterised code with a registerised compiler, has been + removed. Now you need to build an unregisterised compiler + if you want to build unregisterised code. + + + + + + + GHC API changes + + + + + There is now a Ghc Monad used to carry around GHC's + Session data. This Monad also provides exception handling + functions. + + + + + It is now possible to get the raw characters corresponding to + each token the lexer outputs, and thus to reconstruct the + original file. + + + + + GHCi implicitly brings all exposed modules into scope with + qualified module names. There is a new flag + -fimplicit-import-qualified + that controls this behaviour, so other GHC API clients can + specify whether or not they want it. + + + + + There is now haddock documentation for much of the GHC API. + + + + + + + GHCi changes + + + + + You can now force GHCi to interpret a module, rather than + loading its compiled code, by prepending a * character to its + name, e.g. + + +Prelude> :load *A +Compiling A ( A.hs, interpreted ) +*A> + + + + + By default, GHCi will not print bind results, e.g. + + +Prelude> c <- return 'c' +Prelude> + + + does not print 'c'. Use + -fprint-bind-result if you want the old + behaviour. + + + + + GHCi now uses editline, rather than readline, for input. + This shouldn't affect its behaviour. + + + + + The GHCi prompt history is now saved in + ~/.ghc/ghci_history. + + + + + GHCi can now use libffi to make FFI calls, which means that + it now works on all platforms that libffi supports. + + + + + + + Runtime system changes + + + + + If the user presses control-C while running a Haskell program + then the program gets an asynchronous UserInterrupt exception. + + + + + We now ignore SIGPIPE by default. + + + + + 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. + + + + + The -S and -s RTS flags + now send their output to stderr, rather than + prog.stat, + by default. + + + + + The new -vg RTS flag provides some RTS trace + messages even in the non-debug RTS variants. + + + + + + + runghc + + + + + runghc now uses the compiler that it came with to run the + code, rather than the first compiler that it finds on the + PATH. + + + + + If the program to run does not have a .lhs + extension then runghc now treats it as a .hs + file. In particular, this means that programs without an + extension now work. + + + + + runghc foo will now work if + foo.hs or foo.lhs exists. + + + + + runghc can now take the code to run from stdin. + + + + + + + ghc-pkg + + + + + ghc-pkg now has a -no-user-package-conf + flag which instructs it to ignore the user's personal + package.conf. + + + + + ghc-pkg no longer allows you to register two packages that + differ in case only. + + + + + ghc-pkg no longer allows you to register packages which have + unversioned dependencies. + + + + + There is a new command dump which is + similar to describe '*', but in a format + that is designed to be parsable by other tools. + + + + + + + Haddock + + + + + Haddock 2 now comes with GHC. + + + + + + + DPH changes + + + + + DPH is now an extralib. + + + + + There is a new flag -Odph that sets the + flags recommended when using DPH. Currently it is equivalent + to + + -O2 -fno-method-sharing -fdicts-cheap + -fmax-simplifier-iterations20 -fno-spec-constr-threshold + + + + + + There are now flags -fdph-seq and + -fdph-par for selecting which DPH backend + to use. + + + + + The -fflatten flag has been removed. It + never worked and has now been superceded by vectorisation. + + + + + + + diff --git a/docs/users_guide/intro.xml b/docs/users_guide/intro.xml index 25ead9e..dce6ec4 100644 --- a/docs/users_guide/intro.xml +++ b/docs/users_guide/intro.xml @@ -295,7 +295,7 @@ -&relnotes; +&relnotes1; diff --git a/docs/users_guide/ug-ent.xml b/docs/users_guide/ug-ent.xml index d5614e8..d0903ff 100644 --- a/docs/users_guide/ug-ent.xml +++ b/docs/users_guide/ug-ent.xml @@ -3,7 +3,7 @@ - + -- 1.7.10.4