darcs patch: Improve the user guide section on shared libs

Duncan Coutts duncan at well-typed.com
Tue Sep 8 15:01:53 EDT 2009


Sadly doing something like the following will give us linker errors, but
it's not clear currently from the user guide that this should be so. The
attached patch tries to improve the relevant section of the user guide
to stop people falling into this trap.

$ ghc -dynamic -fPIC -c Foo.hs
$ ghc -dynamic -shared Foo.o -o libfoo.so
$ ghc -dynamic Main.hs libfoo.so

The problem is that ghc expects that modules Main and Foo are in the
same DSO, so it makes optimised intra-DSO calls. Of course in the
situation above the two modules have been put into different DSOs so it
does not work. GHC only expects different packages to be in different
DSOs.

It's not immediately obvious if we could also add some extra checks so
that we get better error messages than linker errors. It's seems closely
related to the problem of tracking which packages are needed by compiled
code (the one where you do "ghc Foo.hs" without --make but use packages
beyond base).


Tue Sep  8 19:32:41 BST 2009  Duncan Coutts <duncan at well-typed.com>
  * Improve the user guide section on shared libs
  Make it clear that Haskell code to be used by other Haskell code
  must be built as a package.

    M ./docs/users_guide/shared_libs.xml -31 +68


-- 
Duncan Coutts, Haskell Consultant
Well-Typed LLP, http://www.well-typed.com/
-------------- next part --------------
Tue Sep  8 19:32:41 BST 2009  Duncan Coutts <duncan at well-typed.com>
  * Improve the user guide section on shared libs
  Make it clear that Haskell code to be used by other Haskell code
  must be built as a package.

New patches:

[Improve the user guide section on shared libs
Duncan Coutts <duncan at well-typed.com>**20090908183241
 Ignore-this: ee48f925b9e5441be0fb004b774613cd
 Make it clear that Haskell code to be used by other Haskell code
 must be built as a package.
] {
hunk ./docs/users_guide/shared_libs.xml 71
   </sect2>
 
   <sect2>
-    <title>Building shared libraries</title>
+    <title>Shared libraries for Haskell packages</title>
+    <para>
+      You can build Haskell code into a shared library and make a package to be
+      used by other Haskell programs. The easiest way is using Cabal, simply
+      configure the Cabal package with the <literal>--enable-shared</literal>
+      flag.
+    </para>
+    <para>
+      If you want to do the steps manually or are writing your own build
+      system then there are certain conventions that must be followed. Building
+      a shared library that exports Haskell code, to be used by other Haskell
+      code is a bit more complicated than it is for one that exports a C API
+      and will be used by C code. If you get it wrong you will usually end up
+      with linker errors.
+    </para>
+    <para>
+      In particular Haskell shared libraries <emphasis>must</emphasis> be
+      made into packages. You cannot freely assign which modules go in which
+      shared libraries. The Haskell shared libraries must match the package
+      boundaries. Most of the conventions GHC expects when using packages are
+      described in <xref linkend="building-packages"/>.
+    </para>
     <para>
hunk ./docs/users_guide/shared_libs.xml 94
-      To build some Haskell modules into a shared library use the
+      GHC handles references to symbols <emphasis>within</emphasis> the same
+      shared library (or main executable binary) differently from references
+      to symbols <emphasis>between</emphasis> different shared libraries. GHC
+      needs to know for each imported module if that module lives locally in
+      the same shared lib or in a separate shared lib. The way it does this
+      is by using packages. When using <literal>-dynamic</literal>, a module
+      from a separate package is assumed to come from a separate shared lib,
+      while modules from the same package (or the default "main" package) are
+      assumed to be within the same shared lib (or main executable binary).
+   </para>
+    <para>
+      Most of the conventions GHC expects when using packages are described
+      in <xref linkend="building-packages"/>. In addition note that GHC
+      expects the <literal>.hi</literal> files to use the extension
+      <literal>.dyn_hi</literal>. The other requirements are the same as for
+      C libraries and are described below, in particular the use of the flags
       <literal>-dynamic</literal>, <literal>-fPIC</literal> and
hunk ./docs/users_guide/shared_libs.xml 111
+      <literal>-shared</literal>.
+    </para>
+  </sect2>
+
+  <sect2>
+    <title>Shared libraries that export a C API</title>
+    <para>
+      Building Haskell code into a shared library is a good way to include
+      Haskell code in a larger mixed-language project. While with static
+      linking it is recommended to use GHC to perform the final link step,
+      with shared libaries a Haskell library can be treated just like any
+      other shared libary. The linking can be done using the normal system C
+      compiler or linker.
+    </para>
+    <para>
+      It is possible to load shared libraries generated by GHC in other
+      programs not written in Haskell, so they are suitable for using as
+      plugins. Of course to construct a plugin you will have to use the FFI
+      to export C functions and follow the rules about initialising the RTS.
+      See <xref linkend="ffi-library"/>. In particular you will probably want
+      to export a C function from your shared library to initialise the
+      plugin before any Haskell functions are called.
+    </para>
+    <para>
+      To build Haskell modules that export a C API into a shared library use
+      the <literal>-dynamic</literal>, <literal>-fPIC</literal> and
       <literal>-shared</literal> flags:
 <programlisting>
 ghc --make -dynamic -shared -fPIC Foo.hs -o libfoo.so
hunk ./docs/users_guide/shared_libs.xml 163
       suitable to include into a shared library and we do not do that at the
       moment.
     </para>
-  </sect2>
-
-  <sect2>
-    <title>Shared libraries that export a C API</title>
-    <para>
-      Building Haskell code into a shared library is a good way to include
-      Haskell code in a larger mixed-language project. While with static
-      linking it is recommended to use GHC to perform the final link step,
-      with shared libaries a Haskell library can be treated just like any
-      other shared libary. The linking can be done using the normal system C
-      compiler or linker.
-    </para>
     <para>
hunk ./docs/users_guide/shared_libs.xml 164
-      It is possible to load shared libraries generated by GHC in other
-      programs not written in Haskell, so they are suitable for using as
-      plugins. Of course to construct a plugin you will have to use the FFI
-      to export C functions and follow the rules about initialising the RTS.
-      See <xref linkend="ffi-library"/>. In particular you will probably want
-      to export a C function from your shared library to initialise the
-      plugin before any Haskell functions are called.
+      <emphasis>Warning:</emphasis> if your shared library exports a Haskell
+      API then you cannot directly link it into another Haskell program and
+      use that Haskell API. You will get linker errors. You must instead make
+      it into a package as described in the section above.
     </para>
   </sect2>
 
hunk ./docs/users_guide/shared_libs.xml 171
-  <sect2>
-    <title>Shared libraries for Haskell packages</title>
-    <para>
-      When building Haskell packages as shared libraries to be used by other
-      Haskell programs there are certain conventions that must be followed.
-      These are handled by Cabal but for the details see <xref
-      linkend="building-packages"/>.
-   </para>
-  </sect2>
-
   <sect2 id="finding-shared-libs">
     <title>Finding shared libraries at runtime</title>
     <para>
}

Context:

[Fix Trac #3403: interaction of CPR and pattern-match failure
simonpj at microsoft.com**20090908131400
 Ignore-this: 38bbb145cdc2c814a45122144ef84a4d
 
 A fine bug report (#3403) demonstrated that we were losing the tail
 call property when a complicated pattern match was involved.  After
 a bit of investigation I discovered that the culprit was the failure
 join-point introduced by the pattern matcher.  It was a zero-argument
 thunk, which is not very CPR-friendly, and that interacted badly with
 CPR worker/wrapper.
 
 It's easy to fix, the same way that we fix other join points, by supplying
 a dummy argument (that is not really passed at runtime.
 
] 
[Fix Trac #3468: improve checking for hs-boot interfaces
simonpj at microsoft.com**20090908130350
 Ignore-this: df9e84e963b1c69328e020772a481f5e
 
 When checking the interface exported by a hs-boot file against the
 Real Thing, I'd failed to check the kind of a type constructor.  If you
 get it wrong, the inconsistency leads to all manner of mischief, as 
 'wkahl' reports in #3468.
 
 This patch should do the job.
 
] 
[Allow TH/annotations to be used with -dynamic
Simon Marlow <marlowsd at gmail.com>**20090908101644
 Ignore-this: ba9e132a946e1f7cd56775d4237405f0
] 
[Fix warnings on 64-bit platforms; fixes validate on x86-64
Simon Marlow <marlowsd at gmail.com>**20090908092639
 Ignore-this: 6bf1d21759aa5ac43807f010c9a9908f
] 
[fix -u flags (after changes for #3310)
Simon Marlow <marlowsd at gmail.com>**20090903072318
 Ignore-this: 518e20973adf1136caf866770f5980ed
] 
[Unify event logging and debug tracing.
Simon Marlow <marlowsd at gmail.com>**20090829094727
 Ignore-this: c137a22fb32a7a5b50fe6906b464344e
 
   - tracing facilities are now enabled with -DTRACING, and -DDEBUG
     additionally enables debug-tracing.  -DEVENTLOG has been
     removed.
 
   - -debug now implies -eventlog
 
   - events can be printed to stderr instead of being sent to the
     binary .eventlog file by adding +RTS -v (which is implied by the
     +RTS -Dx options).
 
   - -Dx debug messages can be sent to the binary .eventlog file
     by adding +RTS -l.  This should help debugging by reducing
     the impact of debug tracing on execution time.
 
   - Various debug messages that duplicated the information in events
     have been removed.
] 
[waitForReturnCapability: fix logic bug
Simon Marlow <marlowsd at gmail.com>**20090831064908
 Ignore-this: 9a9efaee2ab33fc26a04d075f93424b1
 The check for whether a Capability was free was inverted, which harmed
 performance for callbacks.
] 
[Handle renames from #3310
Simon Marlow <marlowsd at gmail.com>**20090830153123
 Ignore-this: 7973f406c726dab27e28b2145dac81dc
 
 Also add a panic for resurrecting a thread blocked on an exception,
 since it should never happen.
] 
[add RTS_PRIVATE attribute
Simon Marlow <marlowsd at gmail.com>**20090829171752
 Ignore-this: 5566c6ecdd4f40c10c4d996856c39113
] 
[Fix incorrectly hidden RTS symbols
Simon Marlow <marlowsd at gmail.com>**20090829132814
 Ignore-this: 6ec9d80873930cfaf05e4ffccce498f6
] 
[Maintain Task/Capability invariants in performPendingThrowTos
Simon Marlow <marlowsd at gmail.com>**20090829092607
 Ignore-this: f33aa00f326155172c30906c7db9ec5b
 Fixes an ASSERTION failure with concprog001, -threaded -debug, +RTS -N2
] 
[Declare RTS-private prototypes with __attribute__((visibility("hidden")))
Simon Marlow <marlowsd at gmail.com>**20090805102159
 Ignore-this: 7e298c7ecbc1216502463fa05a984d3b
 This has no effect with static libraries, but when the RTS is in a
 shared library it does two things:
 
  - it prevents the function from being exposed by the shared library
 
  - internal calls to the function can use the faster non-PLT calls,
    because the function cannot be overriden at link time.
] 
[Configurable iconv header and library locations
Matthias Kilian <kili at outback.escape.de>**20090826155913
 Ignore-this: f3ef2490c61fea6f1cfff648422b919b
 Should help to fix the build on OpenBSD (together with a corresponding
 patch to libraries/base).
] 
[Use -W, not -Werror, for gcc older than 3.4
Matthias Kilian <kili at outback.escape.de>**20090826210044
 Ignore-this: d2fdfef7c2915f58ebe716986847a22d
] 
[Don't mess up absolute INCLUDE_DIRS
Matthias Kilian <kili at outback.escape.de>**20090826153340
 Ignore-this: 3b8c2cceee0bcf9397fb803991ce27ab
 When there are some absolute include dirs, don't create arguments
 like -Ilibraries/base//usr/local/include.
 
 I need this fix for injecting the iconv include dir (which is
 /usr/local/include on OpenBSD) into the build of libraries/base.
] 
[Fix #3461: protect the use of keepCAFs with #ifdef DYNAMIC
Simon Marlow <marlowsd at gmail.com>**20090828125802
 Ignore-this: 96e2dd803e548ec080d701791eab06c
] 
[fix 'darcs-all rec' (amongst other things)
Simon Marlow <marlowsd at gmail.com>**20090827141554
 Ignore-this: fb91b85e37c9be9d153f381c27d9d37c
] 
[REDO: Add -r option to darcs-all, and remove push-all (#3375)
Simon Marlow <marlowsd at gmail.com>**20090827135717
 Ignore-this: 270dbe385afb807c32eaa4b02a3f7d7
 
 rolling back:
 
 Mon Aug  3 11:44:13 BST 2009  Simon Marlow <marlowsd at gmail.com>
   UNDO: Add -r option to darcs-all, and remove push-all (#3375)
   Contributed by: seliopou at gmail.com
       
   This patch modifies darcs-all to have feature parity with push-all by
   recognizing two new options.
   
       * -i, equivalent to --ignore-failure in push-all
       * -r <repo>, specifies the remote repository darcs commands will use
   
   Some example commands:
   
   Get the libraries from a repository of your choosing. This is useful
   when working with a git mirror:
   
       $ ./darcs-all -r http://darcs.haskell.org get
   
   Pull changes. Used to be:
   
       $ ./push-all --pull http://darcs.haskell.org
   
   Is now:
   
       $ ./darcs-all -r http://darcs.haskell.org pull
   
   Or to use the default remote of the ghc repository:
   
       $ ./darcs-all pull
 
     M ./darcs-all -79 +33
     A ./push-all
] 
[Add a link to hp2any from the profiling section.
Simon Marlow <marlowsd at gmail.com>**20090827114050
 Ignore-this: 998f316811cacaa3a9ee6a25aae99e80
] 
[Fix "make install"
Ian Lynagh <igloo at earth.li>**20090826155638
 We need to change a dependency on
     pkg-inplace
 to
     pkg-$abihash
 when installing
] 
["ghc-cabal install" now needs to know where GHC is, to get the ABI hash
Ian Lynagh <igloo at earth.li>**20090826133359] 
[Fix bindist creation
Ian Lynagh <igloo at earth.li>**20090826122953
 We were running into problems like:
     for f in  LICENSE configure config.sub config.guess [...]
     make[2]: execvp: /bin/sh: Argument list too long
 This patch moves the loop into make, rather than the shell.
] 
[UNDO: fix the inplace runghc (it broke the installed runghc)
Simon Marlow <marlowsd at gmail.com>**20090826104937
 Ignore-this: 4a9639a93dbe37d81baafcec0029cdcb
] 
[Fix part of #3398: pretty-printing always goes via the I/O library encoding
Simon Marlow <marlowsd at gmail.com>**20090826104052
 Ignore-this: 7ce68105539ff38f4853de149a43a1a3
 That is, unless we're printing in LeftMode, where we bypass encoding
 for speed.  This is safe, because LeftMode is used for outputting C or
 asm, where everyting is Z-encoded and hence ASCII.
 
 Error messages and other compiler output containing Unicode will now
 appear correctly according to the locale settings.
] 
[Tidy up file headers and copyrights; point to the wiki for docs
Simon Marlow <marlowsd at gmail.com>**20090825095047
 Ignore-this: d34994b9910fd24ff7498102d2a12648
 
 I've updated the wiki page about the RTS headers
   http://hackage.haskell.org/trac/ghc/wiki/Commentary/SourceTree/Includes
 to reflect the new layout and explain some of the rationale.  All the
 header files now point to this page.
] 
[Follow changes in Cabal: package -> sourcePackageId
Simon Marlow <marlowsd at gmail.com>**20090824160020
 Ignore-this: c1f9d41c2ed75cf47842fa04c4b2fac5
] 
[fix an unused-import warning
Simon Marlow <marlowsd at gmail.com>**20090824153657
 Ignore-this: 35e87617fc289237cfa12133ee9d5dca
] 
[Add unique package identifiers (InstalledPackageId) in the package DB
Simon Marlow <marlowsd at gmail.com>**20090820110920
 Ignore-this: 5e09becc51e6888ec5186811e7e33d46
 See commentary at
 http://hackage.haskell.org/trac/ghc/wiki/Commentary/Packages
] 
[Move the standalone-deriving flag test from parser to renamer
simonpj at microsoft.com**20090825073324
 Ignore-this: 10e3760c5443fc88b0f498ad0a2595ae
 
 This is just a tiny refactoring.  In general, we're trying to
 get rid of parser errors in favour of later, more civlised, errors.
 
] 
[Error message wibble
simonpj at microsoft.com**20090825073259
 Ignore-this: 85257158393634c41057a0849d95490f
] 
[Fix Trac #3406 (albeit not very satisfactorily): scoped type variables
simonpj at microsoft.com**20090825073059
 Ignore-this: 1509e0565ccd4b6708ac4cf4b2eb451e
 
 The issue here is this:
 
   type ItemColID a b = Int  -- Discards a,b
 
   get :: ItemColID a b -> a -> ItemColID a b
   get (x :: ItemColID a b) = x :: ItemColID a b
 
 The pattern signature for 'x' doesn't actually rigidly bind a,b.
 This crashed GHC 6.10 with a 'readFilledBox' panic.  Now we fail
 with an erroe message
 
 With the new outside-in algorithm we'll be able to accept this program.
 
] 
[Make FastString thread-safe.
Thomas Schilling <nominolo at googlemail.com>**20090824182252
   
 This is needed both for per-session parallelism and for allowing
 multiple concurrent sessions in the same process.  With the help of
 atomicModifyIORef and unsafePerformIO it is also quite fast--an MVar
 would most likely be slower.  On a full compilation of Cabal's head
 branch it was about 1-2 percent slower, but then overall compilation
 times varied by about 4 percent, so I think it's worth it.
] 
[Improve docs on -XFlexibleContexts
simonpj at microsoft.com**20090824113722
 Ignore-this: 16c4b05f52bca250ae6eff59feb08cc4
] 
[fix do-notation warnings
Simon Marlow <marlowsd at gmail.com>**20090824080400
 Ignore-this: 74e0b085478ec858ce56cc925749e0ea
] 
[Use explicit Word32/Int32 in place of Int in the on-disk .hi file
Simon Marlow <marlowsd at gmail.com>**20090821155028
 Ignore-this: e48ea5045f9460c347d457ada0e2b0da
 For: FastStrings, Names, and Bin values.  This makes .hi files smaller
 on 64-bit platforms, while also making the format a bit more robust.
] 
[Fix the interface-file incompatibility crash (#3435)
Simon Marlow <marlowsd at gmail.com>**20090821154737
 Ignore-this: 5b7b9aca621fd378a7f911c50429c100
 
 We now have a dummy 32/64-bit field near the beginning of a .hi file
 for backward-compatibility reasons; see comments (Note [dummy iface
 field]) in BinIface.hs.
] 
[trim Data.Sequence import, in preparation for expanding its API
Ross Paterson <ross at soi.city.ac.uk>**20090824080533
 Ignore-this: 97f8c3e309c14a132f20c565d33d46a9
] 
[Remove bitrotted IA64 code in Linker.c
Ian Lynagh <igloo at earth.li>**20090823151600
 It breaks the unregisterised build on IA64.
] 
[Make consIORef atomic.
Thomas Schilling <nominolo at googlemail.com>**20090822230937
 Ignore-this: c4570e17a21be724b45c574bd25d0330
] 
[Make updates to external package state idempotent.
Thomas Schilling <nominolo at googlemail.com>**20090821235355
 
 Without this, concurrent updates to the EPS could introduce
 overlapping instances (even though they came from the same module).
] 
[Fix Trac #3423: missed instantiation for newtype-derived instances
simonpj at microsoft.com**20090821210700
 Ignore-this: 73fa66b45a9affe5b4e0276551e5861f
 
 Somehow I'd forgotten to instantiate the coercion that is stored in a
 'NewtypeDerived' constructor in an InstInfo.  The necessary code is
 in TcInstDcls.tc_inst_decl2.
 
 The result was ghc: panic! (the 'impossible' happened)
    (GHC version 6.10.3 for x86_64-unknown-linux):
    No match in record selector Var.tcTyVarDetails
 because we were looking at an (uninstantiated) TyVar instead of
 an (instantiated) TcTyVar.
 
] 
[Put "dl" back in rts/package.conf if HAVE_DL is defined
Ian Lynagh <igloo at earth.li>**20090821145423
 Fixes linking with -dynamic
] 
[Link CMM objects into dynamic libraries
Ian Lynagh <igloo at earth.li>**20090821132809
 This fixes linking hello world with -dynamic. I've also added some more
 variables, so there is less duplication between the different ways of
 linking.
] 
[-fPIC -fvia-C issues a warning and ignores -fvia-C
Simon Marlow <marlowsd at gmail.com>**20090821144544
 Ignore-this: 2ba1902cf7eec7f149f38cadeac8c245
 Also, -fPIC causes an error if the target is registerised and has no
 native code generator.
] 
[Use allocateLocal() rather than allocate() in the interpreter
Simon Marlow <marlowsd at gmail.com>**20090820152325
 Ignore-this: 42cc9250f46d95a945394b82acc76be4
 This gives about a 15% performance boost in GHCi for me.  nice!
] 
[Another tiny tidy-up to RnPat
simonpj at microsoft.com**20090821100826
 Ignore-this: 4290aab233ee1b0fcd3768009950a213
] 
[Fix Trac #3437: strictness of specialised functions
simonpj at microsoft.com**20090821095251
 Ignore-this: 24345ff251a517e540a9666a78ed8176
 
 'lilac' helpful pin-pointed a space leak that was due to a specialised
 function being insufficiently strict.  Here's the new comment in SpecConstr:
 
 Note [Transfer strictness]
 ~~~~~~~~~~~~~~~~~~~~~~~~~~
 We must transfer strictness information from the original function to
 the specialised one.  Suppose, for example
 
   f has strictness     SS
         and a RULE     f (a:as) b = f_spec a as b
 
 Now we want f_spec to have strictess  LLS, otherwise we'll use call-by-need
 when calling f_spec instead of call-by-value.  And that can result in 
 unbounded worsening in space (cf the classic foldl vs foldl')
 
 See Trac #3437 for a good example.
 
 The function calcSpecStrictness performs the calculation.
 
 
] 
[Wibbles to field-label puns
simonpj at microsoft.com**20090821090637
 Ignore-this: ed6dc679b906b2a928e1b9a6db590108
] 
[Fix library installation; fixes #3374
Ian Lynagh <igloo at earth.li>**20090820173707
 When configuring packages, enable library profiling and shared libraries
 based on the ways in GhcLibWays.
] 
[Escape some $s in makefiles for consistency
Ian Lynagh <igloo at earth.li>**20090820165033] 
[Wibble to RnPat refactoring
simonpj at microsoft.com**20090820161520
 Ignore-this: 77c328334e088113afb25275f0aca364
] 
[Rollback: use cas() to claim the closure in copyPart(), to match copy_tag()
Simon Marlow <marlowsd at gmail.com>**20090820155833
 Ignore-this: e62da4d667c15c0dafb2660f4b915b36
 
 rolling back:
 
   * use cas() to claim the closure in copyPart(), to match copy_tag()
   * rename whitehole_spin to evac_collision, and update it properly
 
 This introduced a new failure in parallel GC.  I'll rollback for now
 until I've fixed it.
] 
[Relax the assumption that all objects fit in a single block (#3424)
Simon Marlow <marlowsd at gmail.com>**20090820144308
 Ignore-this: 44ec5ed31491241b6f03182c80c0681e
 
 It is possible for the program to allocate single object larger than a
 block, without going through the normal large-object mechanisms that
 we have for arrays and threads and so on.  
 
 The GC was assuming that no object was larger than a block, but #3424
 contains a program that breaks the assumption.  This patch removes the
 assumption.  The objects in question will still be copied, that is
 they don't get the normal large-object treatment, but this case is
 unlikely to occur often in practice.
 
 In the future we may improve things by generating code to allocate
 them as large objects in the first place.
] 
[remove a bogus assertion
Simon Marlow <marlowsd at gmail.com>**20090820143305
 Ignore-this: 1b58b8a73d58257630832d37475795bb
] 
[Restore the GHC version check
Simon Marlow <marlowsd at gmail.com>**20090820134234
 Ignore-this: a1a0640e985a9eaf78804465276aadcd
 I'm not sure what happened here, but the ordering of tests was messed
 up, with the result that the GHC version check was being omitted.
] 
[fix the inplace runghc
Simon Marlow <marlowsd at gmail.com>**20090820122538
 Ignore-this: 54be86fcd9ff96b5a37e77f64bf3c1d9
 
 It was invoking $(TOP)/inplace/bin/ghc rather than
 $(TOP)/inplace/bin/ghc-stage2
] 
[Add a case for IND (and a comment).  Fixes #3424, perhaps only partially.
Simon Marlow <marlowsd at gmail.com>**20090820131537
 Ignore-this: 75287786343359fdceb0691f88cb4f5f
] 
[Improvements to record puns, wildcards
simonpj at microsoft.com**20090820123443
 Ignore-this: 2ac26fcc045853dab346280bcc440431
 
 * Make C { A.a } work with punning, expanding to C { A.a = a }
 
 * Make it so that, with -fwarn-unused-matches, 
         f (C {..}) = x
   does not complain about the bindings introduced by the "..".
 
 * Make -XRecordWildCards implies -XDisambiguateRecordFields.
 
 * Overall refactoring of RnPat, which had become very crufty. 
   In particular, there is now a monad, CpsRn, private to RnPat,
   which deals with the cps-style plumbing.  This is why so many
   lines of RnPat have changed.
 
 * Refactor the treatment of renaming of record fields into two passes
 	- rnHsRecFields1, used both for patterns and expressions,
 	     which expands puns, wild-cards
   	- a local renamer in RnPat for fields in patterns
 	- a local renamer in RnExpr for fields in construction and update
   This make it all MUCH easier to understand
  
 * Improve documentation of record puns, wildcards, and disambiguation
 
] 
[Make -dppr-debug print locations in HsSyn
simonpj at microsoft.com**20090820123245
 Ignore-this: 673f8100c2744e58635e75e6cf585ce5
 
 Show SrcSpans for Located things might be overkill, but it's sometimes
 useful.
 
 I also added
   ppWhen, ppUnless :: Bool -> SDoc -> SDoc
 to Outputable
 
] 
[Make -dynamic a proper way, so we read the .dyn_hi files
Simon Marlow <marlowsd at gmail.com>**20090820121208
 Ignore-this: 252d2091ff90041e055efd0d62ebe185
 Also, I cleaned up some of the way-related infrastructure, removing
 two global variables.  
 
 There's more that could be done here, but it's a start.  The way flags
 probably don't need to be static any more.
] 
[fix warning
Simon Marlow <marlowsd at gmail.com>**20090820110532
 Ignore-this: ce16d3661b6bc2f0d382f9025c007019
] 
[generalise the type of "on"
Simon Marlow <marlowsd at gmail.com>**20090820094516
 Ignore-this: 5b789c36663accb7284c26b1bd7e019d
] 
[need to check $(HADDOCK_DOCS) around contents/index generation
Simon Marlow <marlowsd at gmail.com>**20090820092220
 Ignore-this: ef5352164fd6aac41ba3a1542182d213
] 
[WAY_dyn_LIB_TARGET is not used anywhere; kill it
Simon Marlow <marlowsd at gmail.com>**20090819155952
 Ignore-this: 36b784db6d85acc2374e781fcd77d10d
] 
[Rolling back: Add a kludge to fix building shared libs
Simon Marlow <marlowsd at gmail.com>**20090819145507
 Ignore-this: fd2cc70119796be7a0ba62131f7e9ddb
] 
[rename whitehole_spin to evac_collision, and update it properly
Simon Marlow <marlowsd at gmail.com>**20090819141518
 Ignore-this: c6bad4a99758b7a60749cc769305aa90
] 
[use cas() to claim the closure in copyPart(), to match copy_tag()
Simon Marlow <marlowsd at gmail.com>**20090819141106
 Ignore-this: 6baad6aa65e640d9dbfd3d18b0f77644
 
 copyPart() was still using the old WHITEHOLE mechanism for locking the
 closure.  I don't think this fixes any actual bugs, but it removes a
 gratuitous difference between two functions that should look similar.
] 
[Always yieldCapabilty() when a bound thread blocks
Simon Marlow <marlowsd at gmail.com>**20090819130856
 Ignore-this: 25303050a3095760972fc550445865e6
 Fixes crash in concprog002(threaded2_qw), and possibly other problems
] 
[FIX #2767 & original problem of #3208
Manuel M T Chakravarty <chak at cse.unsw.edu.au>**20090820072608
 Ignore-this: cb8326cf885c2da0b497ef10f8fed942
] 
[Improve the "Stack space overflow" error; fixes trac #3296
Ian Lynagh <igloo at earth.li>**20090819202112] 
[Detect C finalizer callbacks in rts_lock() instead of schedule()
Simon Marlow <marlowsd at gmail.com>**20090819123208
 Ignore-this: 522b05d928b711ee3473539c9db421b4
 Otherwise, finalizer callbacks cause a deadlock in the threaded RTS
 (including GHCi)
] 
[Bump Happy requirement from 1.15 to 1.16
Simon Marlow <marlowsd at gmail.com>**20090819093929
 Ignore-this: d550a42d284b8585faf546231046134b
 Now that the haskell98 dependency of GHC has been removed, the
 Happy-generated parsers must import Data.Array rather than Array, and
 that change was made in Happy 1.16.
] 
[Restore the entry field in StgInfoTable when !defined(TABLES_NEXT_TO_CODE)
Simon Marlow <marlowsd at gmail.com>**20090819113550
 Ignore-this: 491038d9d526888f31e12e7349024e37
 Somehow this got lost, probably in the recent RTS tidy-up.  
 Fixes segfaults in unregisterised compilation.
] 
[Fix warnings
Ian Lynagh <igloo at earth.li>**20090819125440] 
[Put a newtype wrapper around ModuleEnv
Ian Lynagh <igloo at earth.li>**20090818192903] 
[Make the thr_dyn RTS ways optional on GhcUnregisterised
Simon Marlow <marlowsd at gmail.com>**20090819095538
 Ignore-this: 7bbeddde0fcd7f2030087f3292416492
 
 Fixes this failure in the unreigsterised build:
   /usr/bin/ld: cannot find -lHSrts_thr
] 
[fix an include
Simon Marlow <marlowsd at gmail.com>**20090819095237
 Ignore-this: d2988008e40589f615e56f92df01c19b
] 
[remove some redundant declarations
Simon Marlow <marlowsd at gmail.com>**20090819094338
 Ignore-this: ce62ec28b40d00f6e8b072807b2f7591
] 
[Remove the lock around NameCache for readBinIface.
Thomas Schilling <nominolo at googlemail.com>**20090818213243
 
 Turns out using atomic update instead of a full-blown lock was easier
 than I thought.  It should also be safe in the case where we
 concurrently read the same interface file.  Whichever thread loses the
 race will simply find that all of the names are already defined and
 will have no effect on the name cache.
] 
[Fix #3429: a tricky race condition
Simon Marlow <marlowsd at gmail.com>**20090818112942
 Ignore-this: c6f47c6bd3b12ecbd7aa3cfcd25bf9a7
 
 There were two bugs, and had it not been for the first one we would
 not have noticed the second one, so this is quite fortunate.
 
 The first bug is in stg_unblockAsyncExceptionszh_ret, when we found a
 pending exception to raise, but don't end up raising it, there was a
 missing adjustment to the stack pointer.  
 
 The second bug was that this case was actually happening at all: it
 ought to be incredibly rare, because the pending exception thread
 would have to be killed between us finding it and attempting to raise
 the exception.  This made me suspicious.  It turned out that there was
 a race condition on the tso->flags field; multiple threads were
 updating this bitmask field non-atomically (one of the bits is the
 dirty-bit for the generational GC).  The fix is to move the dirty bit
 into its own field of the TSO, making the TSO one word larger (sadly).
] 
[comment fixes (install.mk.in, not dirs.mk.in)
Simon Marlow <marlowsd at gmail.com>**20090817094724
 Ignore-this: 1ca40b832e7cec7a560762a40daa8d4f
] 
[Fix configure summary: --enable-shared has gone
Simon Marlow <marlowsd at gmail.com>**20090817091210
 Ignore-this: 97dce2f98f13c00fd4475f78f3c04e84
] 
[comment fix
Simon Marlow <marlowsd at gmail.com>**20090817091105
 Ignore-this: 880c1948e6f1cfc2841c20a9f93232c1
] 
[remove unused file
Simon Marlow <marlowsd at gmail.com>**20090806112859
 Ignore-this: b0aea4ddcd651e04806a4d2a0f250c3d
] 
[Fix unregisterised build
Simon Marlow <marlowsd at gmail.com>**20090806095417
 Ignore-this: 93ad8435aa581fd767fb639b10c1ed4a
] 
[FIX #3405
Manuel M T Chakravarty <chak at cse.unsw.edu.au>**20090818121425
 Ignore-this: 6ca07059605e9cdf5ab5aa5bb8cc4455
] 
[Make the dynamic linker thread-safe.
Thomas Schilling <nominolo at googlemail.com>**20090817142352
   
 The current implementation is rather pessimistic.  The persistent
 linker state is now an MVar and all exported Linker functions are
 wrapped in modifyMVar calls.  This is serves as a big lock around all
 linker functions.
 
 There might be a chance for more concurrency in a few places. E.g.,
 extending the closure environment and loading packages might be
 independent in some cases.  But for now it's better to be on the safe
 side.
] 
[Make access to NameCache atomic.  Sometimes needs a lock.
Thomas Schilling <nominolo at googlemail.com>**20090817004819
 
 'readBinIface' updates the name cache in a way that is hard to use
 with atomicModifyIORef, so this patch introduces a lock for this case.
 All other updates use atomicModifyIORef.
 
 Having a single lock is quite pessimistic, so it remains to be seen
 whether this will become a problem.  In principle we only need to make
 sure that we do not load the same file concurrently (or that it's
 idempotent).  In practice we also need to ensure that concurrent reads
 do not cancel each other out (since the new NameCache may be based on
 an outdated version).
] 
[Make updates to the Finder caches atomic.  Well, almost.
Thomas Schilling <nominolo at googlemail.com>**20090816231920
 
 Flushing and uncaching a single module is not completely atomic since
 both caches a cleared separately.  However, flushing is only done when
 changing the working directory which shouldn't be done concurrently to
 other threads.  Uncaching is only done in 'summariseModule' which
 requires some more work to become thread-safe anyway.
] 
[Make updates to the external package state atomic.
Thomas Schilling <nominolo at googlemail.com>**20090816231316
 Ignore-this: a700ff0c6725264941d6a5458ce5dade
] 
[Minor documentation fixes.
Thomas Schilling <nominolo at googlemail.com>**20090722231342] 
[bindist fix
Ian Lynagh <igloo at earth.li>**20090816200326] 
[Build fixes
Ian Lynagh <igloo at earth.li>**20090816190043] 
[Remove the old platform code from the bindist configure.ac
Ian Lynagh <igloo at earth.li>**20090814225431] 
[Make our install variables etc compliant with GNU standards; fixes #1924
Ian Lynagh <igloo at earth.li>**20090814224549] 
[Improve fix to Trac #3007
simonpj at microsoft.com**20090814110214
 Ignore-this: ba7d9b91b80f66aa5ece93dcd4ca4bab
 
 This patch tides up Ian's fix a little. In particular, if if you
 {-# SOURCE #-} import a module from a different package, you now 
 get a much more civlised error message.
 
] 
[Only look up whether a module's SOURCE-imported if it's in the current package
Ian Lynagh <igloo at earth.li>**20090813162435
 Suppose we import anotherPackage:M, which exports things from
 anotherPackage:Internal. Then GHC will want to read
 anotherPackage:Internal.hi.
 
 However, if we have also SOURCE-imported thisPackage:Internal then
 we don't want GHC to try to read anotherPackage:Internal.hi-boot
 instead.
 
 The mapping that tells us whether a module is SOURCE-imported uses just
 the module name for the key, so we have to check the package ID before
 looking it up.
 
 Fixes #3007.
] 
[Fix Trac #3409: type synonyms that discard their arguments
simonpj at microsoft.com**20090813161154
 Ignore-this: d2ab9292c281323280fc74e04a9d29dd
 
 Type synonyms that don't mention one of their type parameters on the 
 RHS are a pain in the neck.  This patch fixes a long-standing bug (that
 simply has not appeared before) in that exprType could return a type
 mentioning an existentially-quantified variable (in one of those ignored
 argument positions).
 
 See CoreUtils Note [Existential variables and silly type synonyms]
 
 The fix is not entirely beautiful, but it works, and is very localised.
 
] 
[Add support for multi-line deprecated pragmas; trac #3303
Ian Lynagh <igloo at earth.li>**20090812185912] 
[Fix a sanity check; fixes #3089
Ian Lynagh <igloo at earth.li>**20090812133817] 
[Skip "Cabal check" for certain packages that we know will fail
Ian Lynagh <igloo at earth.li>**20090811220146] 
[Fix "Cabal check" warnings
Ian Lynagh <igloo at earth.li>**20090811215839] 
[Check Cabal packages when validating
Ian Lynagh <igloo at earth.li>**20090811212559
 This checks that hackage would accept the packages.
 Currently warnings are printed, but don't result in failure.
] 
[Include a pointer to GHC.Exts in the generated GHC.Prim docs
Ian Lynagh <igloo at earth.li>**20090811145300] 
[Refactor, and improve error messages (cf Trac #3395)
simonpj at microsoft.com**20090811143655
 Ignore-this: e7205f5bcf8408ff791ba19156e48461
 
 The Convert stuff should not panic if the programmer hands over an
 invalid TH term; instead it should give a graceful error message.
 Largely this had been done, but not for do-blocks, so this patch
 fixes that problem.
 
 Moreover, I did some refactoring and tidying up, which is why
 so many lines of code have changed
 
] 
[Fix Trac #3421: a typo in TysPrim
simonpj at microsoft.com**20090810164320
 Ignore-this: 67af95909862d672c6eb738c52458873
 
 This is just a blatant typo, where Any1 :: *->* was getting mixed
 up with Any :: *.
 
] 
[Improve the recent changes to overlap-checking for view patters
simonpj at microsoft.com**20090810141158
 Ignore-this: 8b97dfef44aa9951c31587a884ec92f
 
 The previous patch simply gave up for view patterns; this version
 instead treats them like n+k patterns and gives signficantly better
 results.
 
 Less code, too.
 
] 
[Turn group into a special_id when TransformListComp is on
Max Bolingbroke <batterseapower at hotmail.com>**20090717224903
 Ignore-this: eabef2f2044ee6cc6bc876529f4044ca
] 
[Make Constants shareable with the base package
Ian Lynagh <igloo at earth.li>**20090809180701] 
[Minor refactoring
Ian Lynagh <igloo at earth.li>**20090809154258] 
[FIX #2395 (ViewPatterns trigger bad Check errors)
Alexander Dunlap <alexander.dunlap at gmail.com>**20090807184841
 Ignore-this: af83dc1d93b735bd89d5f9dcb2f5ca6b
] 
[Pass -m32 to gcc on i386 and ppc OS X
Ian Lynagh <igloo at earth.li>**20090808222537
 This makes GHC work even if you are actually running it in 64bit mode,
 e.g. on OS X 10.6 Snow.
] 
[Fix bindist creation
Ian Lynagh <igloo at earth.li>**20090808184407
 This is a bit kludgy. We've hit the maximum number of arguments you can
 have in the for loop for adding files to the bindist list, so this just
 splits the list in 2.
] 
[Put the library haddock docs in the html subdirectory of docdir
Ian Lynagh <igloo at earth.li>**20090808175756] 
[Install the main doc index page, and also put it in bindists
Ian Lynagh <igloo at earth.li>**20090808112034] 
[FIX BUILD: Remove harmful dnls and identifier typo in aclocal.m4
Alexander Dunlap <alexander.dunlap at gmail.com>**20090801012335
 Ignore-this: 825b21e13d4b3f04fab91bf07f4e693b
] 
[Fix the build on OS X
Ian Lynagh <igloo at earth.li>**20090807152151] 
[Add -r option to darcs-all, and remove push-all (#3375)
Simon Marlow <marlowsd at gmail.com>*-20090803104413
 Ignore-this: 6871c15294113898902be90210d9a7a9
 Contributed by: seliopou at gmail.com
     
 This patch modifies darcs-all to have feature parity with push-all by
 recognizing two new options.
 
     * -i, equivalent to --ignore-failure in push-all
     * -r <repo>, specifies the remote repository darcs commands will use
 
 Some example commands:
 
 Get the libraries from a repository of your choosing. This is useful
 when working with a git mirror:
 
     $ ./darcs-all -r http://darcs.haskell.org get
 
 Pull changes. Used to be:
 
     $ ./push-all --pull http://darcs.haskell.org
 
 Is now:
 
     $ ./darcs-all -r http://darcs.haskell.org pull
 
 Or to use the default remote of the ghc repository:
 
     $ ./darcs-all pull
] 
[Add a kludge to fix building shared libs
Ian Lynagh <igloo at earth.li>**20090807130731
 The .dyn_hi files currently depend on the .dyn_hi files of modules that
 they import. But they actually want the .hi files of modules from
 another package.This we make the .dyn_hi files depend on the .hi files
 so we are sure that they exist and are up-to-date.
] 
[Leave dyn in GhcLibWays when validating
Ian Lynagh <igloo at earth.li>**20090807005445] 
[Build shared library support by default on platforms that support it
Ian Lynagh <igloo at earth.li>**20090806164320] 
[Update the libffi filenames to follow the new version number
Ian Lynagh <igloo at earth.li>**20090806141359
 Stops make going into an infinite rebuilding loop
] 
[Fix ticky build
Simon Marlow <marlowsd at gmail.com>**20090806093021
 Ignore-this: dbabf96061763e3a6cb7259e3ea71bed
] 
[add #include <sys/types.h> (hopefully fixes OS X build)
Simon Marlow <marlowsd at gmail.com>**20090806081747
 Ignore-this: 82d02b32ec5f7ad1966729402a6610
] 
[profiling build fix
Simon Marlow <marlowsd at gmail.com>**20090805102217
 Ignore-this: 610a09b10b9f326e392f96d92f0fcb20
] 
[profiling build fixes
Simon Marlow <marlowsd at gmail.com>**20090805093539
 Ignore-this: 90015383cdb908227508363b28de76e4
] 
[#include fix
Simon Marlow <marlowsd at gmail.com>**20090805092537
 Ignore-this: f48f53a20e0ad367d78ecdd675b99b7c
] 
[use C99-style array initialisers
Simon Marlow <marlowsd at gmail.com>**20090803214545
 Ignore-this: 87a2adbaf9495d8ee9b9191dd863dfa7
] 
[use C99-style array initialisers
Simon Marlow <marlowsd at gmail.com>**20090803210948
 Ignore-this: fadcc60df270797beec7dcc4dca5da04
] 
[move termios prototypes into a public header
Simon Marlow <marlowsd at gmail.com>**20090803210304
 Ignore-this: ef87e8e25aac38ba4b92df4f0078d9cc
] 
[move StgEntCounter type into its own header
Simon Marlow <marlowsd at gmail.com>**20090803210229
 Ignore-this: 6f9896a3e575e347ca9c89108d12469e
] 
[Common up two closure type -> string tables
Simon Marlow <marlowsd at gmail.com>**20090803203252
 Ignore-this: e4a07b24c945a5181339ce769a178c33
 Also, use C99-style array initialisers
] 
[Rename primops from foozh_fast to stg_foozh
Simon Marlow <marlowsd at gmail.com>**20090803202940
 Ignore-this: eb6022a346e27ad8e19b1be307d4618e
 For consistency with other RTS exported symbols
] 
[remove the GUM closure types
Simon Marlow <marlowsd at gmail.com>**20090803202151
 Ignore-this: 871ab05276a311af7330c38a49e415f0
] 
[use C99-style array initialisers
Simon Marlow <marlowsd at gmail.com>**20090803201148
 Ignore-this: 3490e28f536bfb424510628b0d75d4a7
] 
[Remove final bits of the old .NET support
Simon Marlow <marlowsd at gmail.com>**20090803195935
 Ignore-this: a02948975e17219512910d530f2faab2
] 
[fast make omits all GHC stages
Simon Marlow <marlowsd at gmail.com>**20090802190752
 Ignore-this: 8462306d70cbb95df532e50caec3d20f
] 
[fast make omits dependencies in ghc/ too
Simon Marlow <marlowsd at gmail.com>**20090802190733
 Ignore-this: 5f622f40ce8ce604573ee9867047ce0a
] 
[remove unnecessary -#include options
Simon Marlow <marlowsd at gmail.com>**20090802190651
 Ignore-this: 4e6765f51914cbc258f9b5e75c86fd83
] 
[mention that INCLUDE pragmas are accepted, but ignored
Simon Marlow <marlowsd at gmail.com>**20090802190614
 Ignore-this: 533952df3b9c4350b1d2a19bda40f324
] 
[Deprecate the -#include flag
Simon Marlow <marlowsd at gmail.com>**20090802190535
 Ignore-this: 851c0c0d791af34eac7578b59affcf79
] 
[remove docuumentation for -#include option
Simon Marlow <marlowsd at gmail.com>**20090801222118
 Ignore-this: 7b8a03145a2b767e6f71cf768a2e97
] 
[fix off-by-one in memory allocation
Simon Marlow <marlowsd at gmail.com>**20090804092115
 Ignore-this: a92a5e27d1acd27706b96fff701af0a2
] 
[Windows build fix
Simon Marlow <marlowsd at gmail.com>**20090803150533
 Ignore-this: 425a5572d84152f5bf98890030ed2b34
] 
[Windows build fixes
Simon Marlow <marlowsd at gmail.com>**20090803142346
 Ignore-this: e1ede00e0ecb223ce222767c29f92063
] 
[move gc_alloc_block to make it visible on 32-bit
Simon Marlow <marlowsd at gmail.com>**20090803132847
 Ignore-this: 1859f0a8e527a37012587ae385f2c4f4
] 
[Windows build fixes
Simon Marlow <marlowsd at gmail.com>**20090803131933
 Ignore-this: 9a381956cbe00a3be1487d68ee70f67f
] 
[x86_64 warning fix
Simon Marlow <marlowsd at gmail.com>**20090803120415
 Ignore-this: 2f5484f0285849f090cedc2e24cae161
] 
[x86_64 warning fixes
Simon Marlow <marlowsd at gmail.com>**20090803115955
 Ignore-this: 7a0a2a5e98441b1bc1d40848e9265891
] 
[x86_64 build fix: declare gc_alloc_block_sync
Simon Marlow <marlowsd at gmail.com>**20090803113603
 Ignore-this: c719572e261edd98f9b7fadf43cf7616
] 
[RTS tidyup sweep, first phase
Simon Marlow <marlowsd at gmail.com>**20090802213204
 Ignore-this: 1f7aabac4d5f9d32f6d91f1ccb1a80a4
 
 The first phase of this tidyup is focussed on the header files, and in
 particular making sure we are exposinng publicly exactly what we need
 to, and no more.
 
  - Rts.h now includes everything that the RTS exposes publicly,
    rather than a random subset of it.
 
  - Most of the public header files have moved into subdirectories, and
    many of them have been renamed.  But clients should not need to
    include any of the other headers directly, just #include the main
    public headers: Rts.h, HsFFI.h, RtsAPI.h.
 
  - All the headers needed for via-C compilation have moved into the
    stg subdirectory, which is self-contained.  Most of the headers for
    the rest of the RTS APIs have moved into the rts subdirectory.
 
  - I left MachDeps.h where it is, because it is so widely used in
    Haskell code.
  
  - I left a deprecated stub for RtsFlags.h in place.  The flag
    structures are now exposed by Rts.h.
 
  - Various internal APIs are no longer exposed by public header files.
 
  - Various bits of dead code and declarations have been removed
 
  - More gcc warnings are turned on, and the RTS code is more
    warning-clean.
 
  - More source files #include "PosixSource.h", and hence only use
    standard POSIX (1003.1c-1995) interfaces.
 
 There is a lot more tidying up still to do, this is just the first
 pass.  I also intend to standardise the names for external RTS APIs
 (e.g use the rts_ prefix consistently), and declare the internal APIs
 as hidden for shared libraries.
] 
[replace sparc-specific Int64 code with calls to platform-independent macros
Simon Marlow <marlowsd at gmail.com>**20090727215103
 Ignore-this: 4f65892caeb42f8f58724883cc6097eb
] 
[remove old incarnation of .NET support
Simon Marlow <marlowsd at gmail.com>**20090628211147
 Ignore-this: b8e0e316e371b91e676cacf08ed8e1c3
] 
[Windows build fix
Simon Marlow <marlowsd at gmail.com>**20090803144931
 Ignore-this: c066b5b75e58f3c4389fc199f700dce5
] 
[rts_stop_on_exception is a C int, not a W_
Simon Marlow <marlowsd at gmail.com>**20090803124916
 Ignore-this: d0432287956e7291a503a554424d6897
 amazing this hasn't caused any problems before now
] 
[Fix #3412: the worker of an Id might not be a local Id
Simon Marlow <marlowsd at gmail.com>**20090803112803
 Ignore-this: c433025fd02c997a05555f5c7e6a6a7b
] 
[Add -r option to darcs-all, and remove push-all (#3375)
Simon Marlow <marlowsd at gmail.com>**20090803104413
 Ignore-this: 6871c15294113898902be90210d9a7a9
 Contributed by: seliopou at gmail.com
     
 This patch modifies darcs-all to have feature parity with push-all by
 recognizing two new options.
 
     * -i, equivalent to --ignore-failure in push-all
     * -r <repo>, specifies the remote repository darcs commands will use
 
 Some example commands:
 
 Get the libraries from a repository of your choosing. This is useful
 when working with a git mirror:
 
     $ ./darcs-all -r http://darcs.haskell.org get
 
 Pull changes. Used to be:
 
     $ ./push-all --pull http://darcs.haskell.org
 
 Is now:
 
     $ ./darcs-all -r http://darcs.haskell.org pull
 
 Or to use the default remote of the ghc repository:
 
     $ ./darcs-all pull
] 
[remove dead code
Simon Marlow <marlowsd at gmail.com>**20090620214113
 Ignore-this: 6da2bda8efd2dc63c8931243ab7dec0a
] 
[fix warnings
Simon Marlow <marlowsd at gmail.com>**20090729134348
 Ignore-this: 98128ac0b78d861439ebf807af1ca417
] 
[Implement "ghc --abi-hash M1 M2 ..."
Simon Marlow <marlowsd at gmail.com>**20090729132125
 Ignore-this: d0a71b2fadefdfdefa6d287d28bad40f
 This prints a combined hash of the ABIs exposed by the modules listed
 on the command line.  It will be used by Cabal for generating a
 package Id based on the actual ABI of a package.
] 
[Clean GMP properly; fixes #3411
Ian Lynagh <igloo at earth.li>**20090802195759] 
[Fix permissions when installing
Ian Lynagh <igloo at earth.li>**20090802161237] 
[Fix creation of library doc index, and put the library docs in bindists
Ian Lynagh <igloo at earth.li>**20090802114202] 
[Remove a TODO item that's been done
Ian Lynagh <igloo at earth.li>**20090802103944] 
[Add a publish-docs rule
Ian Lynagh <igloo at earth.li>**20090801224155] 
[Add docs to bindists
Ian Lynagh <igloo at earth.li>**20090801222551] 
[Fix "make show" in a bindist
Ian Lynagh <igloo at earth.li>**20090801212604] 
[Make the new build system install the documentation
Ian Lynagh <igloo at earth.li>**20090801204624] 
[whitespace tweaks in rules/docbook.mk
Ian Lynagh <igloo at earth.li>**20090801195221] 
[Fix configure when alex/happy are installed to a directory containing spaces
Ian Lynagh <igloo at earth.li>**20090801182817] 
[Allow more than 64k instructions in a BCO; fixes #789
Ian Lynagh <igloo at earth.li>**20090801153203] 
[If ghci runs out of labels, panic
Ian Lynagh <igloo at earth.li>**20090801132829] 
[Fix the 64k insns overflow check in ghci, and add more checks
Ian Lynagh <igloo at earth.li>**20090801130014] 
[Fix cleaning the integer package
Ian Lynagh <igloo at earth.li>**20090730143129] 
[Fix warnings when building with the HEAD
Ian Lynagh <igloo at earth.li>**20090730143031] 
[Remove some redundant fromIntegral's
Ian Lynagh <igloo at earth.li>**20090730105532] 
[Fix space problems in ghci
Ian Lynagh <igloo at earth.li>**20090730105351
 We were making arrays with range (0, n-1) which is bad if n == 0 now
 that we are using Word types.
] 
[Make the types we use when creating GHCi bytecode better match reality
Ian Lynagh <igloo at earth.li>**20090729130911
 We were keeping things as Int, and then converting them to Word16 at
 the last minute, when really they ought to have been Word16 all along.
] 
[Add an (Outputable Word16) instance
Ian Lynagh <igloo at earth.li>**20090728134436] 
[Fix whitespace in ByteCodeAsm.lhs
Ian Lynagh <igloo at earth.li>**20090728123444] 
[Add CHECK(p), like ASSERT(p) but works even when !defined(DEBUG)
Simon Marlow <marlowsd at gmail.com>**20090729075433
 Ignore-this: a723f456e4b1eaeaa617a675da276aa2
 For inexpensive assertions
] 
[enable the x86-specific versions of atomic_inc()/atomic_dec()
Simon Marlow <marlowsd at gmail.com>**20090729075307
 Ignore-this: a271b7ade5502ec4d8444aac19f4b4c3
] 
[fix warning
Simon Marlow <marlowsd at gmail.com>**20090728103855
 Ignore-this: ee626aa5de0a2aed8f44ae1131cc341d
] 
[fix warning
Simon Marlow <marlowsd at gmail.com>**20090728102707
 Ignore-this: ad4f07a163921d17d242a9452b4bb578
] 
[fix a warning
Simon Marlow <marlowsd at gmail.com>**20090728101731
 Ignore-this: 73ead0a0004723757c0a51b56681c991
] 
[Be a bit more sensible about choosing external OccNames
Simon Marlow <marlowsd at gmail.com>**20090728100434
 Ignore-this: 4adcd661e76440deb2b4ab498ebd2d1e
 
 Instead of chr_$wchr, we now just get $wchr.  In general, when an
 OccName is system-generated, we leave it out of the final external
 name, preferring to use the name of the exported parent instead (which
 is necessarily a user-written name).
 
 Names should be no less deterministic, but should be shorter and more
 readable.
] 
[Remove old 'foreign import dotnet' code
Simon Marlow <marlowsd at gmail.com>**20090727144524
 Ignore-this: 821ebea2c3897415195318f107421472
 It still lives in darcs, if anyone wants to revive it sometime.
] 
[remove a couple of ToDos
Simon Marlow <marlowsd at gmail.com>**20090727094719
 Ignore-this: ef00fc481821dff4381ba9efcd792708
] 
[buildinfo files need a $$(wildcard)
Simon Marlow <marlowsd at gmail.com>**20090727091012
 Ignore-this: b4c3201dfa81fef32ee254dd9c955b2d
] 
[Slight tweak to avoid overflowing the command-line size in bindist
Simon Marlow <marlowsd at gmail.com>**20090727090946
 Ignore-this: 1e2ff207d03fed08576ac59f0b46c08c
 Not a real fix: if this bites us again we'll have to rethink
] 
[avoid (benign) error about overriding rules for binary-dist
Simon Marlow <marlowsd at gmail.com>**20090727090903
 Ignore-this: ffb7f7bf1290f2faf96ac177f76a1422
] 
[Give a better error message for hidden packages when building Cabal package
Ian Lynagh <igloo at earth.li>**20090726194915
 Fixes #3168
] 
[Add a -fbuilding-cabal-package flag
Ian Lynagh <igloo at earth.li>**20090726181934
 This means GHC knows whether it's building a Cabal package, or just
 Haskell sources. For example, it may wish to give different error
 messages when building a Cabal package.
] 
[Add an extension to disable n+k patterns
Ian Lynagh <igloo at earth.li>**20090725134703] 
[Fix a warning on Windows
Ian Lynagh <igloo at earth.li>**20090724221244] 
[Remove GHC's haskell98 dependency
Ian Lynagh <igloo at earth.li>**20090724210825] 
[add number of bytes to +RTS -DS leak reports
Simon Marlow <marlowsd at gmail.com>**20090724150010
 Ignore-this: 3a66585c8fd2b58ce96abab1e154fb6e
] 
[free the gc_thread structures during shutdown
Simon Marlow <marlowsd at gmail.com>**20090724145956
 Ignore-this: 25efeb189cbfb549af4550d266604f0e
] 
[Add atomic_inc()/atomic_dec(), and use them to replace gc_running_mutex
Simon Marlow <marlowsd at gmail.com>**20090724142620
 Ignore-this: d775eeaf85fd0f9064d87a0909134bc0
 This also fixes a memory leak on Windows with -threaded, because we
 were calling initMutex(&gc_running_mutex) for each GC, which allocates
 memory.
] 
[Rewrite the foreign import string parser using ReadP
Simon Marlow <marlowsd at gmail.com>**20090723152138
 Ignore-this: 1c7db770a29d48710b05e2a3d216b2a8
 And kill the duplicate one in HsSyn.Convert
] 
[point to the wiki
Simon Marlow <marlowsd at gmail.com>**20090723132345
 Ignore-this: c11300bac62ce2f56d7fc271aa26dbcd
] 
[Remove note about avoiding use of #def in libraries
Simon Marlow <marlowsd at gmail.com>**20090723111026
 Ignore-this: 8a027ed37b2d10094f7a31548aee2535
 It should be safe to use now that we aren't relying on C prototypes
 for foreign functions in via-C code.
] 
[refactorings
Simon Marlow <marlowsd at gmail.com>**20090723091230
 Ignore-this: 836feb0e819127603dd56623af6e48dc
] 
[Fix Trac #3391: make generic to/from bindings only for newly-declared types
simonpj at microsoft.com**20090723155803
 Ignore-this: bb56c2ec054397d421dce13d5eb6c73f
 
 Before this patch we were bogusly making to/from bindings for all data types
 in the TcGblEnv.  But that is wrong when we have multiple "chunks" of 
 bindings in Template Haskell.  We should start from the declarations 
 themselves.  Easy.
 
] 
[Print explicit braces and semicolons in do-notation
simonpj at microsoft.com**20090723152411
 Ignore-this: a97ddf19774d27d15a01d63787708b20
 
 By printing explicit braces we make it more likely that pretty-printed
 code will be acceptable if fed back into GHC.
 
 See http://www.haskell.org/pipermail/glasgow-haskell-users/2009-July/017554.html
 
] 
[Documentation for stand-alone deriving (Trac #3012)
simonpj at microsoft.com**20090723132558
 Ignore-this: 54445c5984594eb7f82151b2ac118695
] 
[Windows only: set the encoding on stdin to utf8
Simon Marlow <marlowsd at gmail.com>**20090723121913
 Ignore-this: d65115d9711b5fb68e77786565ef6de
 Otherwise it defaults to latin1.
] 
[Fix Trac #3012: allow more free-wheeling in standalone deriving
simonpj at microsoft.com**20090723130145
 Ignore-this: 357580b9388ccbe1da3c1da3ba90e456
 
 In standalone deriving, we now do *not* check side conditions.
 We simply generate the code and typecheck it.  If there's a type
 error, it's the programmer's problem. 
 
 This means that you can do 'deriving instance Show (T a)', where
 T is a GADT, for example, provided of course that the boilerplate
 code does in fact typecheck.
 
 I put some work into getting a decent error message.  In particular
 if there's a type error in a method, GHC will show the entire code
 for that method (since, after all, the user did not write it).
 Most of the changes are to achieve that goal.
 
 Still to come: changes in the documentation.
 
] 
[Use the ErrMsg record type
simonpj at microsoft.com**20090723130108
 Ignore-this: 7fb6dd78d3185da0c33901b8aac8d108
] 
[Stop generating redundant parens in 'deriving' code
simonpj at microsoft.com**20090723125903
 Ignore-this: 6fc82df9648a82bcf7bf6fdfa9b4dad3
 
 This makes the code printed by -ddump-deriv look prettier
 
] 
[Wibble to printing tuple sections
simonpj at microsoft.com**20090723125756
 Ignore-this: af2a1b9784f6447fea0e11d454cf082f
] 
[Fix Trac #3193: improve line number reporting for equality constraints
simonpj at microsoft.com**20090723065504
 Ignore-this: b45a68071bcaca48cad7855dccb9c9eb
 
 When reporting an error from a failed equality constraint, we were
 setting the *context* but not the *line number* in TcTyFuns.eqInstMisMatch
 As a result, the line number didn't match the context at all.  It's
 trivial to fix.
 
 I'm 99% certain this fixes #3193, but it's too complicated to
 reproduce, so I have not actually tested it.
 
] 
[Add fmapM_maybe :: Monad m => (a -> m b) -> Maybe a -> m (Maybe b)
simonpj at microsoft.com**20090723064932
 Ignore-this: db5f6319b52a5e6b5f85d76985f2a7c9
 
 This function isn't used at the moment, but Max added it, and it
 looks useful.
 
] 
[Add tuple sections as a new feature
simonpj at microsoft.com**20090723063859
 Ignore-this: d42a26fc1efff112b852b5c1135c1746
 
 This patch adds tuple sections, so that
 
 	(x,,z)  means   \y -> (x,y,z)
 
 Thanks for Max Bolinbroke for doing the hard work.
 
 In the end, instead of using two constructors in HsSyn, I used
 just one (still called ExplicitTuple) whose arguments can be
 	Present (LHsExpr id)
 or	Missing PostTcType
 
 While I was at it, I did a bit of refactoring too.
 
] 
[NetBSD defines _REENTRANT in its header files, so compiling ghc gives
Simon Marlow <marlowsd at gmail.com>**20090723075030
 Ignore-this: 4722c4ff0541c6080de8f433e498684
 redefinition warnings for all files that are including includes/Rts.h.
 
 Contributed by: Krister Walfridsson <krister.walfridsson at gmail.com>
] 
[includes/TSO.h: kill trailing whitespace
Samuel Bronson <naesten at gmail.com>**20090722170354
 Ignore-this: 36d4afd1a21188d604ed6b432942dcdc
] 
[Say what StgTSOBlockInfo is for, where to read about it.
Samuel Bronson <naesten at gmail.com>**20090722163011
 Ignore-this: 6c09e11f23594251cdc2db1bc642edc9
] 
[Make the Integer library used directly configurable in GHC and base
Ian Lynagh <igloo at earth.li>**20090722151048
 Rather than indirecting through an integer package
] 
[Fix cleaning with the new integer changes
Ian Lynagh <igloo at earth.li>**20090722142545] 
[Add integer-simple as a build option
Ian Lynagh <igloo at earth.li>**20090722013137] 
[Tweak whitespace
Ian Lynagh <igloo at earth.li>**20090719221303] 
[thenIO, bindIO, returnIO moved to GHC.Base
Simon Marlow <marlowsd at gmail.com>**20090722102219
 Ignore-this: 5d6c5988e0abab2c5169540aa8ddedb9
] 
[remove unused $(HscIfaceFileVersion)
Simon Marlow <marlowsd at gmail.com>**20090720145053
 Ignore-this: d725cbbde3c68673e2342b370460d87f
] 
[Choose external names more predictably
Simon Marlow <marlowsd at gmail.com>**20090720144751
 Ignore-this: 17513bc93af646108f21bbed1c8f4a3a
 
 Now, for a compiler-generated binding "x", if "x" is referred to by
 the exported "f", then it will be named "f_x" rather than something
 like "x23".  This means that hopefully
 
   - compilation will more often product the same results given the
     same input (the choice of names is not dependent on the
     non-deterministic order of bindings within the compiler).
 
   - less recompilation will be necessary after making changes
 
   - navigating Core might be a bit easier.
 
 unfortunately, compilation with -O still does not consistently produce
 the same ABI.  The simplifier sometimes does different things,
 apparently.
 
 Names will be longer, but I can't see a way around that.
] 
[Use stable ordering in the dependencies
Simon Marlow <marlowsd at gmail.com>**20090717123449
 Ignore-this: e20bac233cf6f834e69c027ff60b5b50
 Fixes another cause of wobbly interface files and unnecessary recompilation.
] 
[fall back on libffi for 'foreign import "wrapper"' if necessary
Simon Marlow <marlowsd at gmail.com>**20090716134549
 Ignore-this: e1073e1ad77e720326865a6d3c4f3790
] 
[Take account of GADTs when reporting patterm-match overlap
simonpj at microsoft.com**20090722050933
 Ignore-this: 7dcbdcb91021e83e6e6208a2e68c50c9
 
 When matching against a GADT, some of the constructors may be impossible.
 For example
 	data T a where
           T1 :: T Int
           T2 :: T Bool
           T3 :: T a
 
         f :: T Int -> Int
         f T1 = 3
         f T3 = 4
 
 Here, does not have any missing cases, despite omittting T2, because
 T2 :: T Bool.
 
 This patch teaches the overlap checker about GADTs, which happily
 turned out to be rather easy even though the overlap checker needs
 a serious rewrite.
 
] 
[Fix Trac #3382: desugaring of NPats
simonpj at microsoft.com**20090720061226
 Ignore-this: 4dccdaf2b7d6428141dcf174cb455a20
 
 Max spotted that the short-cut rules for desugaring NPats (where
 we compare against a literal) were wrong now that we have overloaded
 strings.
 
] 
[Add a -fwarn-dodgy-exports flag; fixes #1911
Ian Lynagh <igloo at earth.li>**20090719200124
 This is used to control warnings that were previously unconditional.
] 
[Build terminfo if we /aren't/ on Windows, not if we /are/
Ian Lynagh <igloo at earth.li>**20090719111709] 
[Change how PACKAGES is constructed, so that everything gets cleaned properly
Ian Lynagh <igloo at earth.li>**20090718210058
 If Windows wasn't defined properly then the Win32 package wasn't being
 cleaned, as it wasn't added to PACKAGES. Now we always add everything to
 PACKAGES when CLEANING=YES.
] 
[temporarily turn off unused import warnings for the time library
Ian Lynagh <igloo at earth.li>**20090718183445] 
[Follow the split directory rename in the GHC build system rules
Ian Lynagh <igloo at earth.li>**20090718155618] 
[Add osuf to the name we use for the split dir
Ian Lynagh <igloo at earth.li>**20090718145522
 This avoids a collision between the directories we use when compiling
 multiple ways, which in turn leads to a race condition in parallel
 builds.
] 
[Temporarily turn off unused-do-bind warnings for the time package
Ian Lynagh <igloo at earth.li>**20090718134536] 
[Make ghc-cabal handle "Custom" Setup.hs files that have a configure script
Ian Lynagh <igloo at earth.li>**20090718131555] 
[Add the time library, and support for libraries in tarballs
Ian Lynagh <igloo at earth.li>**20090718121649] 
[Always serialise Int as 64bit values; fixes trac #3041
Ian Lynagh <igloo at earth.li>**20090717224203
 This means that, provided the values are small enough, files
 serialized are portable between architectures. In particular,
 .haddock files are portable.
] 
[Remove some code that has always been commented out
Ian Lynagh <igloo at earth.li>**20090717224100] 
[Fix Trac #3346: tcSimplify for LHS of RULES with type equalities
simonpj at microsoft.com**20090717155722
 Ignore-this: dfdd0f9a62d78d63276a4d558831099c
] 
[Allow mixed case in the LINE pragma; patch from squadette; fixes #1817
Ian Lynagh <igloo at earth.li>**20090717133522] 
[Comment only
simonpj at microsoft.com**20090717120154
 Ignore-this: f96b11e602fe4b311c1e466af9aa1908
] 
[Add missing case for eq_note.
t-peterj at microsoft.com**20090624134407] 
[Rename parameters to make debugging code compile.
t-peterj at microsoft.com**20090626105440] 
[Comment fix: use the same variable names in the conclusion as in the premise.
t-peterj at microsoft.com**20090618092235] 
[Typo fixes, from Alexey Mahotkin
Ian Lynagh <igloo at earth.li>**20090717010817] 
[Use names like '$fOrdInt' for dfuns (and TF instances), rather than '$f21'
Simon Marlow <marlowsd at gmail.com>**20090716125643
 Ignore-this: d0b4632cf8ed9e05b67a19aa19ab3e19
 
 2 reasons for this:
   - compilation is more predictable.  Adding or removing an instance
     is less likely to force unnecessary recompilation due to
     renumbering other dfun names.
   - it makes it easier to read Core / C-- / asm
 
 The names aren't completely deterministic.  To do that, we'd have to
 include package and module names, which would make the symbol names
 long and reduce readability.  So the compromise is that if there's a
 clash, we disambiguate by adding an integer suffix.  This is fairly
 unlikely in practice unless you're using overlapping instances.
 
 Type family instances are handled in the same way, with the same
 disambiguation strategy.
] 
[Use a stable ordering for the export list in the interface
Simon Marlow <marlowsd at gmail.com>**20090716122601
 Ignore-this: 847dd7adc8b52e56f28d2478c78c925
 The export list was ordered according to the whim of FastStrings,
 which meant that interface fingerprints could change for no good
 reason, causing spurious recompilation.
] 
[Don't put all of $CFLAGS into $SRC_CC_OPTS
Ian Lynagh <igloo at earth.li>**20090716131309
 Instead, we just put the flags we need in there (e.g. -m64 on OS X 64).
 This fixes a problem found by Simon M, where we were compiling
 everything with -g, leading to a bloated RTS.
] 
[Move showOpt into DynFlags
Ian Lynagh <igloo at earth.li>**20090716005314] 
[Make the --info values printable with "ghc --print-foo"; trac #3122
Ian Lynagh <igloo at earth.li>**20090716001718
 Also, libdir is now part of the --info output, so this subsumes the old
 --print-libdir flag.
 The mode parsing was getting rather adhoc, so I've tidied it up a bit
 in the process.
] 
[whitespace only
Simon Marlow <marlowsd at gmail.com>**20090716104217
 Ignore-this: 38cff291d9ef15c30e3ed685ffc3c9f9
] 
[refactor: use packageConfigId in place of mkPackageId . package
Simon Marlow <marlowsd at gmail.com>**20090716104145
 Ignore-this: f3d73e7bd1b307a67d26585c49f3d89f
] 
[Fix a flag name in the docs
Ian Lynagh <igloo at earth.li>**20090714165943] 
[Add the -fno-shared-implib flag
Ian Lynagh <igloo at earth.li>**20090714165631
 Patch from
     Max Bolingbroke <batterseapower at hotmail.com>
 Rerecorded to avoid conflicts.
] 
[Derived Foldable instances should use Data.Foldable.foldr
m.niloc at gmail.com**20090711130647
 Ignore-this: e3eb841e9535a842a98bb1ae0532c6e8
] 
[remove Solaris-specific hacks, now unnecessary
Simon Marlow <marlowsd at gmail.com>**20090713083524
 Ignore-this: 500077008e463532e0677ee82f5284bb
] 
[Simplify timestamp restoration
Matthias Kilian <kili at outback.escape.de>**20090711100244
 Ignore-this: 7eaede224befa6b5368c91b92366211
] 
[FIX #3272
Manuel M T Chakravarty <chak at cse.unsw.edu.au>**20090714054559
 Ignore-this: 225fe4d82d4eed02e9b1377687661bac
] 
[Fix warnings
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20090713092032
 Ignore-this: 3631b87164fc54d82e3a02875dc08f7d
] 
[Separate length from data in DPH arrays
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20090713044212
 Ignore-this: aa2cc3b5ae43bd2c493ce4b330c883cd
] 
[Stop using -fno-warn-unused-do-bind when compiling the libraries
Ian Lynagh <igloo at earth.li>**20090709160422
 They're now fixed to not generate those warnings
] 
[Remove maybePrefixMatch, using stripPrefix instead
Ian Lynagh <igloo at earth.li>**20090709160412
 We already require GHC 6.8 to build, and that included stripPrefix
 in Data.List.
] 
[TFs: FIX #2203 (second half)
Manuel M T Chakravarty <chak at cse.unsw.edu.au>**20090710064834
 Ignore-this: 46a46feaa73f74feb08524b9e7547414
] 
[TFs: Fix should_compile/Simple8
Manuel M T Chakravarty <chak at cse.unsw.edu.au>**20090710042728
 Ignore-this: 471ab67e3df1c5245921be5286a45f93
] 
[workaround new Cygwin bash CRLF behaviour
Simon Marlow <marlowsd at gmail.com>**20090709132850
 Ignore-this: 5cfa2cc9d776ebe315c0f6ad7ab56d98
] 
[Use /usr/bin/test if it exists, and fix test syntax.
Simon Marlow <marlowsd at gmail.com>**20090709124616
 Ignore-this: 83a75ba7c3ce2a1d02bddb7bfe414bfe
 Should fix Solaris build failures
] 
[Allow mixed case pragmas; #1817. Patch from squadette
Ian Lynagh <igloo at earth.li>**20090709153737
 This patch allow you to use "Language CPP", or even "LaNgUaGe CPP",
 if you wish, as the manual claims you can.
] 
[don't create inplace/bin/ghc-<version>
Simon Marlow <marlowsd at gmail.com>**20090706092031
 Ignore-this: 2584d7bf56e77b27ca5b7b557c152c5e
] 
[Fix ignored-monadic-result warnings
Ian Lynagh <igloo at earth.li>**20090707181857] 
[Fix an unused import warning
Ian Lynagh <igloo at earth.li>**20090707144706] 
[Fix unused import warnings
Ian Lynagh <igloo at earth.li>**20090707143216] 
[Fix unused import warnings
Ian Lynagh <igloo at earth.li>**20090707133537] 
[When exporting F(..), all the children of F are also exported
Ian Lynagh <igloo at earth.li>**20090707133427
 This fixes the unused imports warning when
     Foo (F(x,y,z))
 is imported and
     Foo (F(..))
 is exported.
] 
[Remove unused imports
Ian Lynagh <igloo at earth.li>**20090707121548] 
[Major patch to fix reporting of unused imports
simonpj at microsoft.com**20090706112503
 Ignore-this: 3b5ecdd880474493d73bdbdc0fa0b782
 
 This patch, joint work between and Ian and Simon, fixes Trac #1074
 by reporting unused import declarations much more accuratly than 
 before.  The specification is described at 
 
 http://hackage.haskell.org/trac/ghc/wiki/Commentary/Compiler/UnusedImports
 
 The implementation is both easier to understand than before, and shorter
 too.  
 
 Also fixed are #1148, #2267
 
 Also fixed is -ddump-minimal imports, which now works properly, fixing 
 Trac #1792.
 
 
] 
[Trim unused imports detected by new unused-import code
simonpj at microsoft.com**20090706112201
 Ignore-this: c6ca46d3a750c1cd1d58ea2c0de9f14f
] 
[Avoid unnecessary recompilation after ./configure (helps #3228)
Simon Marlow <marlowsd at gmail.com>**20090707085040
 Ignore-this: f8b3e7a2a96bc23cd29505ab9c8dbd7d
 We cache the old versions of files generated by configure, so that if
 configure touches the file without changing it, we can detect that and
 restore the timestamp.
] 
[check for tabs in compiler/ghc.cabal.in (#3344)
Simon Marlow <marlowsd at gmail.com>**20090707081845
 Ignore-this: 6073db47eafd52e13e76c58ef738afcf
] 
[remove tabs
Simon Marlow <marlowsd at gmail.com>**20090707081823
 Ignore-this: 3d65831fc019f76cefac03291904842a
] 
[fix cleaning of libraries (now 'make clean' in libraries/* works again)
Simon Marlow <marlowsd at gmail.com>**20090703114638
 Ignore-this: b3af731d50ff5bfbd453f94aa40cb92c
] 
[FIX #2677
Manuel M T Chakravarty <chak at cse.unsw.edu.au>**20090707055442
 Ignore-this: e224dd09d0d1c9ec4f3b46c7accb8d57
] 
[Update driver/Makefile for the new build system
Ian Lynagh <igloo at earth.li>**20090705204041] 
[Fix generational GC bug (#3348)
Simon Marlow <marlowsd at gmail.com>**20090706112227
 Ignore-this: 5938338efa0ad1550968c664a5a76f31
] 
[Windows fixes to build system: use the 'find' and 'sort' found by configure
simonpj at microsoft.com**20090706103413
 Ignore-this: a96197917f388a637118bafefb427495
 
 The build system should use 'find' and 'sort' that are discovered by
 configure, not the ones in your path.  On Windows the ones in your path
 might well be the non-Unixy Windows versions.
 
 This patch fixes the ones I tripped over. There may be more.
 
] 
[Follow Cabal changes
Ian Lynagh <igloo at earth.li>**20090705180414] 
[Update TODO list
Ian Lynagh <igloo at earth.li>**20090705165009] 
[Make -fext-core a dynamic flag (it was a static flag)
Ian Lynagh <igloo at earth.li>**20090705132420] 
[For now, use -fno-warn-unused-do-bind when building the libraries
Ian Lynagh <igloo at earth.li>**20090704210654] 
[Make changes to -fwarn-unused-do-bind and -fwarn-wrong-do-bind suggested by SPJ
Max Bolingbroke <batterseapower at hotmail.com>**20090702150943
 Ignore-this: 595368298d2e11623c0bd280ff89d8de
] 
[Support for -fwarn-unused-do-bind and -fwarn-wrong-do-bind, as per #3263
Max Bolingbroke <batterseapower at hotmail.com>**20090701200344
 Ignore-this: 511117ffc10d4b656e530b751559b8b8
] 
[Improved infrastructure for fast-rebuilding of parts of the tree
Simon Marlow <marlowsd at gmail.com>**20090703074527
 Ignore-this: ab348d0988d8bbc28c2b4babbd6bbfb8
 
 e.g.
 
   cd compiler
   make FAST=YES stage1/build/HscTypes.o
 
 builds just the specified .o file, without rebuilding dependencies,
 and omitting some of the makefile phases.  FAST=YES works anywhere, to
 omit depenencies and phases.  'make fast' is shorthand for 'make
 all FAST=YES'.
] 
[Fix Trac #3342: missed zonking in TcHsSyn
simonpj at microsoft.com**20090702124331
 Ignore-this: 9b97b2142dfc665b503f59df7c55dd17
 
 The type in a ViewPat wasn't being zonked.  Easily fixed.
 
] 
[Type synonym families may be nullary
Manuel M T Chakravarty <chak at cse.unsw.edu.au>**20090702084826
 Ignore-this: bcfe6ed62c901206daf5a5088890bbea
] 
[New syntax for GADT-style record declarations, and associated refactoring
simonpj at microsoft.com**20090702094657
 Ignore-this: bd9817230d3773b3b01fae3d7f04c57d
 
 The main purpose of this patch is to fix Trac #3306, by fleshing out the
 syntax for GADT-style record declraations so that you have a context in 
 the type.  The new form is
    data T a where
      MkT :: forall a. Eq a => { x,y :: !a } -> T a
 See discussion on the Trac ticket.
 
 The old form is still allowed, but give a deprecation warning.
 
 When we remove the old form we'll also get rid of the one reduce/reduce
 error in the grammar. Hurrah!
 
 While I was at it, I failed as usual to resist the temptation to do lots of
 refactoring.  The parsing of data/type declarations is now much simpler and
 more uniform.  Less code, less chance of errors, and more functionality.
 Took longer than I planned, though.
 
 ConDecl has record syntax, but it was not being used consistently, so I
 pushed that through the compiler.
 
] 
[White space only
simonpj at microsoft.com**20090702094627
 Ignore-this: 19f654cbf371c8dcc6517fd4934855b4
] 
[Comments only
simonpj at microsoft.com**20090702094531
 Ignore-this: 384fc2729c7c50a1680775a1f9ff89e4
] 
[Look through Notes when matching
simonpj at microsoft.com**20090702094444
 Ignore-this: 7daea81e905ec6061d3e0fd588d7e61b
] 
[FIX #3197
Manuel M T Chakravarty <chak at cse.unsw.edu.au>**20090702070905
 Ignore-this: ebf829f0ae025e82bccdfa4345828ffe
] 
[Fix #2197 (properly this time)
Simon Marlow <marlowsd at gmail.com>**20090701122354
 Ignore-this: 39b6e4b0bcdd8c2f4660f976b7db768d
 
 $ ./inplace/bin/ghc-stage2 --interactive
 GHCi, version 6.11.20090701: http://www.haskell.org/ghc/  :? for help
 ghc-stage2: GHCi cannot be used when compiled with -prof
 [1]    32473 exit 1     ./inplace/bin/ghc-stage2 --interactive
] 
[make GhcProfiled work, and add a "prof" flavour to build.mk
Simon Marlow <marlowsd at gmail.com>**20090701114211
 Ignore-this: 386d347e4ad8b6c2bd40a2ba7da31ba6
 
 Building a profiled GHC is as simple as adding
 
 GhcLibWays += p
 GhcProfiled = YES
 
 to your build.mk and saying 'make'.  Then you have a profiled
 inplace/bin/ghc-stage2.
] 
[remove unnecessary $(RM)s
Simon Marlow <marlowsd at gmail.com>**20090701110609
 Ignore-this: f326ec8931d0d484a66b67ce1270cc6e
] 
['make html' in a library builds the Haddock docs
Simon Marlow <marlowsd at gmail.com>**20090630111137
 Ignore-this: 781bf10e2d4bca23b7f70c6f0465d120
] 
[fix GC bug introduced with the C finalizer support
Simon Marlow <marlowsd at gmail.com>**20090630080834
 Ignore-this: 3567e3adb5ae4a5dcbce81733487f348
] 
[Add a configure test for whether or not __mingw_vfprintf exists
Ian Lynagh <igloo at earth.li>**20090627150501] 
[Fix #3319, and do various tidyups at the same time
Simon Marlow <marlowsd at gmail.com>**20090626095421
 Ignore-this: ea54175f6bd49e101d7b33392764f643
  - converting a THSyn FFI declaration to HsDecl was broken; fixed
  - pretty-printing of FFI declarations was variously bogus; fixed
  - there was an unused "library" field in CImport; removed
] 
[rename cache variable to keep recent autoconfs happy
Ross Paterson <ross at soi.city.ac.uk>**20090626131410
 Ignore-this: 187091bbe78f2b14402162acfb98180f
] 
[TAG 2009-06-25
Ian Lynagh <igloo at earth.li>**20090625155528] 
[TAG 2009-06-25
Ian Lynagh <igloo at earth.li>**20090625155514] 
[Add buildinfo files to the bindist
Ian Lynagh <igloo at earth.li>**20090625132220] 
[Fix Trac #3323: naughty record selectors again
simonpj at microsoft.com**20090625072340
 Ignore-this: 5ea70e631a2104ae7bf139f89a91a63a
 
 I boobed when I decoupled record selectors from their data types.
 The most straightforward and robust fix means attaching the TyCon
 of a record selector to its IfaceIdInfo, so 
 
    you'll need to rebuild all .hi files
 
 That said, the fix is easy.
 
] 
[propagate the result of atomically properly (fixes #3049)
Simon Marlow <marlowsd at gmail.com>**20090624141530
 Ignore-this: 419d29c24d280799e44ee8248f27c606
] 
[Make C and CMM objects way-dependent
Ian Lynagh <igloo at earth.li>**20090624134531
 In particular, in the integer-gmp package the C and CMM code depends
 on the size of STG structures, which vary between ways.
] 
[add debug_p and thr_debug_p to $(ALL_WAYS)
Simon Marlow <marlowsd at gmail.com>**20090624110255
 Ignore-this: 6f4aebb8b276b8ec5d77ae6a809b0a6b
] 
[Fix buffering problem when GHCi is using the new IO library
Simon Marlow <marlowsd at gmail.com>**20090623142623
 Ignore-this: 54c78173244203852e27156df139c9f0
 Behind the scenes, the new IO library always does buffering for read
 Handles regardless of NoBuffering.  Normally this isn't visible, but
 it causes a problem in GHCi where there are two stdin Handles.
 
 This should fix those ghci test failures that sprung up in full
 testsuite runs recently.
] 
[Optimise the %.hi : %.o rule
Simon Marlow <marlowsd at gmail.com>**20090623124901
 Ignore-this: 4c467d6b7ae90243429951a4f54ff027
 Previously this rule had a sanity check for the existence of the .o
 file.  However, the sanity check is expensive, especially on Windows,
 because it requires spawning a shell.  So now we use an empty command
 here.
 
 This change reduced the time to do 'make' in an up-to-date tree on
 Windows from 33s to 16s for me.  (the actual saving depends on how
 much rebuilding you've been doing, and how many .hi files are older
 than their .o files).
 
 The comments in this file now describe various versions of the rule
 that don't work.
] 
[fix comment
Simon Marlow <marlowsd at gmail.com>**20090622145249
 Ignore-this: 17950b7877d90170ea3fd12f98a9fe02
] 
[Add boot-pkgs and packages to the source dists
Ian Lynagh <igloo at earth.li>**20090623224516] 
[Fix the GHCi debugger so that it can recognise Integers again
Ian Lynagh <igloo at earth.li>**20090623001946] 
[Follow Integer changes
Ian Lynagh <igloo at earth.li>**20090622224423] 
[Add the integer package
Ian Lynagh <igloo at earth.li>**20090622221716
 integer-gmp's Integer is now wrapped by an Integer type in integer.
] 
[follow change in System.Posix.Internals.c_open
Simon Marlow <marlowsd at gmail.com>**20090622140724
 Ignore-this: 1cc3370defcfbbd2ccec1f6aba193e6
] 
[fix 'make 1'
Simon Marlow <marlowsd at gmail.com>**20090617140657
 Ignore-this: 16ba87f7ffc7dd8bd4b738ed9f843687
] 
[remove unused cruft
Simon Marlow <marlowsd at gmail.com>**20090603143348
 Ignore-this: 4daebb56f61c4391823c12a2705135
] 
[Add a couple more symbols to the Linker.c table
Ian Lynagh <igloo at earth.li>**20090622144443
 Fixes ghci loading gmp on Windows
] 
[makefile tweak
Ian Lynagh <igloo at earth.li>**20090617121711] 
[Add an _EXTRA_OBJS variable when linking packages
Ian Lynagh <igloo at earth.li>**20090616231750] 
[Remove more GMP bits
Ian Lynagh <igloo at earth.li>**20090616173712] 
[Add a #endif back that was accidentally removed from package.conf.in
Ian Lynagh <igloo at earth.li>**20090616170417] 
[Make sure we aren't passing -Werror in the CFLAGS for configure scripts
Ian Lynagh <igloo at earth.li>**20090615214758
 When configure tests for a feature it may not generate warning-free C
 code, and thus may think that the feature doesn't exist if -Werror is
 on.
] 
[Pass CFLAGS and LDFLAGS to configure scripts
Ian Lynagh <igloo at earth.li>**20090615201604] 
[.cmm rules need to depend on $$($1_$2_HC_DEP), not $$($1_$2_HC)
Ian Lynagh <igloo at earth.li>**20090615133357] 
[Move gmp into libraries/integer-gmp
Ian Lynagh <igloo at earth.li>**20090614183150] 
[The IO type has moved to GHC.Types in ghc-prim
Ian Lynagh <igloo at earth.li>**20090620155154] 
[Fix the way in the +RTS --info output
Ian Lynagh <igloo at earth.li>**20090620142600] 
[Set DELETE_ON_ERROR in ghc.mk
Ian Lynagh <igloo at earth.li>**20090617121806] 
[Fix the ghci wrapper
Ian Lynagh <igloo at earth.li>**20090616182501
 The ${1+"$@"} was being evaluated by make, rather than being escaped.
] 
[Fix #3132: a case of bogus code generation
Simon Marlow <marlowsd at gmail.com>**20090618090718
 Ignore-this: 7c9f7d649ea6baf9422c97f6c95ecc81
] 
[Fix #3279, #3288: fix crash encountered when calling unblock inside unsafePerformIO
Simon Marlow <marlowsd at gmail.com>**20090616152455
 Ignore-this: 79b89712df9f87b239c41e469c8745c8
 See comments for details
] 
[drop packedstring; it is no longer required by template-haskell
Simon Marlow <marlowsd at gmail.com>**20090518120957
 Ignore-this: bd2e52eac8372b53a65e9dbd0d8ae46f
] 
[suggest "cd <dir>; make help"
Simon Marlow <marlowsd at gmail.com>**20090616085708
 Ignore-this: 4ea0fcb9ab613b1b29daaf4881f8edb6
] 
[Add support for 'make help' in subdirectories
Simon Marlow <marlowsd at gmail.com>**20090616085341
 Ignore-this: 7a3f80690e8e9a9094096aa4cfecfa8b
 Including help for directory-specific targets, such as 'make 1' in ghc
] 
[mention 'make {html,ps,pdf}'
Simon Marlow <marlowsd at gmail.com>**20090616085302
 Ignore-this: af8e9abe23a903a14e99711b631abc1d
] 
[eliminate "warning: overriding commnds..." from make when we're cleaning
Simon Marlow <marlowsd at gmail.com>**20090616084451
 Ignore-this: 1ac620ad71d6e89313f544be1d94f6c3
] 
[Add 'make help', displaying a list of useful make targets
Simon Marlow <marlowsd at gmail.com>**20090615140008
 Ignore-this: e6aae72e011eb668bbb2cff677c11a02
] 
[Add 'make fast' which omits deps (for a library) and some of the phases
Simon Marlow <marlowsd at gmail.com>**20090615135801
 Ignore-this: ec6f7a63fbfd4d6881f0dc2931705da9
] 
[add the missing final row of dashes in the success message
Simon Marlow <marlowsd at gmail.com>**20090615135716
 Ignore-this: c173af64e8bfb4e50e2fa377c44031d8
] 
['make 1' in libraries builds just the stage1 libs
Simon Marlow <marlowsd at gmail.com>**20090615135651
 Ignore-this: 50d35c045f56575de99c4c8a644bd538
 i.e. not dph, and hence not stage2
] 
[add 'make stage1_libs', to make just the stage 1 libs
Simon Marlow <marlowsd at gmail.com>**20090615135532
 Ignore-this: 5bf5f3ff554f47fd6e22dd13a1729c2d
 i.e. not dph, and hence not the stage 2 compiler.
] 
[copyFileWithHeader: use binary Handles
Simon Marlow <marlowsd at gmail.com>**20090615110545
 Ignore-this: ae9bb5087317a20b9caefec9419c4a69
 Fixes failure when Haddocking Data.Monoid in libraries/base
] 
[Update a few points about shared libs in other sections
Duncan Coutts <duncan at well-typed.com>**20090704212212
 And add links to the new shared libs section.
] 
[Document -dynload flag. Also add it and -shared to the flags reference.
Duncan Coutts <duncan at well-typed.com>**20090704212119] 
[Add new section on using shared libs
Duncan Coutts <duncan at well-typed.com>**20090704212003] 
[Document foreign import prim in the user guide
Duncan Coutts <duncan at well-typed.com>**20090704180547
 Basically just stat that it exists and refer to the ghc dev wiki
 for the details, because we don't really want people using it.
] 
[Stop building the rts against gmp
Duncan Coutts <duncan at well-typed.com>**20090613191956
 Nothing from gmp is used in the rts anymore.
] 
[Remove the implementation of gmp primops from the rts
Duncan Coutts <duncan at well-typed.com>**20090613191851] 
[Stop setting the gmp memory functions in the rts
Duncan Coutts <duncan at well-typed.com>**20090613165841
 and remove the implementations of stg(Alloc|Realloc|Dealloc)ForGMP
] 
[Remove the gmp/Integer primops from the compiler
Duncan Coutts <duncan at well-typed.com>**20090613142410
 The implementations are still in the rts.
] 
[Exports a few rts things we need for cmm code in external packages
Duncan Coutts <duncan at well-typed.com>**20090613170622
 In particular we need alloc_blocks and alloc_blocks_lim for MAYBE_GC.
 The gmp cmm primops also use stg_ARR_WORDS_info.
] 
[Add and export rts_unsafeGetMyCapability from rts
Duncan Coutts <duncan at well-typed.com>**20090612114156
 We need this, or something equivalent, to be able to implement
 stgAllocForGMP outside of the rts. That's because we want to use
 allocateLocal which allocates from the given capability without
 having to take any locks. In the gmp primops we're basically in
 an unsafe foreign call, that is a context where we hold a current
 capability. So it's safe for us to use allocateLocal. We just
 need a way to get the current capability. The method to get the
 current capability varies depends on whether we're using the
 threaded rts or not. When stgAllocForGMP is built inside the rts
 that's ok because we can do it conditionally on THREADED_RTS.
 Outside the rts we need a single api we can call without knowing
 if we're talking to a threaded rts or not, hence this addition.
] 
[Put the CMM objects in the GHCi library too
Ian Lynagh <igloo at earth.li>**20090611162038] 
[Add rules for building .cmm files in libraries
Ian Lynagh <igloo at earth.li>**20090611134057] 
[Require GHCForeignImportPrim for "foreign import prim"
Duncan Coutts <duncan at well-typed.com>**20090611202647
 In practise currently you also need UnliftedFFITypes, however
 the restriction to just unlifted types may be lifted in future.
] 
[Add missing StgPrimCallOp case in repCCallConv
Duncan Coutts <duncan at well-typed.com>**20090611165905
 We don't handle "foreign import prim" in TH stuff. 
] 
[Add missing StgPrimCallOp case to isSimpleOp
Ian Lynagh <igloo at earth.li>**20090611122727] 
[Reverse the safe/unsafe requirement on foreign import prim
Duncan Coutts <duncan at well-typed.com>**20090611115243
 The safe/unsafe annotation doesn't currently mean anything for prim.
 Just in case we decide it means something later it's better to stick
 to using one or the other consistently. We decided that using safe
 is the better one to require (and it's also the default).
] 
[Add PrimCall to the STG layer and update Core -> STG translation
Duncan Coutts <duncan at well-typed.com>**20090609151155
 It adds a third case to StgOp which already hold StgPrimOp and StgFCallOp.
 The code generation for the new StgPrimCallOp case is almost exactly the
 same as for out-of-line primops. They now share the tailCallPrim function.
 In the Core -> STG translation we map foreign calls using the "prim"
 calling convention to the StgPrimCallOp case. This is because in Core we
 represent prim calls using the ForeignCall stuff. At the STG level however
 the prim calls are really much more like primops than foreign calls.
] 
[Desugaring for "foreign import prim"
Duncan Coutts <duncan at well-typed.com>**20090609105945
 Unlike normal foreign imports which desugar into a separate worker and
 wrapper, we use just a single wrapper decleration. The representation
 in Core of the call is currently as a foreign call. This means the
 args are all treated as fully strict. This is ok at the moment because
 we restrict the types for foreign import prim to be of unboxed types,
 however in future we may want to make prim imports be the normal cmm
 calling convention for Haskell functions, in which case we would not
 be able to assume all args are strict. At that point it may make more
 sense to represent cmm/prim calls distinct from foreign calls, and
 more like the we the existing PrimOp calls are handled.
] 
[Typechecking for "foreign import prim"
Duncan Coutts <duncan at well-typed.com>**20090609104826
 The main restriction is that all args and results must be unboxed types.
 In particular we allow unboxed tuple results (which is a primary
 motivation for the whole feature). The normal rules apply about
 "void rep" result types like State#. We only allow "prim" calling
 convention for import, not export. The other forms of import, "dynamic",
 "wrapper" and data label are banned as a conseqence of checking that the
 imported name is a valid C string. We currently require prim imports to
 be marked unsafe, though this is essentially arbitrary as the safety
 information is unused.
] 
[Lexing and parsing for "foreign import prim"
Duncan Coutts <duncan at well-typed.com>**20090609104536
 We only allow simple function label imports, not the normal complicated
 business with "wrapper" "dynamic" or data label "&var" imports.
] 
[Add new FFI calling convention "prim"
Duncan Coutts <duncan at well-typed.com>**20090609104403
 First in a series of patches to add the feature.
 This patch just adds PrimCallConv to the CCallConv type.
] 
[Include runghc and unlit in bindists
Ian Lynagh <igloo at earth.li>**20090613161707] 
[Improve bindist testing
Ian Lynagh <igloo at earth.li>**20090613161516
 We now also test runghc and unlit
] 
[Remove the haskeline-specific hacks from ghc-cabal
Ian Lynagh <igloo at earth.li>**20090612235823
 Now that base does -liconv when it is necessary, it is no longer
 necessary for haskeline to do it as well, as haskeline depends on base.
 Thus we don't need the haskeline-specific hacks in ghc-cabal any more.
] 
[Remove library buildinfo files when cleaning
Ian Lynagh <igloo at earth.li>**20090612233818] 
[Update symbol names; fixes the build on OSX
Ian Lynagh <igloo at earth.li>**20090612194029] 
[don't check for stack underflow if we just had an overflow
Simon Marlow <marlowsd at gmail.com>**20090610104748
 Ignore-this: 1c52dd362ec23bdec26012c23d5049e6
] 
[pprExpr: don't add extra parens around [a..b] in an argument position
Simon Marlow <marlowsd at gmail.com>**20090608082705
 Ignore-this: b0e25aa489a313535234571d9d8633a8
 test is tcfail205
] 
[Changes for the new IO library, mainly base-package modules moving around
Simon Marlow <marlowsd at gmail.com>**20090529131822
 Ignore-this: 7c542c1d82b18500118b8b198c9e2be0
] 
[Fix the compiler-hs-dependency's
Ian Lynagh <igloo at earth.li>**20090612104827
 We needed some more $s to delay evaluation until the values are
 available, and the calls needed to be later in the ghc.mk so that
 compiler_stage2_WAYS etc are defined.
] 
[Doc building is now controlled by sensible variables
Ian Lynagh <igloo at earth.li>**20090611162858] 
[HC bootstrapping now works
Ian Lynagh <igloo at earth.li>**20090611162756] 
[bindists are now done
Ian Lynagh <igloo at earth.li>**20090611162730] 
[Add some $s to rules/build-package.mk for consistency
Ian Lynagh <igloo at earth.li>**20090611130144] 
[Deprecate the threadsafe kind of foreign import
Duncan Coutts <duncan at well-typed.com>**20090611123441] 
[Remove __encodeDouble and __encodeFloat from the rts
Duncan Coutts <duncan at well-typed.com>**20090611154852
 They now live in the integer-gmp package.
] 
[Add recently added lib dirs to the darcs boring file
Duncan Coutts <duncan at well-typed.com>**20090611112824] 
[Fix the flag used to force linking when we are making a shared library
Duncan Coutts <duncan at well-typed.com>**20090604121652
 This is a correction to the patch:
 * When linking a shared library with --make, always do the link step
 which used the wrong flag in making the decision. It used -dynamic
 whereas the correct flag is -shared.
] 
[Check we're not using stdcall in foreign export on unsupported platforms
Duncan Coutts <duncan at well-typed.com>**20090608145509
 It's already checked for foreign import, but was missing for export.
] 
[Make Windows bindists and installers work in the new build system
Ian Lynagh <igloo at earth.li>**20090610181825] 
[Change GHC_OPTIONS to OPTIONS_GHC
Ian Lynagh <igloo at earth.li>**20090610124611] 
[Define _BSD_SOURCE in Stg.h
Ian Lynagh <igloo at earth.li>**20090609121705
 This means that, on Linux, we get functions like gamma defined when we
 #include math.h
] 
[Put "%expect 0" directives in the .y files
Ian Lynagh <igloo at earth.li>**20090608203935
 With the exception of GHC's main Parser.y(.pp), which has 2
 reduce/reduce conflicts
] 
[Remove the various mp registers from the StgRegTable
Duncan Coutts <duncan at well-typed.com>**20090610173609
 No longer need them as temp vars in the cmm primop implementations.
] 
[Convert the gmp cmm primops to use local stack allocation
Duncan Coutts <duncan at well-typed.com>**20090610173026
 Using global temp vars is really ugly and in the threaded case it
 needs slots in the StgRegTable. It'd also be pretty silly once we
 move the cmm primops out of the rts, into the integer-gmp package.
] 
[Make killThread# cmm primop use local stack allocation
Duncan Coutts <duncan at well-typed.com>**20090610172215
 It using the mp_tmp_w register/global as a convenient temporary
 variable. This is naughty because those vars are supposed to be
 for gmp. Also, we want to remove the gmp temp vars so we must
 now use a local stack slot instead.
] 
[Update to libffi 3.0.8; fixes trac #3119
Ian Lynagh <igloo at earth.li>**20090605171704] 
[Fix the libffi Makefile
Ian Lynagh <igloo at earth.li>**20090605160538] 
[Add a README saying where libffi tarballs come from
Ian Lynagh <igloo at earth.li>**20090605160431] 
[ghc-pkg now takes a verbosity argument
Ian Lynagh <igloo at earth.li>**20090605151544] 
[Follow Cabal changes
Ian Lynagh <igloo at earth.li>**20090605131324] 
[Update the docs on how you bind unlifted types in let/where clauses
Ian Lynagh <igloo at earth.li>**20090605122929] 
[Document -fwarn-lazy-unlifted-bindings
Ian Lynagh <igloo at earth.li>**20090605122348] 
[Fix typo
Ian Lynagh <igloo at earth.li>**20090605122048] 
[Mention that generalised list comprehensions are enabled with -XTransformListComp
simonpj at microsoft.com**20090605140009
 Ignore-this: 4cb8b8153a2b072904c97a3bdd1ce05e
] 
[Make a proper Opt_WarnLazyUnliftedBindings warning, with a flag etc
Ian Lynagh <igloo at earth.li>**20090605114316] 
[Fix ghc-cabal, so that GHC.Prim gets registered when we install
Ian Lynagh <igloo at earth.li>**20090604124501] 
[fix a warning
Simon Marlow <marlowsd at gmail.com>**20090604093539
 Ignore-this: 90713a7abf991d73c352cbd5a4012d5d
] 
[Lock the StablePtr table during GC
Simon Marlow <marlowsd at gmail.com>**20090604090553
 Ignore-this: 9e9705892b80a8226fd37df04d9c606d
 Allows hs_free_fun_ptr() to be called by a separate thread
] 
[fix $(TOP)
Simon Marlow <marlowsd at gmail.com>**20090604084824
 Ignore-this: abfe797881428381eebf6b2036a83a7c
] 
[remove a prototype that shouldn't be here
Simon Marlow <marlowsd at gmail.com>**20090604084749
 Ignore-this: a0fda8f38b5674fcfa04f30b01d4e846
] 
[Merge the TODO lists in ghc.mk
Ian Lynagh <igloo at earth.li>**20090603121209] 
[Tighten up the DocBook XSL stylesheet test
Simon Marlow <marlowsd at gmail.com>**20090603101244
 Ignore-this: e68f96360250831634c77914afe11566
 It wasn't failing even when the DTD was not found.
] 
[fix logic for BUID_DOCBOOK_HTML
Simon Marlow <marlowsd at gmail.com>**20090603092313
 Ignore-this: f255bbaf00713b998370c810e7ab75d3
] 
[Allow RULES for seq, and exploit them
simonpj at microsoft.com**20090603092956
 Ignore-this: 7d72898475a3a76fea48c9a85ea2dfd
 
 Roman found situations where he had
       case (f n) of _ -> e
 where he knew that f (which was strict in n) would terminate if n did.
 Notice that the result of (f n) is discarded. So it makes sense to
 transform to
       case n of _ -> e
 
 Rather than attempt some general analysis to support this, I've added
 enough support that you can do this using a rewrite rule:
 
   RULE "f/seq" forall n.  seq (f n) e = seq n e
 
 You write that rule.  When GHC sees a case expression that discards
 its result, it mentally transforms it to a call to 'seq' and looks for
 a RULE.  (This is done in Simplify.rebuildCase.)  As usual, the
 correctness of the rule is up to you.
 
 This patch implements the extra stuff.  I have not documented it explicitly
 in the user manual yet... let's see how useful it is first.
 
 The patch looks bigger than it is, because
   a) Comments; see esp MkId Note [seqId magic]
 
   b) Some refactoring.  Notably, I moved the special desugaring for
      seq from MkCore back into DsUtils where it properly belongs.
      (It's really a desugaring thing, not a CoreSyn invariant.)
 
   c) Annoyingly, in a RULE left-hand side we need to be careful that
      the magical desugaring done in MkId Note [seqId magic] item (c) 
      is *not* done on the LHS of a rule. Or rather, we arrange to 
      un-do it, in DsBinds.decomposeRuleLhs.
 
 
] 
[Remove the unused remains of __decodeFloat
Ian Lynagh <igloo at earth.li>**20090602182211] 
[Remove old GUM/GranSim code
Simon Marlow <marlowsd at gmail.com>**20090602140233
 Ignore-this: 9c03eaaf072122118fa4d9cb6db684ca
] 
[tidy up autoconfiguration of docbook stuff
Simon Marlow <marlowsd at gmail.com>**20090602134943
 Ignore-this: 967773e506bb00fe19c08831fb4e03a6
 
  * use --nonet, so xmllint and co don't go off trying to download
    stuff from the web
 
  * use the http:// reference for the stylesheet, so we don't have to
    search the filesystem for it (should speedup ./configure)
] 
[fix 'make sdist'
Simon Marlow <marlowsd at gmail.com>**20090602121618
 Ignore-this: 79da188afd5a22368e645a88c51237f1
] 
[Add a comment about why RM and RM_OPTS are not in config.mk
Ian Lynagh <igloo at earth.li>**20090602124700] 
[Follow the change in RM's definition in distrib/Makefile-bin-vars.in
Ian Lynagh <igloo at earth.li>**20090602124644] 
[Fix Trac #3265: type operators in type/class declarations
simonpj at microsoft.com**20090602133706
 Ignore-this: 17bc1c59defa189311171155f36562ab
 
 We should accept these:
 
    data a :*: b = ....
 or
    data (:*:) a b = ...
 
 only if -XTypeOperators is in force.  And similarly class decls.
 
 This patch fixes the problem.  It uses the slightly-nasty OccName.isSymOcc,
 but the only way to avoid that is to cach the result in OccNames which seems
 overkill to us.
 
] 
[Use -w when compiling libffi, to stop -Werror failures
Ian Lynagh <igloo at earth.li>**20090602113408] 
[Add a section "Multi-threading and the FFI"
Simon Marlow <marlowsd at gmail.com>**20090602102352
 Ignore-this: 767a942fa119cd1ea2eb13584667ac27
 and collect all the information about multi-threaded FFI use into it.
] 
[emit a helpful message if you say 'make html' and BUILD_DOCBOOK_HTML=NO
Simon Marlow <marlowsd at gmail.com>**20090602095936
 Ignore-this: a50f9799cc1ff7a5b7e1b0d9386ca3ef
] 
[mention documentation tools in the summary; tidy up formatting
Simon Marlow <marlowsd at gmail.com>**20090602090345
 Ignore-this: 6227ba9fc0f97b3cf796785356a10b37
] 
[depend on mk/project.mk appropriately
Simon Marlow <marlowsd at gmail.com>**20090529151934
 Ignore-this: 17517fcc36b4cafc1c4337a356e4a88c
] 
[fix comment
Simon Marlow <marlowsd at gmail.com>**20090529113028
 Ignore-this: 1391a669e3d253b3174ffae0970eee89
] 
[Unquote a $(LN_S) in ghc/ghc.mk
Ian Lynagh <igloo at earth.li>**20090530233356] 
[$(XARGS) might include arguments, so don't quote it in makefiles
Ian Lynagh <igloo at earth.li>**20090530233133] 
[Quote commands that we run, so they work if there are space in their paths
Ian Lynagh <igloo at earth.li>**20090530220021
 I've also added some missing $s to some makefiles. These aren't
 technically necessary, but it's nice to be consistent.
] 
[Remove some redundant code from hi-rule.mk
Ian Lynagh <igloo at earth.li>**20090530193729] 
[make the clean_libraries target work, so you can "make clean" in libraries/
Ian Lynagh <igloo at earth.li>**20090530184750] 
[fix pprDynamicLinkerAsmLabel for Mac OS X x86_64
Austin Seipp <as at nijoruj.org>**20090523090901
 Ignore-this: 2cef271f4ca27315bd8b0df9c1bc4343
] 
[Make clean_libraries in the same way that we make all_libraries
Ian Lynagh <igloo at earth.li>**20090529180150] 
[Tweak mk/sub-makefile.mk
Ian Lynagh <igloo at earth.li>**20090529175748] 
[Implement -XMonoLocalBinds: a radical new flag
simonpj at microsoft.com**20090529131137
 Ignore-this: b52744bdde2e8ea52a9b6d4374a3e049
 
 The new flag -XMonoLocalBinds tells GHC not to generalise nested
 bindings in let or where clauses, unless there is a type signature,
 in which case we use it.  
 
 I'm thinking about whether this might actually be a good direction for
 Haskell go to in, although it seems pretty radical.  Anyway, the flag
 is easy to implement (look at how few lines change), and having it
 will allow us to experiement with and without.
 
 Just for the record, below are the changes required in the boot 
 libraries -- ie the places where.  Not quite as minimal as I'd hoped,
 but the changes fall into a few standard patterns, and most represent
 (in my opinion) sytlistic improvements.  I will not push these patches,
 however.
 
 == running darcs what -s --repodir libraries/base
 M ./Control/Arrow.hs -2 +4
 M ./Data/Data.hs -7 +22
 M ./System/IO/Error.hs +1
 M ./Text/ParserCombinators/ReadP.hs +1
 == running darcs what -s --repodir libraries/bytestring
 M ./Data/ByteString/Char8.hs -1 +2
 M ./Data/ByteString/Unsafe.hs +1
 == running darcs what -s --repodir libraries/Cabal
 M ./Distribution/PackageDescription.hs -2 +6
 M ./Distribution/PackageDescription/Check.hs +3
 M ./Distribution/PackageDescription/Configuration.hs -1 +3
 M ./Distribution/ParseUtils.hs -2 +4
 M ./Distribution/Simple/Command.hs -1 +4
 M ./Distribution/Simple/Setup.hs -12 +24
 M ./Distribution/Simple/UserHooks.hs -1 +5
 == running darcs what -s --repodir libraries/containers
 M ./Data/IntMap.hs -2 +2
 == running darcs what -s --repodir libraries/dph
 M ./dph-base/Data/Array/Parallel/Arr/BBArr.hs -1 +3
 M ./dph-base/Data/Array/Parallel/Arr/BUArr.hs -2 +4
 M ./dph-prim-par/Data/Array/Parallel/Unlifted/Distributed/Arrays.hs -6 +10
 M ./dph-prim-par/Data/Array/Parallel/Unlifted/Distributed/Combinators.hs -3 +6
 M ./dph-prim-seq/Data/Array/Parallel/Unlifted/Sequential/Flat/Permute.hs -2 +4
 == running darcs what -s --repodir libraries/syb
 M ./Data/Generics/Twins.hs -5 +18
 
 
] 
[don't shrink the stack smaller than the value set by +RTS -k<size>
Simon Marlow <marlowsd at gmail.com>**20090529090827
 Ignore-this: 4034b691895bc2fb3a1eaa2195a9ae31
] 
[Fix bug in previous change: allocate the correct size
Simon Marlow <marlowsd at gmail.com>**20090529090758
 Ignore-this: b591ad70cdaed2def46fb8d046f63539
] 
[Make haddocking depend on the library .a file
simonpj at microsoft.com**20090529084514
 Ignore-this: 233496beeea7a0ca0d8d21543c5050c7
 
 You can't Haddock a library until it's built. Previously that happened
 automatically because
   Haddock itself was built with stage2
   And all the libraries were built with stage1
 But now DPH is built with stage2, so Haddock can get to work too
 early.
 
 This patch adds the missing dependency (thanks to Simon M)
 
] 
[Fix Trac #3259: expose 'lazy' only after generating interface files
simonpj at microsoft.com**20090529072020
 Ignore-this: 3c762bda546981c4b4f01d28b8586ff8
 
 This patch fixes an insidious and long-standing bug in the way that
 parallelism is handled in GHC.  See Note [lazyId magic] in MkId.
 
 Here's the diagnosis, copied from the Trac ticket.  par is defined 
 in GHC.Conc thus:
 
     {-# INLINE par  #-}
     par :: a -> b -> b
     par  x y = case (par# x) of { _ -> lazy y }
 
     -- The reason for the strange "lazy" call is that it fools the
     -- compiler into thinking that pseq and par are non-strict in
     -- their second argument (even if it inlines pseq/par at the call
     -- site).  If it thinks par is strict in "y", then it often
     -- evaluates "y" before "x", which is totally wrong.
 
 The function lazy is the identity function, but it is inlined only
 after strictness analysis, and (via some magic) pretends to be
 lazy. Hence par pretends to be lazy too.
 
 The trouble is that both par and lazy are inlined into your definition
 of parallelise, so that the unfolding for parallelise (exposed in
 Parallelise.hi) does not use lazy at all. Then when compiling Main,
 parallelise is in turn inlined (before strictness analysis), and so
 the strictness analyser sees too much.
 
 This was all sloppy thinking on my part. Inlining lazy after
 strictness analysis works fine for the current module, but not for
 importing modules.
 
 The fix implemented by this patch is to inline 'lazy' in CorePrep,
 not in WorkWrap. That way interface files never see the inlined version.
 
 The downside is that a little less optimisation may happen on programs
 that use 'lazy'.  And you'll only see this in the results -ddump-prep
 not in -ddump-simpl.  So KEEP AN EYE OUT (Simon and Satnam especially).
 Still, it should work properly now.  Certainly fixes #3259.
 
 
] 
[Fix Trac #3262: suppress name-shadow warning for _names
simonpj at microsoft.com**20090528152359
 Ignore-this: 482ee7e5039987c53b2755c8f61f3fe
 
 Adopt Max's suggestion for name shadowing, by suppressing shadowing
 warnings for variables starting with "_".  A tiny bit of refactoring
 along the way.
 
] 
[don't call Haskeline to read input when stdin is not a terminal
Simon Marlow <marlowsd at gmail.com>**20090528152651
 Ignore-this: 3810fe8dff7e0a8b4ec013f47e33cc4c
] 
[Fix handling of R_SPARC_UA32 relocations in linker
Ben.Lippmeier at anu.edu.au**20090528080509
   These refer to unaligned locations that need to be written
   byte-at-a-time. This fixes the SPARC ghci failures in 
   the current head.
] 
[Document the fact that Template Haskell type splices work
simonpj at microsoft.com**20090528165443
 Ignore-this: a3817bd84645acbe3c83ad04bbff06c3
] 
[Improve printing of Orig RdrNames
simonpj at microsoft.com**20090528165215
 Ignore-this: a00c57daf826176dbec85402a7982ef4
 
 In Tempate Haskell -ddump-splices, the "after" expression is populated 
 with RdrNames, many of which are Orig things.  We used to print these
 fully-qualified, but that's a bit heavy.
 
 This patch refactors the code a bit so that the same print-unqualified
 mechanism we use for Names also works for RdrNames.  Lots of comments
 too, because it took me a while to figure out how it all worked again.
 
] 
[Print more nicely in -ddump-splices
simonpj at microsoft.com**20090528165039
 Ignore-this: ffa4855ac1e95e45a057acae85ca75db
 
 When you say -ddump-splices, the "before" expression is now 
 
         *renamed* but not *typechecked"
 
 Reason (a) less typechecking crap
        (b) data constructors after type checking have been
 	   changed to their *wrappers*, and that makes them
 	   print always fully qualified
 
] 
[Fix Trac #3261: make default types play nice with -Werror
simonpj at microsoft.com**20090528164900
 Ignore-this: c6167edcb5c537cb0f08151f649c3eb2
 
 The trial-and-error for type defaults was not playing nicely with
 -Werror. The fix is simple.
 
] 
[Adjust error message slightly
simonpj at microsoft.com**20090528164802
 Ignore-this: c21f2ef9064fcf22f00e962f53a5f97
] 
[White space only
simonpj at microsoft.com**20090528164727
 Ignore-this: 355873c67330176455bc7d698190d956
] 
[Remove type-ambiguous (fromIntegral 0)::Int, replacing it with just 0
simonpj at microsoft.com**20090528164525
 Ignore-this: f09a0e7a2b4de20867036b7c8ee6f1d2
 
 This unnecessary ambiguity has been there for ages, and is now rejected
 by -Werror, after fixing #3261
 
] 
[Move getMainFun to TcRnDriver, trim DynFlags imports
simonpj at microsoft.com**20090528164436
 Ignore-this: a0cf27e74a916c13c4df77190d2e14b0
] 
[Comments only
simonpj at microsoft.com**20090528164329
 Ignore-this: 69b8edd4c3f8643ec9774a0f88af2c66
] 
[Comments about naming for data constructors
simonpj at microsoft.com**20090528164250
 Ignore-this: 8c31cbf597211b318dab96f3c728ac71
] 
[Remove dead code isHsVar
simonpj at microsoft.com**20090528092750
 Ignore-this: b19c8eb9f507e68d910515600a336e1c
] 
[Round stack size to a whole number of megablocks
Simon Marlow <marlowsd at gmail.com>**20090528133440
 Ignore-this: 6d7da9b80d7a6771365bd146201f102f
 This is not a bug fix, it just makes better use of memory
] 
[Fix #3156: ensure preconditions of splitLargeBlock()
Simon Marlow <marlowsd at gmail.com>**20090528133357
 Ignore-this: 5d7e7f345fe19123bf17aa1d2daa0e7b
] 
[fix it so that 'make' on its own works even if we're not building docs
Simon Marlow <marlowsd at gmail.com>**20090528111608
 Ignore-this: 92e9355de04733042403dc6814a3a146
] 
[Comments only
simonpj at microsoft.com**20090528075918
 Ignore-this: 14112a7b5e4d0b3b8763ce72d01bba00
] 
[Fix Trac #3013: multiple constructors in a GADT decl
simonpj at microsoft.com**20090528075306
 Ignore-this: fda39c50dd80e13d593e396133fd92c4
 
 Makes GADT syntax consistent by allowing multiple constructors
 to be given a single signature
    data T wehre
        A, B :: T
        C :: Int -> t
 
] 
[Separate flags -XDeriveFunctor, -XDeriveFoldable, -XDeriveTraversable
simonpj at microsoft.com**20090528075031
 Ignore-this: b5b6ce32b6d4e847a6f58de17dd1af54
 
 See Trac #2953. This patch implements a distinct flag for each extended
 class that may be automatically derived.  And I updated the user manual
 to reflect the fact that we can now derive Functor, Foldable, Traversable.
 
] 
[Add a comment
simonpj at microsoft.com**20090528072513
 Ignore-this: d278c8d49b299e376a8dbcdd940e1cfa
] 
[Follow vreg/hreg patch in X86_64 NCG
Ben.Lippmeier.anu.edu.au**20090527040101
 Ignore-this: f11f3d8ebfc33d3c012ce8d2cb09d076
] 
[Follow vreg/hreg patch in PPC NCG
Ben.Lippmeier at anu.edu.au**20090526105522] 
[Follow vreg/hreg patch in x86 NCG
Ben.Lippmeier at anu.edu.au**20090519095507
 Ignore-this: c4303cc12ddbdd38606c16a7e2fbc56c
] 
[Don't try and coalesce RealReg->RealReg moves
Ben.Lippmeier at anu.edu.au**20090519035528] 
[Split Reg into vreg/hreg and add register pairs
Ben.Lippmeier at anu.edu.au**20090518014444
 
  * The old Reg type is now split into VirtualReg and RealReg.
  * For the graph coloring allocator, the type of the register graph
    is now (Graph VirtualReg RegClass RealReg), which shows that it colors
    in nodes representing virtual regs with colors representing real regs.
    (as was intended)  
  * RealReg contains two contructors, RealRegSingle and RealRegPair,
    where RealRegPair is used to represent a SPARC double reg 
    constructed from two single precision FP regs. 
  * On SPARC we can now allocate double regs into an arbitrary register
    pair, instead of reserving some reg ranges to only hold float/double values. 
] 
[SPARC NCG: Fix available regs for graph allocator
Ben.Lippmeier at anu.edu.au**20090421014409] 
[Fix Trac #3221: renamer warnings for deriving clauses
simonpj at microsoft.com**20090527182157
 Ignore-this: a4a93f2928fd311c4950eb60277bf9e1
 
 This patch arranges to gather the variables used by 'deriving' clauses,
 so that unused bindings are correctly reported.
 
] 
[Template Haskell: allow type splices
simonpj at microsoft.com**20090527181242
 Ignore-this: 8beb8ab4f5857967ff33a4877c8931b
 
 At last!  Trac #1476 and #3177
 
 This patch extends Template Haskell by allowing splices in
 types.  For example
 
   f :: Int -> $(burble 3)
 
 A type splice should work anywhere a type is expected.  This feature
 has been long requested, and quite a while ago I'd re-engineered the
 type checker to make it easier, but had never got around to finishing
 the job.  With luck, this does it.
 
 There's a ToDo in the HsSpliceTy case of RnTypes.rnHsType, where I
 am not dealing properly with the used variables; but that's awaiting
 the refactoring of the way we report unused names.
 
 
 
] 
[Template Haskell: improve lifting for strings
simonpj at microsoft.com**20090527180840
 Ignore-this: 296fa4ede64a87cc66b8c7af0e35b66f
 
 When you have a (\s::String -> ....[| s |]....), the string 
 's' is lifted.  We used to get a chain of single-character 
 Cons nodes, correct but lots and lots of code.  
 
 This patch arranges to optimise that to a string literal. It does
 so in two places:
   a) In TcExpr, if we know that s::String, we generate liftString directly
   b) In DsMeta, if we find a list of character literals, we convert to
      a string.  This catches a few cases that (a) does not
 
 There an accompanying  patch in the template-haskell package, 
 adding Language.Haskell.TH.Syntax.liftString
 
 
 
] 
[Rename conDeclsNames to hsConDeclsNames, and export it
simonpj at microsoft.com**20090527180032
 Ignore-this: 304b8881445df43a7a98e17001500ba9
] 
[Comments about wiredInIds
simonpj at microsoft.com**20090527175603
 Ignore-this: 9f0910d37e75f7a91807a3b2e5b2d608
] 
[Wibble some comments to avoid haddock parse errors
Ian Lynagh <igloo at earth.li>**20090526192953] 
[Add a haddock target, for just building the haddock docs
Ian Lynagh <igloo at earth.li>**20090526190459] 
[Add some more $s to rules/haddock.mk for consistency
Ian Lynagh <igloo at earth.li>**20090526184127] 
[Fix haddocking
Ian Lynagh <igloo at earth.li>**20090526184034
 We were looking at HADDOCK_DOCS instead of $$(HADDOCK_DOCS)
] 
[Make the sed in configure.ac more portable
Ian Lynagh <igloo at earth.li>**20090525120021] 
[Remove legacy code that isn't used now that we require GHC >= 6.8
Ian Lynagh <igloo at earth.li>**20090524204412] 
[Remove unused variables
Ian Lynagh <igloo at earth.li>**20090524135350] 
[Remove unused variables
Ian Lynagh <igloo at earth.li>**20090524134753] 
[Be more precise about munging compiler/stage1/inplace-pkg-config
Ian Lynagh <igloo at earth.li>**20090524133439
 We were removing ".$(ProjectPatchLevel)" from anywhere in the file.
 However, it included absolute paths, so if you untar a source
 tarball into its default directory name, e.g.
 "6.11.$(ProjectPatchLevel)", then the sed would break the paths.
] 
[Use the more portable %lu rather than %zu
Ian Lynagh <igloo at earth.li>**20090524131504
 We now also need to cast the values to (unsigned long), as on some
 platforms sizeof returns (unsigned int).
] 
[Clean libraries/bootstrapping.conf
Ian Lynagh <igloo at earth.li>**20090524131454] 
[Fix warnings
Ian Lynagh <igloo at earth.li>**20090523231438] 
[Fix warnings in genprimopcode
Ian Lynagh <igloo at earth.li>**20090523222715] 
[Fix warnings in mkDerivedConstants
Ian Lynagh <igloo at earth.li>**20090523215836] 
[Fix warnings in ghc-cabal
Ian Lynagh <igloo at earth.li>**20090523213518] 
[Turn on warnings when validating
Ian Lynagh <igloo at earth.li>**20090523213451] 
[Fix configure
Ian Lynagh <igloo at earth.li>**20090523004231] 
[ghc_ge_607 is now always true
Ian Lynagh <igloo at earth.li>**20090523001643] 
[Sanity check the platforms we are given
Ian Lynagh <igloo at earth.li>**20090523000445] 
[Change how we find the host/build/target platforms
Ian Lynagh <igloo at earth.li>**20090522233022
 Rather than using the autoconf built-in stuff and mangling it, we
 now just ask the bootstrapping compiler what platform we are on.
 
 When doing a port of GHC, you need to specify the platform you are
 porting to.
 
 The minimum version of GHC required is now 6.8.
] 
[remove old todo comment
Simon Marlow <marlowsd at gmail.com>**20090520224427
 Ignore-this: 7dc72333d7f84d12a581514da368caa7
] 
[document -XUnicodeSyntax
Simon Marlow <marlowsd at gmail.com>**20090520223647
 Ignore-this: 343d54ebf27013c21e5dea1e8aab2740
] 
[export sysErrorBelch
Simon Marlow <marlowsd at gmail.com>**20090328191355] 
[ rm package.conf.inplace in distclean, not clean
Simon Marlow <simonmar at microsoft.com>**20090506195216] 
[#2197: try to detect when GHCi is compiled with -prof and emit an error message
Simon Marlow <simonmar at microsoft.com>**20090506194802] 
[fix typo
Simon Marlow <simonmar at microsoft.com>**20090328211518] 
[Remove hacky on-demand building of libraries/*/ghc.mk, put it back in sh boot
Simon Marlow <marlowsd at gmail.com>**20090522083351
 Ignore-this: fa8ada7f782776613aafc5a2825452f0
 Now that the clean rules don't require libraries/*/ghc.mk, we don't
 have to build them on demand.  And having them built on demand
 introduced a failure mode (where some libraries have ghc.mk and some
 don't).
] 
[Fix unregisterised bindists
Ian Lynagh <igloo at earth.li>**20090521223519] 
[Pass CFLAGS and LDFLAGS to libffi's configure
Ian Lynagh <igloo at earth.li>**20090521160210] 
[Don't overwrite the *OPTS/*Opts variables in mk/validate-settings.mk
Ian Lynagh <igloo at earth.li>**20090521141938
 Overwriting means we lose the -m64 on OS X 64.
] 
[Build and install gmp.h
Ian Lynagh <igloo at earth.li>**20090521133614] 
[Clean gmp.h
Ian Lynagh <igloo at earth.li>**20090521133606] 
[Need to pass gcc -m64 on amd64 OSX
Ian Lynagh <igloo at earth.li>*-20090520170508] 
[Set C compiler and linker flags correctly for OS X 64
Ian Lynagh <igloo at earth.li>**20090521124459] 
[Fix #3201: "ar: Bad file number" build error with MSYS and SplitObjs=YES
Simon Marlow <marlowsd at gmail.com>**20090521103131
 Ignore-this: b86763ca5f36447f633a9b9a5f58ecf8
] 
[fix warning (and validate)
Simon Marlow <marlowsd at gmail.com>**20090521081932
 Ignore-this: 4d9168fb4caca4ab84e3e06a4a94602
] 
[don't clean GMP before validating (it rarely changes, and is slow to build)
Simon Marlow <marlowsd at gmail.com>**20090521074840
 Ignore-this: 752904e56363c197328079dbde9363f1
] 
[remove a todo item (bug #2966 is fixed)
Simon Marlow <marlowsd at gmail.com>**20090520130504
 Ignore-this: 8c3c6cd3791aba3336e3e8052ceddab9
] 
[When linking a shared library with --make, always do the link step
Duncan Coutts <duncan at well-typed.com>**20090519121149
 Without -shared, the default target is a binary and in that case
 it makes sense for --make to not try and link a binary when there
 is no Main module. But for a shared library the user already has
 to specify -shared and there's no reason a shared lib should
 contain any Main module or main function.
] 
[Pass --enable-shared and --with-hscolour to ghc-cabal configure
Duncan Coutts <duncan at well-typed.com>**20090519120953
 It tried to do this already, but the make variable name was wrong.
] 
[Use shared lib mode -dynload deploy to build the rts and core shared libs
Duncan Coutts <duncan at well-typed.com>**20090519120801
 This is now the same as the old default. Currently we cannot embed
 rpaths because they would point to the build tree. We should embed
 rpaths relative to the $ORIGIN in future.
] 
[Make -dynload sysdep mean to embed rpaths in shared libs as well as binaries
Duncan Coutts <duncan at well-typed.com>**20090519120533
 Previously it only did it for binaries. This was presumably on the
 theory that the binary could specify the rpath for all the libs.
 However when it is the shared lib that is the final product (ie to
 link into a bigger project) then we need the rpaths for the shared
 lib to be self-contianed.
] 
[Switch the default -dynload mode to SystemDependent
Duncan Coutts <duncan at well-typed.com>**20090517003630
 The previous default was Deployable though it was being
 overridden to Wrapper in the ghc shell script wrapper.
] 
[Set the soname when creating a shared lib
Duncan Coutts <duncan at well-typed.com>**20090515203730
 It's still possible to override it, just use -optl-Wl,-soname, eg:
 ghc -shared -dynamic foo.o -o libfoo.so -optl-Wl,-soname,libbar.so
] 
[Keep C main separate from rts lib and link it in for standalone progs
Duncan Coutts <duncan at well-typed.com>**20090515160814
 Previously the object code for the C main function lived in the rts
 lib, however this is a problem when the rts is built as a shared lib.
 With Windows DLLs it always causes problems while on ELF systems it's a
 problem when the user decides to use their own C main function rather
 than a Haskell Main.main. So instead we now put main in it's own tiny
 little static lib libHSrtsmain.a which we install next to the rts libs.
 Whenever ghc links a program (without -no-hs-main) then it also links
 in -lHSrtsmain. For consistency we always do it this way now rather
 than trying to do it differently for static vs shared libraries.
] 
[Remove old Windows-only implementation of keeping main outside the rts
Duncan Coutts <duncan at well-typed.com>**20090514183550
 We now do it for all ways and for all platforms. This was a Windows-only
 version that only kept a separate Main.dyn_o for the dynamic linking case.
 It had to do that because Windows DLLs are stricter about unresolved symbols
 where as for ELF platforms we only run into the problem when we're not using
 a Haskell main function.
] 
[Fix silly make macro mistake in a rule used in the --enable-shared case
Duncan Coutts <duncan at well-typed.com>**20090514184216] 
[Windows: load msvcrt and kernel32 manually
Simon Marlow <marlowsd at gmail.com>**20090520124310
 Ignore-this: ae3fc7bf3e07bd0c4b30f2f6e6e04a53
] 
[Need to pass gcc -m64 on amd64 OSX
Ian Lynagh <igloo at earth.li>**20090520224020] 
[OS X / amd64 fixes
Ian Lynagh <igloo at earth.li>**20090520223610] 
[Fix the unregisterised build
Ian Lynagh <igloo at earth.li>**20090520221046] 
[Build fix for amd64/OSX
Ian Lynagh <igloo at earth.li>**20090520211705] 
[Fix building with the HEAD
Ian Lynagh <igloo at earth.li>**20090520202532] 
[Need to pass gcc -m64 on amd64 OSX
Ian Lynagh <igloo at earth.li>**20090520170508] 
[Use machdepCCOpts when running "as"
Ian Lynagh <igloo at earth.li>**20090520165811] 
[Use SRC_HC_OPTS when making ghc-cabal and ghc-pkg
Ian Lynagh <igloo at earth.li>**20090520130009] 
[Fix building ghc-pkg when bootstrapping
Ian Lynagh <igloo at earth.li>**20090520122241] 
[Simplify ghc-pkg's ghc.mk slightly
Ian Lynagh <igloo at earth.li>**20090520121940] 
[Set CLEANING=YES for the clean_% targets
Ian Lynagh <igloo at earth.li>**20090520114312] 
[Use SRC_CC_OPTS when making HSffi.o
Ian Lynagh <igloo at earth.li>**20090519195742] 
[make [123] omits phases 1,2, and 3
Simon Marlow <marlowsd at gmail.com>**20090519083419
 Ignore-this: 899fc1fb6707fde243e3a1e2221f768a
] 
[allow phases to be omitted by setting OMIT_PHASE_[123]=YES
Simon Marlow <marlowsd at gmail.com>**20090519083350
 Ignore-this: 4ac4a0ab2547dcccce5e2fdfe83525aa
] 
[fix a dependency: Makefile -> includes/Makefile
Simon Marlow <marlowsd at gmail.com>**20090519083317
 Ignore-this: 3447c85226202ae0130326ab011d3473
] 
[Make -Odph imply -fsimplifier-phases=3
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20090519055807
 Ignore-this: 25d9f2ac3f89ebac487254313fcb1b3e
] 
[Add missing word, spotted by Tom Lokhorst
Max Bolingbroke <batterseapower at hotmail.com>**20090518153314] 
[fix typo: TH.ModName -> TH.PkgName
Simon Marlow <marlowsd at gmail.com>**20090518120457
 Ignore-this: c52d36b33b0446a925156c5c4d47d373
] 
[Fix #3236: emit a helpful error message when the RTS has not been initialised
Simon Marlow <marlowsd at gmail.com>**20090518104108
 Ignore-this: ff4b5e9c226832feb08b1e69e0bdbfcb
] 
[Fix #3207: add has_side_effects = True for lots of primops
Simon Marlow <marlowsd at gmail.com>**20090515143608
 Ignore-this: 6dd688582c3c5f506eac75f409185cf2
 and document primOpHasSideEffects
] 
[Bootstrapping fixes
Ian Lynagh <igloo at earth.li>**20090517130558] 
[Bootstrapping fixes
Ian Lynagh <igloo at earth.li>**20090517001146] 
[Bootstrapping fixes
Ian Lynagh <igloo at earth.li>**20090516183020] 
[Remove a done TODO item
Ian Lynagh <igloo at earth.li>**20090516175836] 
[Add libraries/dph/LICENSE to bindists
Ian Lynagh <igloo at earth.li>**20090516130016] 
[Tweak bindist creation
Ian Lynagh <igloo at earth.li>**20090516125527
 libraries built by stage2 need all their bits in the bindist too.
 We were testing (stage == 1) rather than (stage /= 0).
] 
[Move the fixed paths out of config.mk, so cleaning works without configuring
Ian Lynagh <igloo at earth.li>**20090516121248] 
[Remove an incorrect comment
Ian Lynagh <igloo at earth.li>**20090516120255] 
[Hide more make rules when cleaning
Ian Lynagh <igloo at earth.li>**20090516114511] 
[Remove some $(TOP)s that cause problems on Windows (as they contain ':')
Ian Lynagh <igloo at earth.li>**20090516001118] 
[Disable suffix rules when cleaning
Ian Lynagh <igloo at earth.li>**20090515231947] 
[Don't require the library ghc.mk files in order to clean
Ian Lynagh <igloo at earth.li>**20090515231516] 
[Add a maintainer-clean rule
Ian Lynagh <igloo at earth.li>**20090515225659] 
[Make dph required
Ian Lynagh <igloo at earth.li>**20090515205122] 
[Remove --extra flag from darcs-all
Ian Lynagh <igloo at earth.li>**20090515203646] 
[Remove nofib-analyse
Ian Lynagh <igloo at earth.li>**20090515200241
 It's now in the nofib repo.
] 
[Move hasktags out of the GHC repo
Ian Lynagh <igloo at earth.li>**20090515135755
 Now configure looks for it as an installed program instead.
] 
[Further fixes to the stage1 version hack; fix validate.
Simon Marlow <marlowsd at gmail.com>**20090515111109
 Ignore-this: 8c75bbe34fdf9ab63b3937d1d16db625
 I'm less convinced this is a good idea now.  But it does avoid
 rebuilding most of stage1 when you pull and reconfigure.  Better
 solutions welcome.
] 
[remove warning settings; we already have warnings turned on everywhere
Simon Marlow <marlowsd at gmail.com>**20090515094046
 Ignore-this: 25fda62eb47c7a324b30cd0cd942d1ef
] 
[disable all docs in the "quick" and "devel" builds
Simon Marlow <marlowsd at gmail.com>**20090515093500
 Ignore-this: 1ef50b4624bd196584feb3d4da64a6
] 
[remove XmlDocWays relic
Simon Marlow <marlowsd at gmail.com>**20090515094452
 Ignore-this: 98fe2765fb54d3fcd890fcb3e193bc3e
] 
[cleanup: remove reference to $1_$2_CONFIGURE_FLAGS, which is never used
Simon Marlow <marlowsd at gmail.com>**20090515092858
 Ignore-this: a563c6706dc5d072f4dd5341e37bbb16
 we also have $1_$2_CONFIGURE_OPTS, which is used.
] 
[fix cut-and-pasto in mkWeakForeignEnv#, causing random segfaults
Simon Marlow <marlowsd at gmail.com>**20090515092356
 Ignore-this: cac2a0ae0a9535992466a85d1fb877b7
] 
[Fix maintainer-clean for library/dph
Manuel M T Chakravarty <chak at cse.unsw.edu.au>**20090515024812
 Ignore-this: 189a52c2b3a6cd90fa23e74cc455244
] 
[use StgWord for the lock (fixes valgrind complaint on 64-bit machines)
Simon Marlow <marlowsd at gmail.com>**20090514145524
 Ignore-this: 23100384044c7ecf26e7e552582bcccd
] 
[don't rebuild the whole of stage 1 just because the date has changed
Simon Marlow <marlowsd at gmail.com>**20090514093636
 Ignore-this: f4b7eceae68033723e6eb79f3972636d
] 
[Remove left-over bits of extralib support
Ian Lynagh <igloo at earth.li>**20090514125804] 
[Clean the right directory in bindisttest
Ian Lynagh <igloo at earth.li>**20090514125044] 
[validate now uses maintainer-clean, not distclean
Simon Marlow <marlowsd at gmail.com>**20090514105717
 Ignore-this: fc63835c465928e7b996d548661c26bf
] 
[main repeated 'make maintainer-clean' not fail
Simon Marlow <marlowsd at gmail.com>**20090514105704
 Ignore-this: 81fa6dbd35ccc9d8081ad5b3ebda3113
] 
[make repeated 'make distclean' not fail
Simon Marlow <marlowsd at gmail.com>**20090514105645
 Ignore-this: f637c255cf741f256114a98d63f47768
] 
[dummy-ghc should depend on config.mk, to pick up the latest version number
Simon Marlow <marlowsd at gmail.com>**20090513144444
 Ignore-this: 790a4e0c40f435c395eabaab50ccae9b
 This fixes build problems of the form
   ghc-cabal: Version mismatch between ghc and ghc-pkg
] 
[rejig ghc version test; fail if GHC version can't be determined
Simon Marlow <marlowsd at gmail.com>**20090513103905
 Ignore-this: a905701fd9cb8bd09a9b423998e8d98d
] 
[Hide warnings from alex/happy sources
Ian Lynagh <igloo at earth.li>**20090514005450] 
[Fix some warnings in Lexer
Ian Lynagh <igloo at earth.li>**20090513234042] 
[Fix building dph in the new build system
Ian Lynagh <igloo at earth.li>**20090513160531] 
[Improve error reporting for kind errors (fix Trac #1633)
simonpj at microsoft.com**20090513151130
 Ignore-this: 80c4b0d98ac25bececf0896d27f954b8
 
 A long-standing improvement to the error message for kinds. Now instead of
     Expected kind `* -> *', but `Int' has kind `*'
 we get
     The first argument of `T' should have kind `* -> *',
     but `Int' has kind `*'
 
 Ha!
 
] 
[Fix Trac #3219: type of a record update
simonpj at microsoft.com**20090513150922
 Ignore-this: 95af0b6c81a888839528327905f849fa
 
 Record updates are amazingly hard to typecheck right.  This is one place
 where GHC's policy of typechecking the original source is much harder than
 desugaring and typechecking that!
 
 Anyway, the bug here is that to compute the 'fixed' type variables I was
 only looking at one constructor rather than all the relevant_cons
 
 Test is typecheck/should_compile/T3219, which GHC 6.10 barfs on (with Lint).
 
] 
[Add comments
simonpj at microsoft.com**20090513145944
 Ignore-this: 8f799933bf7b2bc72ba67e999afd6fe0
] 
[Link the rts shared libs against gmp and the other C libs
Duncan Coutts <duncan at well-typed.com>**20090501235824
 When using shared libs we should link each lib against its deps. This allows
 the dynamic linker to chase dependencies and means we do not have to specify
 all indirect dependencies (as we must do for static libs).
] 
[Make ghc -dynamic imply -fPIC for C code
Duncan Coutts <duncan at well-typed.com>**20090501121445
 As is already the case for ghc -fPIC. This is needed because ghc -dynamic
 means to generate code that is capable of being linked to Haskell shared
 libs and for C code the equivalent is -fPIC. Normally C code does not need
 -fPIC merely to link to shared libs however Haskell shared libs do not
 follow common conventions. In particular the static data cannot be
 referenced statically because it cannot be copied by the static linker.
 The linker cannot copy them because we do not specify a .size for the
 _closure entries (in the .data section) though in principle we could.
] 
[validate does "exit 1" if it fails
Simon Marlow <marlowsd at gmail.com>**20090513102044
 Ignore-this: f032189c358c133f2b00f062de28890a
] 
[fix warning
Simon Marlow <marlowsd at gmail.com>**20090513101649
 Ignore-this: d93e813fd3010f157768b04ebabe8880
] 
[remove old unused fop/dvips/xmltex stuff
Simon Marlow <marlowsd at gmail.com>**20090513100317
 Ignore-this: a3ff10c53c7fb630d019e47611ff07a6
] 
[build Haddock docs
Simon Marlow <marlowsd at gmail.com>**20090513100142
 Ignore-this: 867538ef3a566197f24b73c70407a6f1
] 
[enable LinkDynLib in compilier phase
y.zhuang5 at lse.ac.uk**20090422201937
 Ignore-this: 615f399aae08a19ea5047e7c0c4a67d4
] 
[expand hack to include PS docs too
Simon Marlow <marlowsd at gmail.com>**20090513075903
 Ignore-this: f9f7914eeaef39bf357cd47984692417
] 
[stub Makefile
Simon Marlow <marlowsd at gmail.com>**20090511145122
 Ignore-this: 837a294680f957880d5ce24bec293bf1
] 
[GhcBootLibs is no more
Simon Marlow <marlowsd at gmail.com>**20090511145006
 Ignore-this: 1de74fa020bdb341c852c39bb427b98f
] 
[updates to the section describing the  +RTS -s/-S output (#3211)
Simon Marlow <marlowsd at gmail.com>**20090511144935
 Ignore-this: 1a472f099d4db1aa04c86a250a64036
] 
[multi-slurp protection
Simon Marlow <marlowsd at gmail.com>**20090508092200
 Ignore-this: 147a78b3d43e55804df50807facfe1ed
] 
[Improve error messages for type functions
simonpj at microsoft.com**20090512171229
 Ignore-this: 69207771396a7940b1bb1413622b0b5d
 
 Following a suggestion of Claus Reinke, this patch improves the error
 messages involving type functions.  Here's the relevant note from TcTyFuns.
 
 Note [Non-injective type functions]
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 It's very confusing to get a message like
      Couldn't match expected type `Depend s'
             against inferred type `Depend s1'
 so pp_open_tc adds:
        NB: `Depend' is a (non-injective) type function
 
 Currently we add this independently for each argument, so we also get
      Couldn't match expected type `a'
             against inferred type `Dual (Dual a)'
        NB: `Dual' is a (non-injective) type function
 which is arguably redundant.  But on the other hand, it's probably
 a good idea for the programmer to know the error involves type functions
 so I've left it in for now.  The obvious alternative is to only add
 this NB in the case of matching (T ...) ~ (T ...). 
 
] 
[stub makefile
Simon Marlow <marlowsd at gmail.com>**20090511133615
 Ignore-this: 1d5890844e9329eb832def2caab142f7
] 
[Hack to make the user's guide build in a linked build tree
Simon Marlow <marlowsd at gmail.com>**20090511133523
 Ignore-this: ff861fdc8a2f30ad970f1afe2121d4b6
 See comment for details
] 
[make it so that 'make html', 'make pdf', and 'make ps' work for docs
Simon Marlow <marlowsd at gmail.com>**20090511120256
 Ignore-this: 31314dbdf6d1b81142a0618ff80d79af
] 
[correct the +RTS -? docs for -A (default is 512k not 256k)
Simon Marlow <marlowsd at gmail.com>**20090508083811
 Ignore-this: 3325973d3236d4363da007ae5d052d39
] 
[Use a more compact +RTS -s output for Tasks
Simon Marlow <marlowsd at gmail.com>**20090508083738
 Ignore-this: 120572f8f207d709268389f83d6e3930
 
                         MUT time (elapsed)       GC time  (elapsed)
   Task  0 (worker) :    0.00s    (  0.00s)       0.00s    (  0.00s)
   Task  1 (worker) :    0.00s    (  0.01s)       0.00s    (  0.00s)
   Task  2 (worker) :    0.00s    (  0.03s)       0.00s    (  0.00s)
   Task  3 (bound)  :    0.00s    (  0.00s)       0.02s    (  0.04s)
] 
[disable a warning
Simon Marlow <marlowsd at gmail.com>**20090505092015
 Ignore-this: 88be67365fd00a0e82374bd543220224
] 
[docbook PDF item is done
Simon Marlow <marlowsd at gmail.com>**20090505092009
 Ignore-this: be0fea575eb930a040b7b15bd11f0eb1
] 
[add a .c --> .s rule
Simon Marlow <marlowsd at gmail.com>**20090501095627
 Ignore-this: d21dc88910d189cce35ce2d26028b547
] 
[Remove libraries/ifBuildable.hs; it's no longer used
Ian Lynagh <igloo at earth.li>**20090509200708] 
[Fix configure
Ian Lynagh <igloo at earth.li>**20090509184634] 
[Build system tweak
Ian Lynagh <igloo at earth.li>**20090509142936] 
[Add a Makefile in libraries/
Ian Lynagh <igloo at earth.li>**20090508232920] 
[Tweak ./boot
Ian Lynagh <igloo at earth.li>**20090508230236] 
[Partially fix "make framework-pkg"
Ian Lynagh <igloo at earth.li>**20090508224857
 We still need to sort out the "install-docs" story to get this working
 properly.
] 
[Handle deciding what docs to build better
Ian Lynagh <igloo at earth.li>**20090508000603
 Now we have variables for whether or not to build the docbook docs as
 HTML, as PS, and as PDF. The configure script output now matches what
 the build system will do (except it cannot take account of any
 mk/build.mk settings, of course).
] 
[Remove oldconfig.mk.in
Ian Lynagh <igloo at earth.li>**20090507150641] 
[Rename pwd to ghc-pwd
Ian Lynagh <igloo at earth.li>**20090507135034] 
[Remove pwd's Makefile from the old build system
Ian Lynagh <igloo at earth.li>**20090507134356] 
[Clean utils/pwd
Ian Lynagh <igloo at earth.li>**20090507134259] 
[Use more portable shell in ./boot; fixes booting on Solaris
Ian Lynagh <igloo at earth.li>**20090506010445] 
[Simplify utils/pwd
Ian Lynagh <igloo at earth.li>**20090505223432
 We only need the forwardslash mode now, so always use that mode and
 don't accept any arguments.
] 
[More rules for bootstrapping
Ian Lynagh <igloo at earth.li>**20090504150209] 
[Bootstrapping fix
Ian Lynagh <igloo at earth.li>**20090504142605] 
[Bootstrapping fixes
Ian Lynagh <igloo at earth.li>**20090504142511] 
[Test "ghc-pkg check" passes in bindisttest
Ian Lynagh <igloo at earth.li>**20090504105324
 Also fixes it so that it really does pass (we weren't substituting the
 GMP variables in the RTS package config).
] 
[Put install-sh into bindists
Ian Lynagh <igloo at earth.li>**20090504104026] 
[Test bindists in a deeper subdirectory
Ian Lynagh <igloo at earth.li>**20090504103504
 configure looks for install-sh in . .. ../.. and we don't want it to
 find the build system's install-sh.
] 
[Use "-x c" when compiling hc files
Ian Lynagh <igloo at earth.li>**20090503205344] 
[Makefile rules tweak for BootingFromHc
Ian Lynagh <igloo at earth.li>**20090503203733] 
[More bootstrapping rules
Ian Lynagh <igloo at earth.li>**20090503201812] 
[Add a .hc building rules for bootstrapping
Ian Lynagh <igloo at earth.li>**20090503190508] 
[Tweak rts ghc.mk for bootstrapping
Ian Lynagh <igloo at earth.li>**20090503111009] 
[Add a build system TODO
Ian Lynagh <igloo at earth.li>**20090503224627] 
[Add dph to build system; patch from Roman Leshchinskiy
Ian Lynagh <igloo at earth.li>**20090503104005] 
[Fix building without GHCi
Ian Lynagh <igloo at earth.li>**20090503004437] 
[Makefile tweak
Ian Lynagh <igloo at earth.li>**20090502225601] 
[add publish-binary-dist; tidy up
Simon Marlow <marlowsd at gmail.com>**20090501112857
 Ignore-this: 7e0032d7ac300f5dd18626488a035c05
] 
[Fix make for libffi again, properly this time
Duncan Coutts <duncan at well-typed.com>**20090430225546
 No idea how the last patch managed to pass validate.
] 
[Fix parallel make for libffi.
Duncan Coutts <duncan at well-typed.com>**20090430135637
 I didn't realise make can invoke the same action multiple
 times in parallel if the rule has multiple targets. So go
 back to using a build stamp file.
] 
[Fix linking shared libs with parallel make
Duncan Coutts <duncan at well-typed.com>**20090430123753
 Unlike with static libs, when linking shared libs the dependencies
 have to already exist. Add a dependency $1_$2_$3_LIBS : $1_$2_$3_DEPS_LIBS
] 
[Fix building Haskeline on Windows
Ian Lynagh <igloo at earth.li>**20090430161613] 
[Fix mkdependC: Make it tell cpp to use our temporary filename
Ian Lynagh <igloo at earth.li>**20090430130638] 
[FIX build: add dependencies on ghc_boot_platform.h
Simon Marlow <marlowsd at gmail.com>**20090430100245
 Ignore-this: b9bd4f40f4b6789eee500626b9ef6e2c
] 
[Prevent haddock docs being built when HADDOCK_DOCS=NO
Duncan Coutts <duncan at well-typed.com>**20090429160230] 
[Clean up building of libffi for dynamic lib way
Duncan Coutts <duncan at well-typed.com>**20090429153002
 And depend on it at the top level when we're using dynamic libs.
] 
[Build library packages as shared libs
Duncan Coutts <duncan at well-typed.com>**20090429151553
 when we configure ghc with --enable-shared
] 
[Build the rts as a shared lib correctly
Duncan Coutts <duncan at well-typed.com>**20090429143131
 That is, build it as a .so/.dll rather than as libHSrts_dyn.a
] 
[Don't actually build ghc itself with -dynamic
Duncan Coutts <duncan at well-typed.com>**20090429142940
 For now, with --enable-shared we'll build the libs shared,
 but ghc itself will still be statically linked.
 In any case, we would want to be able to build it both
 ways so it's easy to test both.
] 
[Add a new $way_libsuf variable for library suffix+extension
Duncan Coutts <duncan at well-typed.com>**20090428123529
 This allows the library file type to depend on the way. This is needed
 to use .so/.dll libs for the "dyn" way rather than always using .a libs.
 For example: thr_debug_dyn_libsuf="_thr_debug-ghc6.11.20090426.so"
] 
[extend the rules/c-objs macro to take the way as a parameter
Duncan Coutts <duncan at well-typed.com>**20090428123452
 Previously we only built library package "cbits" the vanilla way, afterall
 C code does not need to be built differently for profiling builds. However
 for dynamic libs the C code needs to be built with -fPIC, so we do need
 to be able to build package .c (and .s?) files multiple ways.
] 
[Do not link ghc stage1 using -threaded, only for stage2 or 3
Duncan Coutts <duncan at well-typed.com>**20090428104924
 We link stage1 using the bootstrapping compiler and there's
 no guarantee that it has working support for threaded
] 
[Tweak ghc-cabal
Ian Lynagh <igloo at earth.li>**20090429183728] 
[Add special support for haskeline
Ian Lynagh <igloo at earth.li>**20090429181909
 The library uses stuff in Setup.hs to determine whether or not it needs
 to use -liconv. This patch replicates that logic in ghc-cabal. This
 isn't pretty, and we should find a better way to do it, but it works
 for now.
] 
[In mkdependC.prl, create temp files properly
Ian Lynagh <igloo at earth.li>**20090429151215
 Avoids a race condition, where one run deletes/overwrites the temp file
 of another.
] 
[Use haskeline, rather than editline, for line editing in ghci
Ian Lynagh <igloo at earth.li>**20090429005838] 
[Fix error handling
Ian Lynagh <igloo at earth.li>**20090428232848
 After the fix to #2500, we could get "Failing due to -Werror." but no
 warnings printed. Now we don't fail in that case.
] 
[move nofib settings here from ghc's config.mk
Simon Marlow <marlowsd at gmail.com>**20090428125551
 Ignore-this: a2eb9d0094fe10446b74987af44a6005
] 
[add missing eventlog subdir
Simon Marlow <marlowsd at gmail.com>**20090428125528
 Ignore-this: 127bc2a6bc9fa29871a19ad99ddb346e
] 
[move runstdtest into nofib
Simon Marlow <marlowsd at gmail.com>**20090428124505
 Ignore-this: 98eae5d994693ed8235e8693f3615899
] 
[improve the finalizer callback error message
Simon Marlow <marlowsd at gmail.com>**20090428085345
 Ignore-this: 3255e17c98b3c9cf591b71d6023592b8
] 
[Add a header to all build system files:
Simon Marlow <marlowsd at gmail.com>**20090428085233
 Ignore-this: 49aa394badd4f17dc17aa3a26085ddba
 
 # -----------------------------------------------------------------------------
 #
 # (c) 2009 The University of Glasgow
 #
 # This file is part of the GHC build system.
 #
 # To understand how the build system works and how to modify it, see
 #      http://hackage.haskell.org/trac/ghc/wiki/Building/Architecture
 #      http://hackage.haskell.org/trac/ghc/wiki/Building/Modifying
 #
 # -----------------------------------------------------------------------------
] 
[more cleaning
Simon Marlow <marlowsd at gmail.com>**20090428084919
 Ignore-this: e41e0dcbef3d410ca5d6a2ff8e433cc8
] 
[todo updates
Simon Marlow <marlowsd at gmail.com>**20090427152529
 Ignore-this: b476fdb991b7b229d4aa837aa6d45216
] 
[remove commentary that is now in the wiki
Simon Marlow <marlowsd at gmail.com>**20090427144743
 Ignore-this: e9f6bec77aa99a3c1b49ada0bf4ca9ad
] 
[remove ticket todos
Simon Marlow <marlowsd at gmail.com>**20090427144406
 Ignore-this: 7de6ea0d0ecfc1ca51d75090074dcdd9
] 
[require gcc 3.0+ (see #2770)
Simon Marlow <marlowsd at gmail.com>**20090427134322
 Ignore-this: 4844e99c80bdd0f9a6bdd34bae46748b
] 
[update build order comment
Simon Marlow <marlowsd at gmail.com>**20090427124711
 Ignore-this: 96be57ee425cb4d5a916960273aefe87
] 
[Equality constraint solver is now externally pure
Manuel M T Chakravarty <chak at cse.unsw.edu.au>**20090427140316
 Ignore-this: bd7c31a7d9e62437e4d83f70b48220af
 - This patch changes the equality constraint solver such that it does not
   instantiate any type variables that occur in the constraints that are to be
   solved (or in the environment).  Instead, it returns a bag of type bindings.
 - If these type bindings (together with the other results of the solver) are
   discarded, solver invocation has no effect (outside the solver) and can be
   repeated (that's imported for TcSimplifyRestricted).
 - For the type bindings to take effect, the caller of the solver needs to 
   execute them. 
 - The solver will still instantiate type variables thet were created during 
   solving (e.g., skolem flexibles used during type flattening).
 
   See also http://hackage.haskell.org/trac/ghc/wiki/TypeFunctionsSolving
] 
[Improve the error message when we find a module in 2 places; trac #3183
Ian Lynagh <igloo at earth.li>**20090426160204] 
[Remove a comment (a bug to close, that has now been closed)
Ian Lynagh <igloo at earth.li>**20090426151942] 
[GHC new build system megapatch
Ian Lynagh <igloo at earth.li>**20090426114215] 
[Fix SPARC build, missing #include
Ben.Lippmeier at anu.edu.au**20090425083345] 
[Fix a lint failure when we have a  ! (# ... #)  pattern in a where clause
Ian Lynagh <igloo at earth.li>**20090424173313
 This showed up when converting ds057 to follow the new bang pattern rules,
 in #2806.
] 
[Do the second part of #2806: Disallow unlifted types in ~ patterns
Ian Lynagh <igloo at earth.li>**20090424150519] 
[Tiny refactor
Ian Lynagh <igloo at earth.li>**20090424140227] 
[Require a bang pattern when unlifted types are where/let bound; #3182
Ian Lynagh <igloo at earth.li>**20090424124754
 For now we only get a warning, rather than an error, because the alex
 and happy templates don't follow the new rules yet.
] 
[Don't short out top-level indirections if there's a INLINE/NOINLINE pragma
simonpj at microsoft.com**20090424123238
 Ignore-this: 422a4256a63c93a0bf806cbfa564ec69
 
 The top-level indirection-shorting, done in SimplCore.shortOutIndirections,
 was accidentally nuking a NOINLINE pragma.  This patch adopts a slightly
 more conservative approach to indirection-shorting, only doing so if 
 we do not thereby overwrite or lose some user-supplied pragmas.
 
] 
[Fix #3182: 64 bit FP value returned by C calls was getting trashed
Ben.Lippmeier at anu.edu.au**20090424065053
 Ignore-this: 529bfd2bfb663a70e1345a0089737496
    movss instruction was being used to move the result into the 
    destination register instead of movsd
] 
[add missing files (part of #3171 fix)
Simon Marlow <marlowsd at gmail.com>**20090424091610
 Ignore-this: 3d11fe878c873529906f67e930c46c2c
] 
[Tiny optimisation to mkInlineMe
simonpj at microsoft.com**20090424074733
 Ignore-this: be1e8ed22a82f1dc348b1e047a986d8b
] 
[Add EVENT_CREATE_SPARK_THREAD to replace EVENT_SPARK_TO_THREAD
Simon Marlow <marlowsd at gmail.com>**20090423141940
 Ignore-this: 173128c92c20e6a85d6611355fb5273a
 Also some tidyups and renaming
] 
[add getOrSetSignalHandlerStore, much like getOrSetTypeableStore
Simon Marlow <marlowsd at gmail.com>**20090423113002
 Ignore-this: d9dcb835444cae366aa8f6bcf68fd191
 Part of the fix for #3171
] 
[don't overwrite io_manager_pipe if it is already set
Simon Marlow <marlowsd at gmail.com>**20090423112939
 Ignore-this: 8e7d94a051b4b3daec89ea3103678550
 Part of the fix for #3171
] 
[Simplify the placeholder binding for naughty record selectors
simonpj at microsoft.com**20090423094401
 Ignore-this: 50dca18eeaa60e24319ed75dabf55bab
] 
[Fix Trac #3176: intercept naughty record selectors
simonpj at microsoft.com**20090423094237
 Ignore-this: 1aab5295a20191d8a56364f1fbf2e765
 
 When making record selectors into ordinary functions (rather than
 magial implicit Ids) I forgot that they could therefore show up in 
 the *local* TcEnv, not the global one.  This fixes that problem,
 and thereby Trac #3176.
 
] 
[Better pretty-printing for IdDetails
simonpj at microsoft.com**20090423093945
 Ignore-this: 34721cec14f1ad33838f12bfc7851a48
] 
[FIX #3166: include the fixity of classes and type synonyms in their fingerprints
Simon Marlow <marlowsd at gmail.com>**20090421135624
 Ignore-this: 5390a8fb76bf1f3133f08277a978cb2
] 
[FIX #2682: banish silly cases of the "module Foo is not loaded" error
Simon Marlow <marlowsd at gmail.com>**20090421131038
 Ignore-this: 15298691a63e13c63a68673202b1fc18
 
 In GHCi if you say 'import Foo' meaning to load a package module Foo,
 and Foo.hs is found on the search path, then GHCi replies "module Foo
 is not loaded", because it knows Foo refers to the source file rather
 than the package module, and you haven't loaded that module with
 :load.
 
 This is consistent with the usual module-finding semantics.  However,
 it isn't particularly useful.  And it leads to silly problems like not
 being able to start GHCi when you happen to be sitting in
 libraries/base, because GHCi thinks the Prelude hasn't been loaded.
 
 So now I've made a slight change to the way that 'import M' works: if
 M is loaded, then it refers to the loaded module, otherwise it looks
 for a package module M.  This does what the reporter of #2682 wanted,
 and since it turns an error condition into meaningful behaviour it
 can't break anything.  
 
 The only undesirable consequence is that 'import M' might refer to a
 different M than ':load M'.  Hopefully that won't lead to confusion.
] 
[FIX #2500: Don't log warnings in getHeader
Simon Marlow <marlowsd at gmail.com>**20090421100039
 Ignore-this: 24a8e8c2dca64dcd592d53fd7468eed5
] 
[add a DO NOT EDIT comment
Simon Marlow <marlowsd at gmail.com>**20090421094606
 Ignore-this: d0e81a968fe38918d2830dcf1186f61c
] 
[FIX #3153: we lost an EOF sentinel in the event of a lexical error
Simon Marlow <marlowsd at gmail.com>**20090421094558
 Ignore-this: e30401ca719605a6991e9c8a31821eba
] 
[FIX #2845: Allow breakpoints on expressions with unlifted type
Simon Marlow <marlowsd at gmail.com>**20090420142525
 Ignore-this: 8d1b2624a4635b421032463219af604e
 
 It turns out we can easily support breakpoints on expressions with
 unlifted types, by translating 
 
   case tick# of _ -> e
 
 into
 
   let f = \s . case tick# of _ -> e 
   in  f realWorld#
 
 instead of just a plain let-binding.  This is the same trick that GHC
 uses for abstracting join points of unlifted type.
 
 In #2845, GHC has eta-expanded the tick expression, changing the
 result type from IO a to (# State#, a #), which was the reason the
 tick was suddenly being ignored.  By supporting ticks on unlifted
 expressions we can make it work again, although some confusion might
 arise because _result will no longer be available (it now has
 unboxed-tuple type, so we can't bind it in the environment).  The
 underlying problem here is that GHC does transformations like
 eta-expanding the tick expressions, and there's nothing we can do to
 prevent that.
] 
[remove now-unused atomic_modify_mutvar_mutex
Simon Marlow <marlowsd at gmail.com>**20090403132731
 Ignore-this: d27c29bdd8a4c43b384e278fb192138e
] 
[SPARC NCG: Add a comment explaining why we can't used a pinned reg for gct
Ben.Lippmeier at anu.edu.au**20090420074335
 Can't use windowed regs because the window moves during a function
 call. Can't use the global regs because they're reserved for other purposes.
] 
[SPARC NCG: validate fixes
Ben.Lippmeier at anu.edu.au**20090420032120
 Ignore-this: 4df988a6b3c005de741a300313104408
] 
[SPARC NCG: Base freeRegs on includes/MachRegs.h again
Ben.Lippmeier at anu.edu.au**20090420020700] 
[Really fix Trac #2611 this time
pepe iborra <mnislaih at gmail.com>**20090419142241
 
 My previous patch didn't completely solve the problem.
 I believe I got it right this time.
] 
[Fix Trac #2611
pepe iborra <mnislaih at gmail.com>**20090418214115
 
 Fix a bug in :print affecting data types with unboxed components
 
] 
[Fix #3170: Allow coalescing of the same node during register allocation.
Ben.Lippmeier at anu.edu.au**20090418082253
 Ignore-this: b3a14959d7616fd53c3334a4f0b30f48
   The x86 code generator sometimes generates nop moves like
   movl %vI_a %vI_a, but we'll just ignore them for coalescing
   purposes instead of emitting an error. It shouldn't hurt anything.
] 
[Fix my previous patch about type parsing
David Waern <david.waern at gmail.com>**20090418082927
 
 I forgot to record some additional changes.
] 
[Simplify the type grammar
David Waern <david.waern at gmail.com>**20090417145855
 
 Simon P-J suggested the following simplifications in #3097:
 
 * Allow nested foralls in `ctype` just like in `ctypedoc`.
 * Use `gentype` rather than `type` in the LHS of type declarations.
 * Inline `type` in `ctype`.
 * Rename `gentype` to `type`.
 
 This patch does this. Also, the equivalent thing is done for documented types.
] 
[Removed unused function postEventTypeID.
donnie at darthik.com**20090413011745
 Ignore-this: cbab58da40e0d3b6d124347b9fda8e4
 postEventTypeID was used to post event marker IDs, but instead we just
 call postWord16 directly; thus, this function is unused.
] 
[For consistency, changed access of thread id to be through capability instead of directly from StgRegTable.
donnie at darthik.com**20090413011701
 Ignore-this: dd38adce264aa882be0a4daf7c8c7378
] 
[Added new EventLog event: Spark to Thread.
donnie at darthik.com**20090413011444
 Ignore-this: d38be4d01d76297953d6ed075896cb97
] 
[Changed postEvent last argument from "nat from" to "StgWord64 other".
donnie at darthik.com**20090413011140
 Ignore-this: b7991c781c09d7a631230740cd8b1fe6
 StgWord64 other better represents this argument since it can be used as
 any particular data, thus "other" and not the "from" capability as it was
 previously strictly used.  Also, StgWord64 is normally larger than type
 nat to allow for larger data to be passed through the "other" argument.
] 
[Fixed ThreadID to be defined as StgThreadID, not StgWord64.  Changed CapabilityNum to CapNo.  Added helper functions postCapNo() and postThreadID().
donnie at darthik.com**20090413010705
 Ignore-this: dde2f442f9d5e43f20f52069dee4f8c0
 ThreadID was StgWord64, but should have been StgThreadID, which is
 currently StgWord32.  Changed name from CapabilityNum to CapNo to better
 reflect naming in Capability struct where "no" is the capability number.
 Modified EventLog.c to use the helper functions postCapNo() and
 postThreadID () for CapNo and ThreadID.
] 
[Fixed error in order of EventTypeDescriptions -- seq and par GC come after start and finish GC.
donnie at darthik.com**20090403034322
 Ignore-this: 98c0367103ab7892980d9a17d442584e
 EventTypeDescriptions order must be synchronized with the event type
 definitions in includes/EventLogFormat.h for the definitions to correctly
 index with the matching description.
] 
[Eventlog support for new event type: create spark.
donnie at darthik.com**20090403033025
 Ignore-this: 1da2a5eb13c7c64132234323e2acb514
] 
[Tweak a Show instance
Ian Lynagh <igloo at earth.li>**20090407143057] 
[Fix Trac #3155: better error message when -XRankNTypes is omitted
simonpj at microsoft.com**20090409144004
 Ignore-this: fc9d3035cd461c8a892332facd86c7da
 
 This patch sligtly re-adjusts the way in which the syntax of types 
 is handled:
 
  * In the lexer, '.' and '*' are always accepted in types
    (previously it was conditional).  This things can't mean
    anything else in H98, which is the only reason for doing things
    conditionally in the lexer.
 
  * As a result '.' in types is never treated as an operator.
    Instead, lacking a 'forall' keyword, it turns into a plain parse error.
 
  * Test for -XKindSignatures in the renamer when processing
      a) type variable bindings
      b) types with sigs (ty :: kind-sig)
 
  * Make -XKindSignatures be implied by -XTypeFamilies 
    Previously this was buried in the conditonal lexing of '*'
 
] 
[Use return instead of returnM, and similar tidy-ups
simonpj at microsoft.com**20090409140959
 Ignore-this: 987baeb20a3ff9f07c7a103ca5258c70
] 
[Don't use thread local storage on x86/not-Linux
Ian Lynagh <igloo at earth.li>**20090404003445
 With the
     On x86, use thread-local storage instead of stealing a reg for gct
 patch, on Windows and OS X:
     error: thread-local storage not supported for this target
] 
[Make some showSDoc's use OneLineMode rather than PageMode
Ian Lynagh <igloo at earth.li>**20090331181948] 
[Make the showSDoc definition more explicit
Ian Lynagh <igloo at earth.li>**20090331174103] 
[eliminate warnings
dias at eecs.tufts.edu**20090403203429] 
[Debugging by Sesame Street:
dias at eecs.tufts.edu**20090403201504
 
 One of these things is not like the others:
 
 stdPattern :: [LRep] -> Maybe StgHalfWord
 stdPattern reps
   = case reps of
         []  -> Just ARG_NONE    -- just void args, probably
         [N] -> Just ARG_N
         [P] -> Just ARG_N
         [F] -> Just ARG_F
         [D] -> Just ARG_D
         [L] -> Just ARG_L
 
 Today's debugging session was brought to you by the letter P.
] 
[Buggy optimizations caused function-call return to share the function's entry point
dias at eecs.tufts.edu**20090331144639
 - Block concat and branch-chain elimination were allowing a function call
   to return to the caller's entry point. But that doesn't leave anywhere
   for the infotable on the stack, since the SP on return must be the same
   as the SP on entry to the procedure.
] 
[Better handling of node parameter in calling conventions
dias at eecs.tufts.edu**20090325163815
  - Previously, the node was taken as a parameter, then ignored,
    for static closures. Goofy. Now, the vestigial node parameters
    are gone.
] 
[When calling gc, avoid saving node in static closures
dias at eecs.tufts.edu**20090323204744] 
[Code simplifications due to call/return separation; some improvements to how node argument is managed
dias at eecs.tufts.edu**20090323201140] 
[Code simplification due to separate call/return conventions
dias at eecs.tufts.edu**20090323182214] 
[Calls with and without passing node arguments more clearly separated
dias at eecs.tufts.edu**20090323174700] 
[Another small step: call and return conventions specified separately when making calls
dias at eecs.tufts.edu**20090323172837] 
[Small step toward call-conv improvement: separate out calls and returns
dias at eecs.tufts.edu**20090323170706] 
[On x86, use thread-local storage instead of stealing a reg for gct
Simon Marlow <marlowsd at gmail.com>**20090403121816
 Ignore-this: b132a4c2f56a955adb8537442ca8eb0f
 Benchmarks show that using TLS instead of stealing a register is
 better by a few percent on x86, due to the lack of registers.
 
 This only affects -threaded; without -threaded we're (now) using
 static storage for the GC data.
] 
[in the non-threaded RTS, use a static gc_thread structure
Simon Marlow <marlowsd at gmail.com>**20090403121443
 Ignore-this: 631365db4f9ec7c87f71e0ac851cdfc
] 
[small GC optimisation
Simon Marlow <marlowsd at gmail.com>**20090403083708] 
[add -funroll-loops when compiling the parallel version of Evac.c too
Simon Marlow <marlowsd at gmail.com>**20090402105643
 Ignore-this: c120d5f5ea961e10acad457fd871ba53
] 
[PACKAGE_CPP_OPTS += -DPAPI_INCLUDE_DIR=""
Simon Marlow <marlowsd at gmail.com>**20090402105540
 Ignore-this: 4136707371784c791c435ae4f562a500
 unbreaks ghc-pkg check in an installed GHC
] 
[Adjust inlining heursitics
simonpj at microsoft.com**20090403084634
 Ignore-this: a2d6849726f6705e06941c74137bfe7e
 
 This patch is the result of a long series of nofib-based experiments
 to improve GHC's inlining heuristics.
 
 In the end, I'm not sure how worthwhile it all was: I only got a 
    1% decrease in code size
    1% decrease in allocation
 and I don't trust the runtime statistics enough to quote.
 
 Still, in doing all this I tidied up the code quite a bit, and 
 I understand it much better now, so I'm going to commit it.
 
 The main changes are in CoreUnfold, which has lots of new comments.
 Other changes:
 
   - litSize moves from Literal to CoreUnfold
   - interestingArg moves from SimplUtils to CoreUnfold
   - the default unfolding threshold (in StaticFlags) 
       reduces from 8 to 6 (since the size calculation 
       has changed a bit)
 
 
] 
[Worker/wrapper should make INLINE if it doesn't w/w
simonpj at microsoft.com**20090403084333
 Ignore-this: 5ef3c02c272ad59616fa7dfaa0dc0381
 
 If worker/wrapper decides not to w/w something on the grounds that
 it's too small, it should add an INLINE pragma.  Otherwise, later
 in the day that small thing might now be big, and we'd wish we'd
 done the w/w after all.  This only made a difference in one nofib 
 program (bspt), but it's an easy change.
 
 See Note [Don't w/w inline things (a) and (b)]
 
] 
[Rewrite a good chunk of CoreArity
simonpj at microsoft.com**20090403083655
 Ignore-this: 314d26ad8f2d4437e11148b58e35d731
 
 I found a couple of shortcomings in arity computation, and did
 quite a bit of refactoring as a result.  Regrettably, I have
 forgotten the details, but I do remember that one part was to
 do with the infamous "state hack".  If we're going to use the
 state-hack at all, we'd better do it right.
 
 Anyway I think this is an improvement. The comments are more
 up to date too, and more voluminous.
 
] 
[Comments only; record remarks about removing 'type' nonterminal
simonpj at microsoft.com**20090402165226
 Ignore-this: 82f93bd161ee48c0a745fb58247afec0
] 
[Don't float case expressions in full laziness
simonpj at microsoft.com**20090402165101
 Ignore-this: 356f0fc77301283116a669ed76478c4
 
 See Note [Case MFEs]; don't float case expressions from 
 a strict context.
 
] 
[Fix Trac #3118: missing alternative
simonpj at microsoft.com**20090402152834
 Ignore-this: 9a9866ad88eae871cb98c6795c12349b
 
 This patch fixes a rather obscure bug, whereby it's possible
 for (case C a b of <alts>) to have altenatives that do not inclue
 (C a b)!  See Note [Unreachable code] in CoreUtils.
 
] 
[Use a local interestingDict function instead of importing SimplUtils.interestingArg
simonpj at microsoft.com**20090402152246
 Ignore-this: d01d1a42067c2f907a1f2fb2ddec4ada
 
 I'm changing the details of SimplUtils.interstingArg, and don't want to
 mess  up the way Specialise works, so this patch makes a specilialised
 (ha) function, Specialise.interestingDict, that is used locally.
 
 
] 
[Better panic reporting
simonpj at microsoft.com**20090402151846
 Ignore-this: abbd0ab8e2e8771012c17e0fc66fed41
 
 Make idDetails and idInfo into proper functions, rather than record
 fields, so that we can report more informatively if you use thenm on
 a non-Id.
 
] 
[Fix pragmas in binder-swapping
simonpj at microsoft.com**20090402151616
 Ignore-this: 422672152247c7732c56e850f3317546
 
 In the case binder-swap operation (which is done in OccurAnal),
 we deliberately use shadowing. But the new shadowing binder should
 not inherit any fancy INLINE or NOINLINE pragmas from its parent.
 
] 
[Float constants to top-level even in first full laziness pass
simonpj at microsoft.com**20090402151406
 Ignore-this: c81a6d62b760d50348aaa5de0276d7c6
 
 This patch changes the compilation pipeline flags so that constants
 are floated to the top level even in the first full laziness pass.
 For some reason this was not done before.  Fixing this makes a big
 improvement in 'spectral/rewrite', and has zero effect on any other
 nofib benchmark.
 
] 
[update the intro section
Simon Marlow <marlowsd at gmail.com>**20090401105256
 Ignore-this: 90aba333b501ecdedca5116d7204e47f
] 
[Remove the "Installing GHC" section
Simon Marlow <marlowsd at gmail.com>**20090401103418
 Ignore-this: 94b8c9bcb8a93442ae19f9547f545f74
 
  1. it was out of date in various ways
  2. this is not the place people look for installation instructions
  3. we have installation instructions elsewhere (e.g. the INSTALL
     file in a binary distribution)
  4. the section "layout of installed files" is now on the wiki under
     Building/Installing.
] 
[SPARC: Fix ffi019 split load/store of HsInt64 into two parts to respect alignment constraints
Ben.Lippmeier at anu.edu.au**20090331045145] 
[SPARC NCG: Fix 64 bit addition, carry bit wasn't getting set.
Ben.Lippmeier at anu.edu.au**20090330051732] 
[SPARC NCG: When getting a 64 bit word, promote halves to 64 bit before shifting
Ben.Lippmeier at anu.edu.au**20090330050346] 
[SPARC NCG: HpLim is now always stored on the stack, not in a register
Ben.Lippmeier at anu.edu.au**20090331051900
    This fixes the out of memory errors we were getting on sparc
    after the following patch:
 
      Fri Mar 13 03:45:16 PDT 2009  Simon Marlow <marlowsd at gmail.com>
      * Instead of a separate context-switch flag, set HpLim to zero
      Ignore-this: 6c5bbe1ce2c5ef551efe98f288483b0
      This reduces the latency between a context-switch being triggered and
      the thread returning to the scheduler, which in turn should reduce the
      cost of the GC barrier when there are many cores. 
] 
[Allow Haddock comments in type synonyms
David Waern <david.waern at gmail.com>**20090331212306
 Ignore-this: 11f1bad22d25d8d0017580d020c1aa5d
 
 We now use `ctypedoc` instead of `ctype` for type synonyms. `ctypedoc` was
 previously only used for top-level type signatures. This change means that type
 synonyms now can contain comments, just like top-level type signatures.
   
 Note:
   
 * I've modified `ctypedoc` so it allows implicit parameters and equational
 constraints, just like ctype.
   
 * Since `ctypedoc` allows nested foralls, we now allow that in type synonyms.
   
 * I have inlined some productions into gentypedoc so that there is now a
 non-doc version of every production with a 'doc' suffix. (Stylistic change
 only, which should make the code easier to follow).
   
 * It would have been nice to simplify the grammar by unifying `ctype` and 
 ctypedoc` into one production, allowing comments on types everywhere (and
 rejecting them after parsing, where necessary).  This is however not possible
 since it leads to ambiguity. The reason is the support for comments on record
 fields:
   
 > data R = R { field :: Int -- ^ comment on the field }
   
 If we allow comments on types here, it's not clear if the comment applies
 to 'field' or to 'Int'. So we must use `ctype` to describe the type.
] 
[mkErrorAppDs now takes an SDoc rather than a String
Ian Lynagh <igloo at earth.li>**20090331134058
 This avoids some showSDoc's where the String then gets converted back
 into an SDoc.
] 
[FIX #1779 and qq005: export hs_hpc_module
Simon Marlow <marlowsd at gmail.com>**20090330084414
 Ignore-this: cacd10985619c25505f0e48400187ccc
] 
[go back to using $CPUS + 1 for the number of threads to use
Simon Marlow <marlowsd at gmail.com>**20090330083032
 Ignore-this: 2c1915e2c13b953513a2c16cc86a7073
] 
[use a UniqSet for is MathFun, this list is getting quite large
Simon Marlow <marlowsd at gmail.com>**20090330082957
 Ignore-this: ceaf912ed4ec0d778178e2391715c689
] 
[Fix an nasty black hole, concerning computation of isRecursiveTyCon
simonpj at microsoft.com**20090330084912
 Ignore-this: 3bf163be6629cb933a3be1564ac2b0cc
 
 Fixing #246 (pattern-match order in record patterns) made GHC go into
 a black hole, by changing the order of patterm matching in
 TyCon.isProductTyCon!  It turned out that GHC had been avoiding the
 black hole only by the narrowest of margins up to now!
 
 The black hole concerned the computation of which type constructors
 are recursive, in TcTyDecls.calcRecFlags.  We now refrain from using
 isProductTyCon there, since it triggers the black hole (very
 indirectly).  See the "YUK YUK" comment in the body of calcRecFlags.
 
 As it turns out, the fact that TyCon.isProductTyCon matched on the
 algTcRec field was quite redundant, so I removed that too.  However,
 without the fix to calcRecFlags, this wouldn't fix the black hole
 because of the use of isRecursiveTyCon in BuildTyCl.mkNewTyConRhs.
 
 Anyway, it's fine now.
 
] 
[Add an extra print to -ddump-tc-trace
simonpj at microsoft.com**20090330084835
 Ignore-this: 4197fee2974d94a30af97549a858a44
] 
[Remove dead code (dataConsStupidTheta)
simonpj at microsoft.com**20090330084739
 Ignore-this: 56a6f274aa7194f614a34f664c6e80af
] 
[Fix Trac #246: order of matching in record patterns
simonpj at microsoft.com**20090330083736
 Ignore-this: 2f0a008e0086cfe7ac5100d4253f4fb1
 
 While I was looking at the desugaring of pattern matching (fixing
 Trac #3126) I finally got around to fixing another long-standing bug:
 when matching in a record pattern, GHC should match left-to-right in
 the programmer-specfied order, *not* left-to-right positionally in 
 the original record declaration.
 
 Needless to say, that requires a little more code. 
 See Note [Record patterns] in MatchCon.lhs
 
 
] 
[Fix Trac #3126: matching overloaded literals
simonpj at microsoft.com**20090330083435
 Ignore-this: 560c5e7dba95400bef4a73569ea26b82
 
 Claus Reinke uncovered a long-standing bug in GHC, whereby we were
 combining the pattern-match on overloaded literals, missing the fact
 that an intervening pattern (for a different literal) might also 
 match.  (If someone had a very odd implementation of fromInteger!)
 
 See Note [Grouping overloaded literal patterns] in Match.lhs
 
 If this merges smoothly to 6.10, go for it, but it's very much
 a corner case.
 
 Thank you Claus!
 
] 
[White space cosmetics only
simonpj at microsoft.com**20090330083103
 Ignore-this: c52ebfa8f85e81abcd8694b3a30c6a63
] 
[Improve mkDupableCont; and fix Trac #3116
simonpj at microsoft.com**20090325095205
 
 It turns out that, as a result of a change I made a few months ago to
 the representation of SimplCont, it's easy to solve the optimisation
 challenge posed by Trac #3116.  Hurrah.
 
 Extensive comments in Note [Duplicating StrictArg].
 
] 
[Avoid quadratic complexity in occurrence analysis (fix Trac #1969)
simonpj at microsoft.com**20090323103826
   
   The occurrence analyser could go out to lunch in bad cases, because
   of its clever loop-breaking algorithm. This patch makes it bale out
   in bad cases.  Somewhat ad-hoc: a nicer solution would be welcome.
   
   See Note [Complexity of loop breaking] for the details.
 
] 
[Improve arity propagation in the specialiser
simonpj at microsoft.com**20090323101614
 
 This patch makes the specialiser propagate arities a bit more
 eagerly, which avoids a spurious warning in the simplifier.
 
 See Note [Arity decrease] in Simplify.lhs
 
] 
[check for ThreadRelocated in checkBlackHoles()
Simon Marlow <marlowsd at gmail.com>**20090326140343
 Ignore-this: 5d63f26567030cf0ccfa33da82702f86
] 
[syb no longer needs to be wired in
Ian Lynagh <igloo at earth.li>**20090326130517] 
[Template Haskell: added bang patterns
Manuel M T Chakravarty <chak at cse.unsw.edu.au>**20090326100208
 Ignore-this: f15890cd7ee7fee664af342796780443
] 
[Template Haskell: support for kind annotations
Manuel M T Chakravarty <chak at cse.unsw.edu.au>**20090326085520
 Ignore-this: 722c23eac614089d24a8e8373a13de3b
] 
[update list of C math functions
Bertram Felgenhauer <int-e at gmx.de>**20090323183630
 Ignore-this: af5fa15d957d853d27a0c4b465c2419e
 Fix via C compilation of modules that import, say, log1p from math.h (#3117)
 
 The list is based on preprocessing Stg.h with glibc 2.6.1 headers, and
 cross-checked with the ISO C 99 standard (draft).
] 
[Template Haskell: make reify aware of type families
Manuel M T Chakravarty <chak at cse.unsw.edu.au>**20090325033447
 Ignore-this: 4b9c2d626e7c506a74331bb91d0fcff7
 - Reifying a type family returns a TH family declaration
 - Reifying a data constructor from a data instance attributes that
   constructor to the family (not the representation tycon)
 - Ideally, we should have facilities to reify all type/data instances of a 
   given family (and the same for instances of a class).  I haven't added that
   here as it involves some API design.
] 
[Template Haskell: support for INLINE and SPECIALISE pragmas
Manuel M T Chakravarty <chak at cse.unsw.edu.au>**20090324232940
 Ignore-this: 1f6c2e0de01842da7c9384d3ccafcb63
] 
[fix an fprintf that should be fputs (quiets gcc)
Simon Marlow <marlowsd at gmail.com>**20090322195441] 
[check return value of write (quiets gcc)
Simon Marlow <marlowsd at gmail.com>**20090322195319] 
[Fix locking in evacuate_large() (FIX openfile008(threaded2))
Simon Marlow <marlowsd at gmail.com>**20090323092953
 Ignore-this: 2c6c2790676c3bcd40f0a0b6030d31dc
] 
[Please the -Wall police by moving a variable declaration; really FIX getNumberOfProcessors() for MacOS X
Austin Seipp <mad.one at gmail.com>**20090320124846
 Ignore-this: fcd0015e0923855df814f55d88770db2
] 
[wibble in setExecutable
Austin Seipp <mad.one at gmail.com>**20090320120043
 Ignore-this: 968aa9856a5494e4e58ca8a20106298f
] 
[FIX getNumberOfProcessors() on MacOS X
Austin Seipp <mad.one at gmail.com>**20090318023127
 Ignore-this: 8df07f3353a8e12be9becf4b855d5fdf
 
 This checks if darwin_HOST_OS is defined and, if so, we call
 sysctlbyname() on the "hw.ncpu" property to get the processor count.
] 
[Work around Solaris's grep not supporting -q
Ian Lynagh <igloo at earth.li>**20090319171501] 
[Some wording wibbles from Thorkil
Ian Lynagh <igloo at earth.li>**20090319165916] 
[Fix bug in setThreadAffinity() (Linux)
Simon Marlow <marlowsd at gmail.com>**20090320100446
 Ignore-this: 6e8b430fe03959f7e7f8c641d5a589f6
] 
[Implement setThreadAffinity for Mac OS X (from 10.5)
Manuel M T Chakravarty <chak at cse.unsw.edu.au>**20090320071347
 Ignore-this: d5e2104b4a011fc98500527741c5e7a7
] 
[Fix warnings with older versions of gcc (3.4.5)
Simon Marlow <marlowsd at gmail.com>**20090319124932] 
[wibble for getNumberOfProcessors
Simon Marlow <marlowsd at gmail.com>**20090318165936
 Ignore-this: 60a776b8250590f72e45c941b810f14a
] 
[Set thread affinity with +RTS -qa (only on Linux so far)
Simon Marlow <marlowsd at gmail.com>**20090318154719
 Ignore-this: a799d276f29dd24c655e1f423eb6743e
] 
[Template Haskell support for equality constraints
Manuel M T Chakravarty <chak at cse.unsw.edu.au>**20090319132347
 Ignore-this: 2a0150d9466b0552c5094cdcdc08dbe5
] 
[add missing case in ENTER() (fixes readwrite002(profasm) crash)
Simon Marlow <marlowsd at gmail.com>**20090319102126
 Ignore-this: 5599d4df888e830a8865e57e6745e094
] 
[FIX unregisterised build
Simon Marlow <marlowsd at gmail.com>**20090319100954
 Ignore-this: 97f15b77b030f1f26b0827e6335a8251
] 
[Template Haskell: support for type family declarations
Manuel M T Chakravarty <chak at cse.unsw.edu.au>**20090319084306
 Ignore-this: b9f5f5af61a5da53dc4326f380fdb72e
] 
[Comment explaining use of seq in DFMonad
dias at eecs.tufts.edu**20090318210138] 
[FIX unregisterised target by #ifdefing targetPlatform stuff
Simon Marlow <marlowsd at gmail.com>**20090318151255
 Ignore-this: 916b3929d0edcd18951591a35e0cc99
 I'm not sure if this is the correct fix.  If targetPlatform is really
 NCG-specific, then maybe we should call it asmTargetPlatform or
 something.
] 
[Removed a trace
dias at eecs.tufts.edu**20090318151343] 
[Calling convention bug and cleanup
dias at eecs.tufts.edu**20090317204238
 - yet another wrong calling convention; this one was a special case for returning one
   value.
] 
[Inconsistent type and arguments in safe foreign calls...
dias at eecs.tufts.edu**20090316214654
 - The function argument was stripped from the argument list but not from the type.
   Now they're both stripped.
] 
[stack overflows and out of memory's
dias at eecs.tufts.edu**20090316213506
 1. Stack overflow fixed by making dataflow monad strict in the state.
 2. Out of memory fixed by "forgetting" lastoutfacts in the dataflow monad
    where we should. We were creating an unnecessarily long list that grew
    exponentially...
] 
[Add the notion of "constructor-like" Ids for rule-matching
simonpj at microsoft.com**20090318105911
 Ignore-this: 9249b00a2292563e68d5d715376b216c
 
 This patch adds an optional CONLIKE modifier to INLINE/NOINLINE pragmas, 
    {-# NOINLINE CONLIKE [1] f #-}
 The effect is to allow applications of 'f' to be expanded in a potential
 rule match.  Example
   {-# RULE "r/f" forall v. r (f v) = f (v+1) #-}
 
 Consider the term
      let x = f v in ..x...x...(r x)...
 Normally the (r x) would not match the rule, because GHC would be scared
 about duplicating the redex (f v). However the CONLIKE modifier says to
 treat 'f' like a constructor in this situation, and "look through" the
 unfolding for x.  So (r x) fires, yielding (f (v+1)).
 
 The main changes are:
   - Syntax
 
   - The inlinePragInfo field of an IdInfo has a RuleMatchInfo
     component, which records whether or not the Id is CONLIKE.
     Of course, this needs to be serialised in interface files too.
 
   - The occurrence analyser (OccAnal) and simplifier (Simplify) treat
     CONLIKE thing like constructors, by ANF-ing them
 
   - New function coreUtils.exprIsExpandable is like exprIsCheap, but
     additionally spots applications of CONLIKE functions
 
   - A CoreUnfolding has a field that caches exprIsExpandable
 
   - The rule matcher consults this field.  See 
     Note [Expanding variables] in Rules.lhs.
 
 On the way I fixed a lurking variable bug in the way variables are
 expanded.  See Note [Do not expand locally-bound variables] in
 Rule.lhs.  I also did a bit of reformatting and refactoring in
 Rules.lhs, so the module has more lines changed than are really
 different.
 
] 
[Fixes to "Retract Hp *before* checking for HpLim==0"
Simon Marlow <marlowsd at gmail.com>**20090318111847
 Ignore-this: 154a41eeb18a775465db29c818d1ec3a
] 
[Add fast event logging
Simon Marlow <marlowsd at gmail.com>**20090317164214
 Ignore-this: c470164a5e66dca06fddc2fe172025de
 
 Generate binary log files from the RTS containing a log of runtime
 events with timestamps.  The log file can be visualised in various
 ways, for investigating runtime behaviour and debugging performance
 problems.  See for example the forthcoming ThreadScope viewer.
 
 New GHC option:
 
   -eventlog   (link-time option) Enables event logging.
 
   +RTS -l     (runtime option) Generates <prog>.eventlog with
               the binary event information.
 
 This replaces some of the tracing machinery we already had in the RTS:
 e.g. +RTS -vg  for GC tracing (we should do this using the new event
 logging instead).
 
 Event logging has almost no runtime cost when it isn't enabled, though
 in the future we might add more fine-grained events and this might
 change; hence having a link-time option and compiling a separate
 version of the RTS for event logging.  There's a small runtime cost
 for enabling event-logging, for most programs it shouldn't make much
 difference.
 
 (Todo: docs)
] 
[FIX biographical profiling (#3039, probably #2297)
Simon Marlow <marlowsd at gmail.com>**20090317144939
 Ignore-this: 3b1d53fdf0f99c04e7d0055534baf52f
 Since we introduced pointer tagging, we no longer always enter a
 closure to evaluate it.  However, the biographical profiler relies on
 closures being entered in order to mark them as "used", so we were
 getting spurious amounts of data attributed to VOID.  It turns out
 there are various places that need to be fixed, and I think at least
 one of them was also wrong before pointer tagging (CgCon.cgReturnDataCon).
] 
[Add getNumberOfProcessors(), FIX MacOS X build problem (hopefully)
Simon Marlow <marlowsd at gmail.com>**20090317093309
 Ignore-this: 3de51351864f7276f3f887cca5385294
 Somebody needs to implement getNumberOfProcessors() for MacOS X,
 currently it will return 1.
] 
[FIX #3093: stub filenames when using -osuf
Simon Marlow <marlowsd at gmail.com>**20090316203437
 Ignore-this: 999de35952804c760462ae32cfdd04d5
 Also remove some unused cruft
] 
[Don't call processHeapClosureForDead on pinned blocks
Simon Marlow <marlowsd at gmail.com>**20090316160534
 Ignore-this: 33a60e4ce78db6cc5bab399ec673ad0a
 Fixes heapprof001(prof_hp) after fix for #2917
] 
[Retract Hp *before* checking for HpLim==0
Simon Marlow <marlowsd at gmail.com>**20090316160500
 Ignore-this: f8fdb26c724f766cfae016321be101c4
 Fixes heapprof001(prof_hp) following the recent HpLim patch, which
 depended on the lack of slop in the heap.
] 
[eliminate some not-quite-duplicate code
Simon Marlow <marlowsd at gmail.com>**20090313155619
 Ignore-this: 2edadf2f966bf37868b355da1faa211c
] 
[start finalizers on the current Capability rather than last_free_capability
Simon Marlow <marlowsd at gmail.com>**20090313155602
 Ignore-this: b3e7bc2a7966cd5778e55a0e5dc83553
] 
[cope with ThreadRelocated on the sleeping_queue
Simon Marlow <marlowsd at gmail.com>**20090217132757
 Ignore-this: 6b73d2b2e4142d7db4e7db4570f644ff
] 
[Fix Trac #3095, and make RdrHsSyn warning-clean
simonpj at microsoft.com**20090316174706
 Ignore-this: db47522307c92d93e0037143dee74375
] 
[Layout only
simonpj at microsoft.com**20090316164619
 Ignore-this: af7c9018e873b1618bfe4a2f3102a0c7
] 
[Reject foralls in constructor args in 'deriving', except for Functor etc
simonpj at microsoft.com**20090316164502
 Ignore-this: 2538aee2634fb587d74a8dc1a064cb5b
] 
[Fix Trac #3092
simonpj at microsoft.com**20090316164049
 Ignore-this: 9502fdd84b7b1849f6c37afe12d46d64
 
 We were't checking that a 'data/type instance' was extending a family
 type constructor.
 
 Merge to 6.10 if we ever release 6.10.3 (or do it for 6.10.2).
 
 
] 
[Ensure the orientation of var-var equalities is correct for instatiation
Manuel M T Chakravarty <chak at cse.unsw.edu.au>**20090315065709
 Ignore-this: 95cf805dde74e0b9ff36a7fe7556ed1a
 - During fianlisation we use to occasionally swivel variable-variable equalities
 - Now, normalisation ensures that they are always oriented as appropriate for
   instantation.
 - Also fixed #1899 properly; the previous fix fixed a symptom, not the cause.
] 
[Use work-stealing for load-balancing in the GC
Simon Marlow <marlowsd at gmail.com>**20090313135116
 Ignore-this: d05027217c516de3d75f4d1844c860fd
   
 New flag: "+RTS -qb" disables load-balancing in the parallel GC
 (though this is subject to change, I think we will probably want to do
 something more automatic before releasing this).
 
 To get the "PARGC3" configuration described in the "Runtime support
 for Multicore Haskell" paper, use "+RTS -qg0 -qb -RTS".
 
 The main advantage of this is that it allows us to easily disable
 load-balancing altogether, which turns out to be important in parallel
 programs.  Maintaining locality is sometimes more important that
 spreading the work out in parallel GC.  There is a side benefit in
 that the parallel GC should have improved locality even when
 load-balancing, because each processor prefers to take work from its
 own queue before stealing from others.
] 
[Fix Trac #3087: derived Data now defines dataCast1/2
simonpj at microsoft.com**20090313134436
 Ignore-this: df43405a2ef5adef20f9eb3675e7411f
 
 This patch generates code in deriving(Data) for dataCast1 or 2 as
 appropriate.
 
 While I was there I did some refactoring (of course), pulling out
 the TcDeriv.inferConstraints as a separate function.
 
 I don't think it's worth merging this to 6.10.2, even though it's a bugfix,
 because it modifies code that I added in the HEAD only (for deriving Functor)
 so the merge will be sligtly awkward.  And there's an easy workaround.
 
] 
[Adjust error message slightly to make it clearer
simonpj at microsoft.com**20090313134402
 Ignore-this: 46b0abb88c1fe11cd4ff059955b81561
] 
[just comment formatting
Simon Marlow <marlowsd at gmail.com>**20090313132339
 Ignore-this: f53b0dca0896134dd704fc3aca3ea93f
] 
[Add "+RTS -N" to determine the -N value automatically (see #1741)
Simon Marlow <marlowsd at gmail.com>**20090313114646
 Ignore-this: b5dd21278e02f4a161093466ca97dce
] 
[tidy up "missing symbol" error message
Simon Marlow <marlowsd at gmail.com>**20090313101334] 
[Fix sanity checking after fix to #2917
Simon Marlow <marlowsd at gmail.com>**20090312093855] 
[Instead of a separate context-switch flag, set HpLim to zero
Simon Marlow <marlowsd at gmail.com>**20090313104516
 Ignore-this: 6c5bbe1ce2c5ef551efe98f288483b0
 This reduces the latency between a context-switch being triggered and
 the thread returning to the scheduler, which in turn should reduce the
 cost of the GC barrier when there are many cores.
 
 We still retain the old context_switch flag which is checked at the
 end of each block of allocation.  The idea is that setting HpLim may
 fail if the the target thread is modifying HpLim at the same time; the
 context_switch flag is a fallback.  It also allows us to "context
 switch soon" without forcing an immediate switch, which can be costly.
] 
[TAG 2009-03-13
Ian Lynagh <igloo at earth.li>**20090313021251] 
[FIX #3079, dodgy parsing of LANGUAGE pragmas
Simon Marlow <marlowsd at gmail.com>**20090312141103
 Ignore-this: f490bd047421c8aff6c493e79178594e
 I ended up rewriting this horrible bit of code, using (yikes) lazy I/O
 to slurp in the source file a chunk at a time.  The old code tried to
 read the file a chunk at a time, but failed with LANGUAGE pragmas
 because the parser for LANGUAGE has state and the state wasn't being
 saved between chunks.  We're still closing the Handle eagerly, so
 there shouldn't be any problems here.
] 
[avoid a crash: don't return unless the run queue has some threads in it
Simon Marlow <marlowsd at gmail.com>**20090311154559] 
[Allocate the right number of words in new*PinnedByteArrayzh_fast
Ian Lynagh <igloo at earth.li>**20090311160615] 
[FIX #2816 (correct unicode output for :type/:kind)
Simon Marlow <marlowsd at gmail.com>**20090311112311
 Ignore-this: 7f6a7ac6e2fe4f4242df586ef2391506
 This is just a hack, since we don't have correct unicode output for
 Handles in general, I just fixed a couple of places where we were not
 converting to UTF-8 for output.
] 
[Fix #2992: don't create a named event
Simon Marlow <marlowsd at gmail.com>**20090311094208
 Evidently I misread the docs for CreateEvent: if you pass a name to
 CreateEvent, then it creates a single shared system-wide Event with
 that name.  So all Haskell processes on the machine were sharing the
 same Event object.  duh.
] 
[FIX #2832: Setting SplitObjs=NO doesn't disable -split-objs in GHC
Simon Marlow <marlowsd at gmail.com>**20090311110058
 Ignore-this: d5f55ecea5803c1ae745a03d051cfa3f
 Now ghc --info reports whether-split-objs is supported, rather than
 whether the libraries were built using -split-objs.
] 
[FIX #2976: fix buggy implementation of shadowing in GHC.getBindings
Simon Marlow <marlowsd at gmail.com>**20090311102007
 Ignore-this: b8320d35defa11b29632bd402a3eef4e
] 
[Don't put a trailing / on the mingw include path
Ian Lynagh <igloo at earth.li>**20090310172242] 
[Fix a bug which sometimes caused extra major GCs to be performed
Simon Marlow <marlowsd at gmail.com>**20090309140004
 Ignore-this: 5127ff02153781823abb21fbb6f233f5
 A long-running GC would cause the timer signal to declare the system
 to be idle, which would cause a major GC immediately following the
 current GC.  This only happened with +RTS -N2 or greater.
] 
[Redesign 64-bit HEAP_ALLOCED (FIX #2934 at the same time)
Simon Marlow <marlowsd at gmail.com>**20090309121300
 Ignore-this: 4018145c528e52995d1feb7636e34384
 
 After much experimentation, I've found a formulation for HEAP_ALLOCED
 that (a) improves performance, and (b) doesn't have any race
 conditions when used concurrently.  GC performance on x86_64 should be
 improved slightly.  See extensive comments in MBlock.h for the
 details.
] 
[Partial fix for #2917
Simon Marlow <marlowsd at gmail.com>**20090306100018
 Ignore-this: d62309f9a2b682cc2b5ef0bb4376ea54
 
  - add newAlignedPinnedByteArray# for allocating pinned BAs with
    arbitrary alignment
 
  - the old newPinnedByteArray# now aligns to 16 bytes
 
 Foreign.alloca will use newAlignedPinnedByteArray#, and so might end
 up wasting less space than before (we used to align to 8 by default).
 Foreign.allocaBytes and Foreign.mallocForeignPtrBytes will get 16-byte
 aligned memory, which is enough to avoid problems with SSE
 instructions on x86, for example.
 
 There was a bug in the old newPinnedByteArray#: it aligned to 8 bytes,
 but would have failed if the header was not a multiple of 8
 (fortunately it always was, even with profiling).  Also we
 occasionally wasted some space unnecessarily due to alignment in
 allocatePinned().
 
 I haven't done anything about Foreign.malloc/mallocBytes, which will
 give you the same alignment guarantees as malloc() (8 bytes on
 Linux/x86 here).
] 
[Don't force HSCOLOUR_SRCS = YES when validating
Ian Lynagh <igloo at earth.li>**20090308171633
 This removes a burden from developers, and I can't remember an
 occasion where it would have caught a regression.
] 
[Add CONTRACT to the pragmas that we recognise.
Ian Lynagh <igloo at earth.li>**20090306194826
 It's used by ESC/Haskell.
] 
[Generate lots of __inline_me during vectorisation
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20090307135652] 
[Special-case desugaring of simple parallel array comprehensions
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20090307134049] 
[Make LDV_FILL_SLOP use a forwards loop rather than a backwards loop
Ian Lynagh <igloo at earth.li>**20090306155124] 
[Fix warning
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20090306123645] 
[Try not to avoid vectorising purely scalar functions
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20090306115508] 
[Package dph needs to be cleaned in stage=1, too
Manuel M T Chakravarty <chak at cse.unsw.edu.au>**20090306031628
 Ignore-this: b67f993abfbbe47c6bd417049955b9be
] 
[Add --version to runghc. Trac #2757.
Ian Lynagh <igloo at earth.li>**20090305162045
 We use the GHC version number, as the old runghc one doesn't seem very
 useful.
] 
[add final newlines
Simon Marlow <marlowsd at gmail.com>**20090305140014
 My Windows build has started complaining about lacking final newlines,
 I'm not entirely sure why.
] 
[remove foo.exe.manifest when --embed-manifest is on
Simon Marlow <marlowsd at gmail.com>**20090305112726] 
[add --with-ld=c:/mingw/bin/ld
Simon Marlow <marlowsd at gmail.com>**20090305112618] 
[Document -fwarn-unrecognised-pragmas; fixes trac #3031
Ian Lynagh <igloo at earth.li>**20090305143128] 
[On OS X/x86, tell gcc to generate instructions for i686. Fixes trac #2983.
Ian Lynagh <igloo at earth.li>**20090305142050
 By default, gcc on OS X will generate SSE instructions, which need
 things 16-byte aligned, but we don't 16-byte align things. Thus drop
 back to generic i686 compatibility.
] 
[By default, only HsColour the docs if we find HsColour. Fixes trac #3004.
Ian Lynagh <igloo at earth.li>**20090305132723
 If you manually set HSCOLOUR_SRCS=YES then the build will fail if
 HsColour wasn't found.
] 
[Make -fdicts-cheap cope with implication constraints
simonpj at microsoft.com**20090305134447
 Ignore-this: 5fe66cc26e4dc6f233c73350cef7a110
 
 See the Note [Dictionary-like types] in TcType for the full story here
 Should only affect programs that use -fdicts-cheap, for
 which you'll get better arities
 
] 
[Finally fix Trac #3066
simonpj at microsoft.com**20090305090935
 Ignore-this: 8734c1799f854d9da6be76a9c134335e
 
 This is a fix to 
   Tue Mar  3 17:42:58 GMT 2009  simonpj at microsoft.com
     * Fix Trac #3066: checking argument types in foreign calls
 which I embarassingly got wrong.
 
 Have to be careful when expanding recursive newtypes.
 
 Pls merge.
 
] 
[Fix a broken link. Spotted by Norman Ramsey in trac #3068.
Ian Lynagh <igloo at earth.li>**20090304165351] 
[Fix spelling (Trac#3069)
simonpj at microsoft.com**20090304092232
 Ignore-this: fee0f1d060c6c1c7a875943fe543c4fa
] 
[Layout only
simonpj at microsoft.com**20090304091956
 Ignore-this: 4410b2b26227263b24fd5aa7d2144ea0
] 
[Fix a long-standing latent bug (and the build): check res_ty not sig_ty
simonpj at microsoft.com**20090304091913
 Ignore-this: 3494ed3f342b63840eef791a5200695
] 
[Fix #3067: GHCi panics with 'initTc:LIE' while :stepping on code with funny types
pepe iborra <mnislaih at gmail.com>**20090303193706
 
 The problem is that calls to boxyUnify would panic if the types involved
 contained type functions. 
 It looks like one should wrap these calls with getLIE, although I don't
 really know what I am doing here
 
 
] 
[Fix Trac #3066: checking argument types in foreign calls
simonpj at microsoft.com**20090303174258
 Ignore-this: c07b0df24b9965b190dc0e0797401c51
 
 When checking argument types in a foreign call we were stupidly
 looking through foralls.  The fix is easy.
 
 Merge to 6.10.2
 
] 
[Fix Trac #3057 in deriving Functor 
simonpj at microsoft.com**20090303170612
 Ignore-this: 7d7783868e4684930f75c3b35c18c586
 
 The universal type variables of a data constructor are not necessarily
 identical to those of its parent type constructor, especially if the
 data type is imported.
 
 While I was at it, I did a significant refactoring to make all this
 traversal of types more comprehensible, by adding the data type
 FFoldType.
 
] 
[fix assertion failure with -debug non-threaded RTS (by deleting code!)
Simon Marlow <marlowsd at gmail.com>**20090303143942
 Ignore-this: 352f3c57979529f44ea92edbf1acbf07
] 
[improvements: generate LaTeX tables for more than one run
Simon Marlow <marlowsd at gmail.com>**20090303141346
 Ignore-this: 47588f0c4d046f2b5ff0dc7be38777c0
] 
[A few bug fixes; some improvements spurred by paper writing
dias at eecs.harvard.edu**20090303150228
 Among others:
 - Fixed Stg->C-- translation of let-no-escapes -- it's important to use the
   right continuation...
 - Fixed infinite recursion in X86 backend (shortcutJump mishandled infinite loops)
 - Fixed yet another wrong calling convention -- primops take args only in vanilla regs,
   but they may return results on the stack!
 - Removed StackInfo from LGraph and Block -- now in LastCall and CmmZ
 - Updated avail-variable and liveness code
 
] 
[Comments only
simonpj at microsoft.com**20090303111513
 Ignore-this: 5c2a7c2a8116fb05e0e035baea9566fa
] 
[Filter out carriage returns in doc strings
David Waern <david.waern at gmail.com>**20090228145351
 
 We want the internal format to contain LFs only. This makes it easier to work
 with the doc strings for clients of the GHC API.
] 
[z-encode digits at the start of a symbol name; fixes trac #2997
Ian Lynagh <igloo at earth.li>**20090227180029
 Digits already have a couple of meanings in z-encoding (Z3T is a tuple,
 and z123U is a unicode character), so we encode digits as unicode
 characters to avoid trying to squeeze in another meaning.
 
 Also removed a little GHC < 6.2 compatibility hack.
] 
[Whitespace only
Ian Lynagh <igloo at earth.li>**20090227163435] 
[Improve documentation of bang patterns
simonpj at microsoft.com**20090227101503
 Ignore-this: fa7bf72db82a612d16d44a93f1537351
] 
[Use 'nonIOok' instead of 'True'; cosmetics only
simonpj at microsoft.com**20090223101659
 Ignore-this: 80200cf3aec5abb95c6b23ef37fb590a
] 
[Tweak +RTS --info docs
Ian Lynagh <igloo at earth.li>**20090227020758] 
[In +RTS --info output, use YES rather than Yes
Ian Lynagh <igloo at earth.li>**20090227010230] 
[FIX #1891 (describe +RTS --info output in GHC user guide)
Andrew Coppin <andrewcoppin at btinternet.com>**20090214150234] 
[If we are given -Werror, then pass -Werror to cpp
Ian Lynagh <igloo at earth.li>**20090226001606] 
[Strip tag bits from closure pointers before trying to deference them.
Ben.Lippmeier at anu.edu.au**20090224101346] 
[SPARC NCG: Split out sanity checking into its own module
Ben.Lippmeier at anu.edu.au**20090223071207] 
[SPARC NCG: Add jumps to end of blocks when working out condition codes
Ben.Lippmeier at anu.edu.au**20090223062135] 
[SPARC NCG: Enforce the invariant that each block ends with a jump.
Ben.Lippmeier at anu.edu.au**20090223060707
 
  - If each basic block doesn't end with a jump then the register
    liveness determinator will get the cross-block liveness info
    wrong, resulting in a bad allocation.
] 
[Add targets clean.library.dph and remake.library.dph
Manuel M T Chakravarty <chak at cse.unsw.edu.au>**20090224112037
 Ignore-this: bc561099d9e32b6c7416bd60e5516733
 - Package dph ist a meta package that contains a number of subpackages inside.
 - This patch adds two targets to clean and remake all subpackages with a
   single command.
] 
[:steplocal and :stepmodule should not polute trace history
Peter Hercek <phercek at gmail.com>**20090222201002] 
[Do not print anything to stdout when stopping at a breakpoint with custom code attached
Peter Hercek <phercek at gmail.com>**20090222195551
 
] 
[newPinnedByteArray#: align the result to 16-bytes (part of #2917)
Simon Marlow <marlowsd at gmail.com>*-20090219103245
 Ignore-this: 1aa4cd40aef9690760b3bf65e284efcb
] 
[Only use STAGE3_PACKAGE_CONF for building GHC itself
Ian Lynagh <igloo at earth.li>**20090221151530
 In particular, when building dph with the stage2 compiler, we want to
 register it in the main package.conf.
] 
[Export blockUserSignals and unblockUserSignals (needed for #2870)
Simon Marlow <marlowsd at gmail.com>**20090219113418
 Ignore-this: b7c26c801e515c6848f1f8fca024198f
] 
[#2860: remove redundant unblocking of signals
Simon Marlow <marlowsd at gmail.com>**20090219103258
 Ignore-this: c603e23fbdc7f7f7de7fcd9a7aa28f0b
] 
[newPinnedByteArray#: align the result to 16-bytes (part of #2917)
Simon Marlow <marlowsd at gmail.com>**20090219103245
 Ignore-this: 1aa4cd40aef9690760b3bf65e284efcb
] 
[Rewrite of signal-handling (ghc patch; see also base and unix patches)
Simon Marlow <marlowsd at gmail.com>**20090219103142
 Ignore-this: aca7c3e258224fadc6f0f2fee86b2971
 
 The API is the same (for now).  The new implementation has the
 capability to define signal handlers that have access to the siginfo
 of the signal (#592), but this functionality is not exposed in this
 patch.
 
 #2451 is the ticket for the new API.
 
 The main purpose of bringing this in now is to fix race conditions in
 the old signal handling code (#2858).  Later we can enable the new
 API in the HEAD.
 
 Implementation differences:
 
  - More of the signal-handling is moved into Haskell.  We store the
    table of signal handlers in an MVar, rather than having a table of
    StablePtrs in the RTS.
 
  - In the threaded RTS, the siginfo of the signal is passed down the
    pipe to the IO manager thread, which manages the business of
    starting up new signal handler threads.  In the non-threaded RTS,
    the siginfo of caught signals is stored in the RTS, and the
    scheduler starts new signal handler threads.
] 
[Fix an off-by-one; fixes the second bug in trac #3001
Ian Lynagh <igloo at earth.li>**20090218235620] 
[Install libHSffi_p.a
Ian Lynagh <igloo at earth.li>**20090218165913] 
[Fix ghc and ghci wrappers on Windows
Ian Lynagh <igloo at earth.li>**20090218005034] 
[Make versioned ghc and ghci programs on Windows; fixes trac #2827
Ian Lynagh <igloo at earth.li>**20090217215048] 
[SPARC NCG: Unsigned comparisons are unsigned
Ben.Lippmeier at anu.edu.au**20090217035200] 
[SPARC NCG: Fix word size conversions
Ben.Lippmeier at anu.edu.au**20090217023322] 
[SPARC NCG: Split up into chunks, and fix warnings.
Ben.Lippmeier at anu.edu.au**20090216020038] 
[SPARC NCG: Reorganise Reg and RegInfo
Ben.Lippmeier at anu.edu.au**20090216000945] 
[NCG: Cleanup old file
Ben.Lippmeier at anu.edu.au**20090216000847] 
[NCG: validate fixes for ppc-darwin
Ben.Lippmeier at anu.edu.au**20090215083601] 
[NCG: validate fixes for ghc-6.6
Ben.Lippmeier at anu.edu.au**20090215071334] 
[NCG: validate fixes for i386-darwin
Ben.Lippmeier at anu.edu.au**20090215073234] 
[NCG: validate fixes for x86_64-linux
Ben.Lippmeier at anu.edu.au**20090215072325
 Ignore-this: 1b81b402e6f7ef0c76656a15c3a9f139
] 
[NCG: Haddock validate fix
Ben.Lippmeier at anu.edu.au**20090215063710] 
[NCG: Validate fixes for x86-linux
Ben.Lippmeier at anu.edu.au**20090215062321] 
[SPARC NCG: Don't release top half of f6 and f8
Ben.Lippmeier at anu.edu.au**20090215061940] 
[NCG: Split up the native code generator into arch specific modules
Ben.Lippmeier at anu.edu.au**20090215055158
 
   - nativeGen/Instruction defines a type class for a generic
     instruction set. Each of the instruction sets we have, 
     X86, PPC and SPARC are instances of it.
   
   - The register alloctors use this type class when they need
     info about a certain register or instruction, such as
     regUsage, mkSpillInstr, mkJumpInstr, patchRegs..
   
   - nativeGen/Platform defines some data types enumerating
     the architectures and operating systems supported by the 
     native code generator.
   
   - DynFlags now keeps track of the current build platform, and 
     the PositionIndependentCode module uses this to decide what
     to do instead of relying of #ifdefs.
   
   - It's not totally retargetable yet. Some info info about the
     build target is still hardwired, but I've tried to contain
     most of it to a single module, TargetRegs.
   
   - Moved the SPILL and RELOAD instructions into LiveInstr.
   
   - Reg and RegClass now have their own modules, and are shared
     across all architectures.
] 
[SPARC NCG: Make linear allocator use info in SPARC.Regs again
Ben.Lippmeier at anu.edu.au**20090211054021] 
[SPARC NCG: Enumerate freeRegs / globalRegMaybe instead of using #ifdefery
Ben.Lippmeier at anu.edu.au**20090211025330] 
[NCG: Split PprMach into arch specific modules
Ben.Lippmeier at anu.edu.au**20090205081242
   - There are still some #ifdefs for choosing between i386, x86_64,
       linux, darwin and other OS's.
   - Also reformat SPARC.RegInfo to remove some of the visual noise.
] 
[Put RelaxedPolyRec in the cabal file rather than a pragma
Ian Lynagh <igloo at earth.li>**20090213185635
 This should fix the build with GHC 6.6
] 
[update Sparc store/load barrier (#3019), and fix comments
Simon Marlow <marlowsd at gmail.com>**20090212092340
 Ignore-this: 9d993cb743a0c015f0fc974000a7c7d7
] 
[comment wibbles
Simon Marlow <marlowsd at gmail.com>**20090211152844
 Ignore-this: b95f30df3aa53295a6dc8fd011cdfdaa
] 
[NCG: Use sync instead of msync for a memory barrier for powerpc
Ben.Lippmeier at anu.edu.au**20090213004910
   Darwin 9.6.0 + GCC 4.0.1 doesn't understand "msync". 
   I think "sync" means the same thing.
] 
[NCG: Split block reorder thing in linear allocator into separate fn
Ben.Lippmeier at anu.edu.au**20090213004819] 
[NCG: Validate fixes for powerpc
Ben.Lippmeier at anu.edu.au**20090213004725] 
[NCG: Add missing ops to powerpc isJumpish
Ben.Lippmeier at anu.edu.au**20090213004647] 
[Only pass --with-hscolour to cabal-bin once
Ian Lynagh <igloo at earth.li>**20090212141023] 
[Quote some more arguments to cabal-bin
Ian Lynagh <igloo at earth.li>**20090212141120] 
[Add more targets to the list that we need to include all libraries for
Ian Lynagh <igloo at earth.li>**20090211173333] 
[Fix Trac #3017: ensure that we quantify over enough type variables when equalities are involved
simonpj at microsoft.com**20090211174733
 Ignore-this: 92838c0a556240a8fb7744e3f29aa0f9
 
 The function FunDeps.grow was not doing the right thing when type equality
 constraints were involved.  That wasn't really its fault: its input was
 being filtered by fdPredsOfInsts.
 
 To fix this I did a bit of refactoring, so that the (revolting) fdPredsOfInsts
 is now less important (maybe we can get rid of it in due course).  The 'grow'
 function moves from FunDeps to
 	 Inst.growInstsTyVars
 	 TcMTType.growThetaTyVars
 	 TcMType.growTyVars
 
 The main comments are with the first of these, in
 Note [Growing the tau-tvs using constraints] in Inst.
 
 Push to the branch if conflict free.
 
 
] 
[general tidy up
Simon Marlow <marlowsd at gmail.com>**20090211152429
 Ignore-this: 9b6bbb08749b372bdd387a25405570f4
] 
[one more bugfix: a load/load memory barrier is required in stealWSDeque_()
Simon Marlow <marlowsd at gmail.com>**20090211152421
 Ignore-this: d89fff02d6b8c63272c9171e64d3510b
] 
[Fix trac #3001: Biographical profiling segfaults
Ian Lynagh <igloo at earth.li>**20090211153457
 We were zeroing the wrong memory
] 
[Tweak the mangler; fixes trac #2871
Ian Lynagh <igloo at earth.li>**20090211150340
 It was getting confused by lines like:
  # 9 "C:\Temp\/ghc620_0/ghc620_0.hc" 1
] 
[On sparc, pass -mcpu=v9 when assembling with object splitting enabled
Ian Lynagh <igloo at earth.li>**20090211141600
 Fixes trac #2872.
] 
[Turn another ASSERT into a WARN (temproraily)
simonpj at microsoft.com**20090211094028
 Ignore-this: 8982802501f7966ce482ef360aac6ec0
 
 Fix Trac #3011 by temporarily making it only a WARN if we assign twice
 to the same unification variable.
 
 
] 
[Improve documentation for LANGUAGE pragma (esp wrt cpp)
simonpj at microsoft.com**20090211093939
 Ignore-this: 2c690e39766bb9c49c0e7bf8faecad47
] 
[Don't use the absolute path to the bindist tarball
Ian Lynagh <igloo at earth.li>**20090210215215
 On Windows, we end up doing something like
     rsync c:/build/ghc-6.10.1-unknown-mingw32.tar.bz2 haskell.org:dist
 and it thinks that it is meant to get the file from the host called "c".
 Now we just do
     rsync ghc-6.10.1-unknown-mingw32.tar.bz2 haskell.org:dist
 so rsync understand what we mean.
] 
[Fix cleaning and installing the libraries
Ian Lynagh <igloo at earth.li>**20090210225538
 When cleaning or installing, we need to ignore what $stage is, and
 just clean/install all the libraries.
] 
[scheduleYield(): check the wakeup queue before yielding
Simon Marlow <marlowsd at gmail.com>**20090209112536
 Ignore-this: d4aaf83d79ad8ca3ac2d904234eef599
] 
[Improvements to the "can't find module" error message (#2980)
Simon Marlow <marlowsd at gmail.com>**20090206165743
 Ignore-this: 2de565e20f68ebdc3865df7391c81437
 If the module was found in multiple hidden packages, we list them all.
 
 Could not find module `Data.Generics':
   it is a member of the hidden package `base-3.0.3.0'
   it is a member of the hidden package `syb'
   Use -v to see a list of the files searched for.
] 
[build fix: add -I../rts/parallel
Simon Marlow <marlowsd at gmail.com>**20090206145921
 Ignore-this: b4ab2760dd111b790421cf451289681f
] 
[crucial bugfix: add a store/load memory barrier to popWSDeque()
Simon Marlow <marlowsd at gmail.com>**20090206130804
 Ignore-this: 57d044afb7c635af2948d24d9c43a23f
] 
[bugfix: an unsigned comparison should be signed
Simon Marlow <marlowsd at gmail.com>**20090206130745
 Ignore-this: 981510f94dcb81e5896703f610b933e5
] 
[tiny cleanup
Simon Marlow <marlowsd at gmail.com>**20090206130715
 Ignore-this: 9497f8f6fbce2d0c23fd1d0eee4cdeda
] 
[add debugging code and comments
Simon Marlow <marlowsd at gmail.com>**20090206130609
 Ignore-this: 5f0e1e3fa0148da079f13eb07430c09b
] 
[add an assertion
Simon Marlow <marlowsd at gmail.com>**20090206130338
 Ignore-this: f4c0f539142c0dfdc57c70d1c6136f10
] 
[add a single-threaded version of cas()
Simon Marlow <marlowsd at gmail.com>**20090206130130
 Ignore-this: 80d5e7a3c35182d7d87e95c5c4096821
] 
[add a store/load memory barrier
Simon Marlow <marlowsd at gmail.com>**20090206130115
 Ignore-this: e0bc8f61877868ec8c2ccd9dee8f956d
] 
[Refactor the spark queue implementation into a generic work-stealing deque
Simon Marlow <marlowsd at gmail.com>**20090205124648
 Ignore-this: 1a7ee74388f30301d154d050d853a7a9
 So we can use this abstraction elsewhere in the RTS
] 
[Handle the case where setitimer(ITIMER_VIRTUAL) is not always available
Ian Lynagh <igloo at earth.li>**20090208191431
 Patch from sthibaul. Fixes trac #2883.
] 
[Correct an IsFunction that should be IsData
Ian Lynagh <igloo at earth.li>**20090207005834] 
[Fix calling maths functions when compiling via C
Ian Lynagh <igloo at earth.li>**20090206223119] 
[Add a panic to fix the build on amd64/Linux; to be fixed properly later
Ian Lynagh <igloo at earth.li>**20090206153135] 
[Fix the build on OS X: only understands .space, not .skip
Ian Lynagh <igloo at earth.li>**20090206151203] 
[Fix building with GHC 6.8
Ian Lynagh <igloo at earth.li>**20090206143432] 
[Fix the build on amd64/Linux
Ian Lynagh <igloo at earth.li>**20090206143420] 
[When generating C, don't pretend functions are data
Ian Lynagh <igloo at earth.li>**20090206140249
 We used to generated things like:
     extern StgWordArray (newCAF) __attribute__((aligned (8)));
     ((void (*)(void *))(W_)&newCAF)((void *)R1.w);
 (which is to say, pretend that newCAF is some data, then cast it to a
 function and call it).
 This goes wrong on at least IA64, where:
     A function pointer on the ia64 does not point to the first byte of
     code. Intsead, it points to a structure that describes the function.
     The first quadword in the structure is the address of the first byte
     of code
 so we end up dereferencing function pointers one time too many, and
 segfaulting.
] 
[NCG: Validate fixes
Ben.Lippmeier at anu.edu.au**20090205080624] 
[NCG: Split RegAllocInfo into arch specific modules
Ben.Lippmeier at anu.edu.au**20090204055126] 
[NCG: Move RegLiveness -> RegAlloc.Liveness
Ben.Lippmeier at anu.edu.au**20090204035250] 
[NCG: Rename MachRegs, MachInstrs -> Regs, Instrs to reflect arch specific naming
Ben.Lippmeier at anu.edu.au**20090204034107] 
[NCG: Split MachRegs.hs into arch specific modules
Ben.Lippmeier at anu.edu.au**20090204030729] 
[NCG: Fix validate
Ben.Lippmeier at anu.edu.au**20090205030642] 
[SPARC NCG: Fix some haddock problems.
Ben.Lippmeier at anu.edu.au**20090204043802] 
[SPARC NCG: Add Pwr callish mach op
Ben.Lippmeier at anu.edu.au**20090204000905] 
[NCG: Split MachInstrs into arch specific modules
Ben.Lippmeier at anu.edu.au**20090203081327] 
[NCG: Move the graph allocator into its own dir
Ben.Lippmeier at anu.edu.au**20090203071411] 
[SPARC NCG: Update cabal file
Ben.Lippmeier at anu.edu.au**20090203062746] 
[SPARC NCG: Give regs o0-o5 back to the allocator
Ben.Lippmeier at anu.edu.au**20090203062433] 
[NCG: Split out joinToTargets from linear alloctor into its own module.
Ben.Lippmeier at anu.edu.au**20090203040540
 
  * Also fix a nasty bug when creating fixup code that has a cyclic
    register movement graph.
] 
[NCG: Split linear allocator into separate modules.
Ben.Lippmeier at anu.edu.au**20090202055301] 
[SPARC NCG: Keep track of destinations when doing a tabled jump
Ben.Lippmeier at anu.edu.au**20090123052247] 
[SPARC NCG: Do general 64 bit addition and conversion
Ben.Lippmeier at anu.edu.au**20090123035152] 
[SPARC NCG: Don't need a write barrier for store synchronisation on SPARC under TSO.
Ben.Lippmeier at anu.edu.au**20090123005051] 
[SPARC NCG: Use .skip instead of .space in assembler
Ben.Lippmeier at anu.edu.au**20090122225150
 
  - In the GNU assembler they mean the same thing
  - The Solaris assembler only has .skip
 
] 
[Check -XGADTs in (a) type family decls (b) pattern matches
simonpj at microsoft.com**20090204150919
 Ignore-this: 19a6268814440493eea436c48daa8414
 
 Following Trac #2905, we now require -XGADTs for *pattern matches* on
 GADTs, not just on *definitions*.
 
 Also I found that -XGADTs wasn't being checked when declaring type families,
 so I fixed that too.
 
] 
[Improve error reports for kind checking (Trac #2994)
simonpj at microsoft.com**20090204150736
 Ignore-this: 402fe9f025abf8e2a3088383c23a89f6
 
 I followed the suggestion in Trac #2994, which took longer than I
 expected.  As usual I did a bit of tidying up at the same time,
 and improved a few other error reports.
 
] 
[Further wibbles to 'deriving' for functor-like things
simonpj at microsoft.com**20090204150625
 Ignore-this: 1a69dfc25f741148b5b817aa66803d5c
] 
[leave out rts/ from include-dirs in the inplace rts package
Simon Marlow <marlowsd at gmail.com>**20090204104748
 Ignore-this: 3a5c7e53121421600aa21a53b57cc9fb
 it shouldn't be there, and might hide bugs
] 
[Fix Trac #2999: change an ASSERT to a WARN
simonpj at microsoft.com**20090204083800
 Ignore-this: db6fdc200a06ba5f067d567ea64f89e1
 
 A bug in the constraint simplifier means that an equality can be solved
 twice.  It's harmless, and will go away with the new constraint simplifier.
 Hence warning, to avoid unnecessary outright failure on eg Trac #2999.
 
] 
[Improve transferPolyIdInfo for value-arg abstraction
simonpj at microsoft.com**20090204082534
 Ignore-this: 687def702522c3516050de1e14e5219f
 
 If we float a binding out of a *value* lambda, the fixing-up of IdInfo
 is a bit more complicated than before.  Since in principle FloatOut
 can do this (and thus can do full lambda lifting), it's imporrtant
 that transferPolyIdInfo does the Right Thing.
 
 This doensn't matter unless you use FloatOut's abilty to lambda-lift, 
 which GHC mostly doesn't, yet.  But Max used it and tripped over this bug.
 
] 
[Two small improvements to LiberateCase
simonpj at microsoft.com**20090204081919
 Ignore-this: ca41d8d9ef1b409b32761b1a69bd1400
 
 Max Bolingbroke suggested these two small improvements to LiberateCase
 (most of the size increase is comments :-)):
 
 a) Do LiberateCase on small functions even if they are mutually recursive
    See Note [Small enough]
 
 b) Don't do LiberateCase on functions for which it'd be fruitless,
    namely when a free varible is scrutinised *outside* the function
    See Note [Avoiding fruitless liberate-case]
 
 There is virtually no effect on nofib, but Max tripped over cases
 where it mattered slightly.
 
 
] 
[Robustify lookupFamInstEnv, plus some refactoring
simonpj at microsoft.com**20090115134818
 Ignore-this: 493fdbd370a714bf9677b16d2ba533d7
 
 This patch deals with the following remark
 
      Suppose we have
             type family T a :: * -> *
             type instance T Int = []
 
      and now we encounter the type (T Int Bool).  If we call
      lookupFamInstEnv on (T Int Bool) we'll fail, because T has arity 1.
      Indeed, I *think* it's a precondition of lookupFamInstEnv that the
      supplied types exactly match the arity of the type function.  But
      that precondition is neither stated, nor is there an assertion to
      check it.
 
 With this patch, lookupFamInstEnv can take "extra" type arguments in
 the over-saturated case, and does the Right Thing.
 
 There was a nearly-identical function lookupFamInstEnvUnify, which
 required the precisely analogous change, so I took the opportunity 
 to combine the two into one function, so that bugs can be fixed in one
 place.  This was a bit harder than I expected, but I think the result
 is ok.  The conflict-decision function moves from FamInst to FamInstEnv.
 Net lines code decreases, although there are more comments.
 
 
 
] 
[Robustify lookupFamInstEnv
simonpj at microsoft.com**20090114140117
 Ignore-this: ee312b2b59155102d88397a33c591ad2
 
 Suppose we have
         type family T a :: * -> *
         type instance T Int = []
 
 and now we encounter the type (T Int Bool).  That is perfectly
 fine, even though T is over-saturated here.
 
 This patch makes lookupFamInstEnv robust to such over-saturation.
 Previously one caller (TcTyFuns.tcUnfoldSynFamInst) dealt with
 the over-saturation case, but the others did not. It's better
 to desl with the issue at the root, in lookupFamInstEnv itself.
 
] 
[Improve trace message
simonpj at microsoft.com**20090113175806
 Ignore-this: 2276ebc89246553cbb6a1a4cd7c76fd9
] 
[Build dph with the stage2 compiler
Ian Lynagh <igloo at earth.li>**20090203213613
 It will use TH, so needs to be built with stage2.
] 
[Optimise writing out the .s file
Simon Marlow <marlowsd at gmail.com>**20090202145013
 I noticed while working on the new IO library that GHC was writing out
 the .s file in lots of little chunks.  It turns out that this is a
 result of using multiple printDocs to avoid space leaks in the NCG,
 where each printDoc is finishing up with an hFlush.  
 
 What's worse, is that this makes poor use of the optimisation inside
 printDoc that uses its own buffering to avoid hitting the Handle all
 the time.
 
 So I hacked around this by making the buffering optimisation inside
 Pretty visible from the outside, for use in the NCG.  The changes are
 quite small.
] 
[better error message for missing package-qualified modules in ghc -M
Simon Marlow <marlowsd at gmail.com>**20090123142001] 
[add wiki commentary links
Simon Marlow <marlowsd at gmail.com>**20090130110844
 Ignore-this: 3f27b426bc5ad54157edc06a421e28bf
] 
[Force the result of user-defined commands
Simon Marlow <marlowsd at gmail.com>**20090130091919
 Ignore-this: f756d00cc062072e1945d63cfbbeb98
 so that exceptions are reported with "*** Exception" instead of as a panic.
] 
[Improve error reporting for precedence errors
simonpj at microsoft.com**20090202164450
 Ignore-this: 493643a40c119ba6ad54d0f220dc4606
 
 Adopt the suggestion of Trac #2993, and tidy up the reporting of
 precedence parsing errors somewhat.
 
] 
[Add the ability to derive instances of Functor, Foldable, Traversable
simonpj at microsoft.com**20090202134829
 Ignore-this: f3013fefdd65f75fb5060ef0e002f40e
 
 This patch is a straightforward extension of the 'deriving' mechanism.
 The ability to derive classes Functor, Foldable, Traverable is controlled
 by a single flag  -XDeriveFunctor.  (Maybe that's a poor name.)
 
 Still to come: documentation
 
 Thanks to twanvl for developing the patch
 
 
] 
[Comments about injecting implicit bindings
simonpj at microsoft.com**20090130175403
 Ignore-this: 7aa1a69f5a16811272bed0683234aca3
] 
[Warn in configure if it looks like make 3.80 is about to be used
Ian Lynagh <igloo at earth.li>**20090201203505
 We get caught by
     http://savannah.gnu.org/bugs/index.php?1516
     $(eval ...) inside conditionals causes errors
 with make 3.80, so warn the user if it looks like they're about to
 try to use it.
] 
[Fix Trac #2985: generating superclasses and recursive dictionaries
simonpj at microsoft.com**20090130152738
 Ignore-this: 921ab14e850085ddbe545b078e02120b
 
 The Note [Recursive instances and superclases] explains the subtle
 issues to do with generating the bindings for superclasses when
 we compile an instance declaration, at least if we want to do the
 clever "recursive superclass" idea from the SYB3 paper.
 
 The old implementation of tcSimplifySuperClasses stumbled when
 type equalities entered the picture (details in the Note); this
 patch fixes the problem using a slightly hacky trick.  When we
 re-engineer the constraint solver we'll want to keep an eye on 
 this.
 
 Probably worth merging to the 6.10 branch.
 
 
] 
[White space only
simonpj at microsoft.com**20090130152705
 Ignore-this: fdc9c862fa91a57bdb81b7370eb482bd
] 
[Two more wibbles to CorePrep (fixes HTTP package and DPH)
simonpj at microsoft.com**20090129131954
 Ignore-this: ee42b5f5a73a5277b5fd0e8c679e8fbe
 
 Ensuring that 
   a) lambdas show up only on the RHSs of binding after CorePrep
   b) the arity of a binding exactly matches the maifest lambdas
 is surprisingly tricky.
 
 I got it wrong (again) in my recent CorePrep shuffling, which broke
 packages HTTP and DPH.  This patch fixes both.
 
] 
[Remove the doc/ contents from the GMP tarball
Ian Lynagh <igloo at earth.li>**20090128200749
 They are GFDLed, which causes problems for Debian
] 
[#2973: we should virtualise the CWD inside the GHC API, not in the client
Simon Marlow <marlowsd at gmail.com>**20090127121648
 Ignore-this: 5d57181d25a0661ad20fa48154f4a80
 The problem is that we install the client's CWD before calling
 runStmt, but runStmt has to load modules before running the code.  We
 need to install the CWD just before running the code instead, which
 means it has to be done inside runStmt (and resume).
] 
[Fix detection of i386 vs. x86_64 for -pc-solaris
Simon Marlow <marlowsd at gmail.com>**20090127095343
 Ignore-this: b415138105477e7edab96994babbe6d2
 From #2951
] 
[Implement #2191 (traceCcs# -- prints CCS of a value when available -- take 3)
Samuel Bronson <naesten at gmail.com>**20090127084825
 Ignore-this: ede3f18c70cfb7979ef21d7e8077dad6
 In this version, I untag R1 before using it, and even enter R2 at the
 end rather than simply returning it (which didn't work right when R2
 was a thunk).
] 
[add comment for ASSERT_LOCK_HELD()
Simon Marlow <marlowsd at gmail.com>**20090126140030
 Ignore-this: c3ce1e8df9d94eb92a17f4f58c496a41
] 
[Fix #2961: we lost some of the generated code for stack args in genCCall
Simon Marlow <marlowsd at gmail.com>**20090126150209
 Ignore-this: 77de911bfc98ecca566f1744dfe75a7b
 A real bug in the x86_64 native code gen: nice!
 
 This bug would have been caught by -Wall, and I would have gone though
 and Walled this file but I know Ben is hacking on this file quite
 heavily and I don't want to create undue conflicts.  Ben: it would be
 nice to enable -Wall here when you have time.
] 
[Make the libffi patch files portable
Ian Lynagh <igloo at earth.li>**20090123180015
 Solaris's patch can't apply them if the lines beginning "---" aren't
 preceeded by a "diff -ur foo bar" line.
] 
[SPARC NCG: Also do misaligned reads (this time for sure!)
Ben.Lippmeier at anu.edu.au**20090122092156] 
[SPARC NCG: Also do misaligned reads
Ben.Lippmeier at anu.edu.au**20090121232423] 
[When converting TH syntax to GHC syntax, need to put sections in parentheses
Ian Lynagh <igloo at earth.li>**20090121141706
 Fixes trac #2956
] 
[SPARC NCG: Add a SPARC version of rts_mkInt64 that handles misaligned closure payloads.
Ben.Lippmeier at anu.edu.au**20090121052334] 
[SPARC NCG: Reenable out of line 32 bit float ops
Ben.Lippmeier at anu.edu.au**20090121034716] 
[SPARC NCG: Clean up formatting and add comments in genCCall
Ben.Lippmeier at anu.edu.au**20090121025549] 
[SPARC NCG: Fix format problem when converting float to int
Ben.Lippmeier at anu.edu.au**20090121012624] 
[SPARC NCG: fill branch delay slot after tabled jump (doh!)
Ben.Lippmeier at anu.edu.au**20090121003729] 
[SPARC NCG: Add tabled switch
Ben.Lippmeier at anu.edu.au**20090120214914] 
[SPARC NCG: Fix 64bit integers returned from ccalls
Ben.Lippmeier at anu.edu.au**20090120090617] 
[#2875: Correct SYB's representation of Char
'Jose Pedro Magalhaes <jpm at cs.uu.nl>'**20090119112321] 
[Fix #2759: add ability to serialize Rational
'Jose Pedro Magalhaes <jpm at cs.uu.nl>'**20081209125551] 
[SPARC NCG: Fix warnings
Ben.Lippmeier at anu.edu.au**20090120075100] 
[SPARC NCG: Remove a comment that was confusing haddock
Ben.Lippmeier at anu.edu.au**20090116011853] 
[SPARC NCG: ppr 64 bit store sizes
Ben.Lippmeier at anu.edu.au**20090120074000] 
[SPARC NCG: Fix generation of 64 bit ops on 32 bit sparc
Ben.Lippmeier at anu.edu.au**20090120071536] 
[SPARC NCG: Add support for hardware divide
Ben.Lippmeier at anu.edu.au**20090120052113] 
[SPARC NCG: Redo code for integer sign extension
Ben.Lippmeier at anu.edu.au**20090115084105] 
[SPARC NCG: Fix signed/unsigned operand format bug
Ben.Lippmeier at anu.edu.au**20090115080004] 
[More fixes to the SPARC native code generator
Ben.Lippmeier at anu.edu.au**20090115055727
 
  * Fix loading of 64bit floats
  * Put SRT and other read only static data in the .text segment
] 
[Start fixing the SPARC native code generator
Ben.Lippmeier at anu.edu.au**20090114054416
 
   * Use BlockIds in branch instructions instead of Imms.
   * Assign FP values returned from C calls to the right regs
   * Fix loading of F32s
   * Add a SPARC version of the FreeRegs map to the linear allcator.
] 
[Fix some holes in the SPARC native code generator.
Ben.Lippmeier at anu.edu.au**20090112063310
 
 This makes about half the tests in codeGen/should_run work.
] 
[Untag closure pointers before trying to print them.
Ben.Lippmeier at anu.edu.au**20090112053421
 
 In RTS tracing code, need to untag the pointer before trying 
 to load the info table in printClosure()
] 
[Add missing documention of -Da DEBUG: apply flag to RTS help.
Ben.Lippmeier at anu.edu.au**20090112005625] 
[Better panic message in RegAllocLinear
Ben.Lippmeier at anu.edu.au**20090110025802] 
[Make the SPARC NCG compile again - it's still broken though.
Ben.Lippmeier at anu.edu.au**20090110014418] 
[Enable the native code generator for SPARC
Ben.Lippmeier at anu.edu.au**20090105070429] 
[Always use PTHREAD_MUTEX_ERRORCHECK to create mutexes when -DDEBUG
Ian Lynagh <igloo at earth.li>**20090118193328
 Linux defines PTHREAD_MUTEX_ERRORCHECK = PTHREAD_MUTEX_ERRORCHECK_NP
 anyway, so there's no need to special-case it.
] 
[Use error-checking mutexes on all platforms when DEBUG is on
Ian Lynagh <igloo at earth.li>**20090117215931
 Otherwise ASSERT_LOCK_HELD will cause deadlocks
] 
[Reinstate: Always check the result of pthread_mutex_lock() and pthread_mutex_unlock().
Ian Lynagh <igloo at earth.li>**20090117200955
 Sun Jan  4 19:24:43 GMT 2009  Matthias Kilian <kili at outback.escape.de>
     Don't check pthread_mutex_*lock() only on Linux and/or only if DEBUG
     is defined. The return values of those functions are well defined
     and should be supported on all operation systems with pthreads. The
     checks are cheap enough to do them even in the default build (without
     -DDEBUG).
     
     While here, recycle an unused macro ASSERT_LOCK_NOTHELD, and let
     the debugBelch part enabled with -DLOCK_DEBUG work independently
     of -DDEBUG.
] 
[Initialise and deinitialise the file_lock_mutex
Ian Lynagh <igloo at earth.li>**20090117023947] 
[Create package.conf when installing a bindist
Ian Lynagh <igloo at earth.li>**20090118110654] 
[validate fix on 32-bit
Simon Marlow <marlowsd at gmail.com>**20090114162834] 
[fix validate on Windows
Simon Marlow <marlowsd at gmail.com>**20090114155842] 
[UNDO: Always check the result of pthread_mutex_lock() and pthread_mutex_unlock().
Simon Marlow <marlowsd at gmail.com>**20090116114339
 Ignore-this: 6cc82d384582097785d78fba46ca29d2
 This patch caused problems on Mac OS X, undoing until we can do it better.
 
 rolling back:
 
 Sun Jan  4 19:24:43 GMT 2009  Matthias Kilian <kili at outback.escape.de>
   * Always check the result of pthread_mutex_lock() and pthread_mutex_unlock().
   
   Don't check pthread_mutex_*lock() only on Linux and/or only if DEBUG
   is defined. The return values of those functions are well defined
   and should be supported on all operation systems with pthreads. The
   checks are cheap enough to do them even in the default build (without
   -DDEBUG).
   
   While here, recycle an unused macro ASSERT_LOCK_NOTHELD, and let
   the debugBelch part enabled with -DLOCK_DEBUG work independently
   of -DDEBUG.
   
 
     M ./includes/OSThreads.h -30 +10
] 
[Update config.guess, config.sub and install.sh from automake-1.10.2
Simon Marlow <marlowsd at gmail.com>**20090116095311
 Ignore-this: cdc19dd28053a6a71283776ecb802c62
 In particular, config.guess should now know about x86_64-pc-solaris2
] 
[More useful error message when a package .hi file cannot be found:
Simon Marlow <marlowsd at gmail.com>**20090115122524
 Ignore-this: b595e2fac5d9b5214340f83a7d7dd730
 
 > import System.Process
 Could not find module `System.Process':
   There are files missing in the process-1.0.1.1 package,
   try running 'ghc-pkg check'.
   Use -v to see a list of the files searched for.
] 
[soup-up "ghc-pkg check"
Simon Marlow <marlowsd at gmail.com>**20090115122143
 Ignore-this: 6d29af258eb31d417d01fed167cd5d47
 
 We now look for missing files (including .hi files), and report all
 the packages that are transitively broken.
 
 $ ghc-pkg check 
 There are problems in package syb-0.1.0.0:
   dependency foo-4.0.0.0 doesn't exist
 There are problems in package process-1.0.1.1:
   file System/Process.hi is missing
 
 The following packages are broken, either because they have a problem
 listed above, or because they depend on a broken package.
 syb-0.1.0.0
 process-1.0.1.1
 base-3.0.3.0
 Cabal-1.7.0
 haskell98-1.0.1.0
 haddock-2.4.2
 ghc-6.11
] 
[document -feager-blackholing
Simon Marlow <marlowsd at gmail.com>**20090115093922
 Ignore-this: 5958a16c7148cb5df0f4b3f1e1dee6d6
] 
[External Core: re-add code I removed mistakenly in last commit
Tim Chevalier <chevalier at alum.wellesley.edu>**20090115002612] 
[External Core lib: lots of cleanup
Tim Chevalier <chevalier at alum.wellesley.edu>**20090114224428
 
 - Factor out code for applying newtypes from Check into CoreUtils
 - Use this code in Prep, which allowed for some simplification
 - Change Merge and ElimDeadCode to not flatten top-level binds
 - Add a flag for elimDeadCode to tell it whether to keep
 exported bindings or not.
 - Other things.
] 
[External Core: print out more precise dependency info
Tim Chevalier <chevalier at alum.wellesley.edu>**20090114221734
 
 Print out the same recursive/non-recursive binding groups
 that existed in internal Core in an External Core file,
 rather than dumping everything into one big recursive group.
] 
[Fix "make install": Put "[]" in the install package.conf
Ian Lynagh <igloo at earth.li>**20090114205945] 
[Remove redundant import; spotted by Thorkil Naur
Ian Lynagh <igloo at earth.li>**20090114181937] 
[Remove a redundant import
Ian Lynagh <igloo at earth.li>**20090114181212] 
[Detect when a C finalizer calls back to Haskell
Simon Marlow <marlowsd at gmail.com>**20090114121526
 Ignore-this: e361d7278e2478da2f300625076cc0ae
 This is illegal now, after the fix for #1364, but it turns out that
 the existing check for dodgy callbacks doesn't catch finalizers
 calling back, so we need another test.  This will be particularly
 important for 6.10.2, because the behaviour has changed.
] 
[Fix Trac #2931
simonpj at microsoft.com**20090113170948
 Ignore-this: 6ff0207627165f3f7bd145171e59b533
 
 Fix the lexical analyser when it encounters 'x<EOF> and Template 
 Haskell is on.
 
] 
[Rewrite CorePrep and improve eta expansion
simonpj at microsoft.com**20090113164953
 Ignore-this: 910d1d613592c116714c324618b1e45c
 
 This patch does two main things
 
 a) Rewrite most of CorePrep to be much easier to understand (I hope!).
    The invariants established by CorePrep are now written out, and
    the code is more perspicuous.  It is surpringly hard to get right,
    and the old code had become quite incomprehensible.
 
 b) Rewrite the eta-expander so that it does a bit of simplifying
    on-the-fly, and thereby guarantees to maintain the CorePrep
    invariants.  This make it much easier to use from CorePrep, and
    is a generally good thing anyway.
 
 A couple of pieces of re-structuring:
 
 *  I moved the eta-expander and arity analysis stuff into a new
    module coreSyn/CoreArity.
 
    Max will find that the type CoreArity.EtaInfo looks strangely 
    familiar.
 
 *  I moved a bunch of comments from Simplify to OccurAnal; that's
    why it looks as though there's a lot of lines changed in those
    modules.
 
 On the way I fixed various things
 
   - Function arguments are eta expanded
        f (map g)  ===>  let s = \x. map g x in f s
 
   - Trac #2368
 
 The result is a modest performance gain, I think mainly due
 to the first of these changes:
 
 --------------------------------------------------------------------------------
         Program           Size    Allocs   Runtime   Elapsed
 --------------------------------------------------------------------------------
             Min          -1.0%    -17.4%    -19.1%    -46.4%
             Max          +0.3%     +0.5%     +5.4%    +53.8%
  Geometric Mean          -0.1%     -0.3%     -7.0%    -10.2%
 
 
 
] 
[Rename isIdentityCoercion to isIdentityCoI; add Coercion.isIdentityCoercion
simonpj at microsoft.com**20090113164804
 Ignore-this: ac05f38a092959c08972c768fe427e06
] 
[Spelling in comment only
simonpj at microsoft.com**20090113164624
 Ignore-this: 2eb6372f996b9133683918aecad1a5aa
] 
[Make the ASSERT more informative
simonpj at microsoft.com**20090113164133
 Ignore-this: 4059e33cf594403e03c0eb4169dc300f
] 
[Export mapOL from OrdList
simonpj at microsoft.com**20090113164051
 Ignore-this: 3debd81ae00d3745ec248197b97d312f
] 
[Improve error messages slightly
simonpj at microsoft.com**20090113164020
 Ignore-this: 89090ec03d8ea201f64105c0dbb8d5f9
] 
[Do not do SpecConstr on functions that unconditionally diverge
simonpj at microsoft.com**20090113162918
 Ignore-this: cb0c210b936941b241c312c72545bfe2
 
 There is no point in specialising a function that is guaranteed to
 diverge, and doing so screwed up arity stuff.  
 
 See Note [Do not specialise diverging functions].
 
 
] 
[Make -XTypeFamilies imply -XRelaxedPolyRec (Trac #2944)
simonpj at microsoft.com**20090113162716
 Ignore-this: 8ab21566045c8bc8050ed7dda04e2df
] 
[Fix Trac #2937: deserialising assoicated type definitions
simonpj at microsoft.com**20090113153217
 Ignore-this: 7d7852a70a34fc22773757709735cc24
 
 The deserialiser (TcIface) for associated type definitions wasn't
 taking into account that the class decl brings into scope some 
 type variables that scope over the data/type family declaration.
 
 Easy to fix: the new function is TcIface.bindIfaceTyVars_AT
 
] 
[Always check the result of pthread_mutex_lock() and pthread_mutex_unlock().
Matthias Kilian <kili at outback.escape.de>**20090104192443
 
 Don't check pthread_mutex_*lock() only on Linux and/or only if DEBUG
 is defined. The return values of those functions are well defined
 and should be supported on all operation systems with pthreads. The
 checks are cheap enough to do them even in the default build (without
 -DDEBUG).
 
 While here, recycle an unused macro ASSERT_LOCK_NOTHELD, and let
 the debugBelch part enabled with -DLOCK_DEBUG work independently
 of -DDEBUG.
 
] 
[sanity checking fixes
Simon Marlow <marlowsd at gmail.com>**20090112121042] 
[Keep the remembered sets local to each thread during parallel GC
Simon Marlow <marlowsd at gmail.com>**20090112121024
 This turns out to be quite vital for parallel programs:
 
   - The way we discover which threads to traverse is by finding
     dirty threads via the remembered sets (aka mutable lists).
 
   - A dirty thread will be on the remembered set of the capability
     that was running it, and we really want to traverse that thread's
     stack using the GC thread for the capability, because it is in
     that CPU's cache.  If we get this wrong, we get penalised badly by
     the memory system.
 
 Previously we had per-capability mutable lists but they were
 aggregated before GC and traversed by just one of the GC threads.
 This resulted in very poor performance particularly for parallel
 programs with deep stacks.
 
 Now we keep per-capability remembered sets throughout GC, which also
 removes a lock (recordMutableGen_sync).
] 
[indicate which TSOs are dirty in the printAllThreads() output
Simon Marlow <marlowsd at gmail.com>**20090107151449] 
[Fix Trac #2584: Pretty printing of types with HsDocTy
David Waern <david.waern at gmail.com>**20090109191713
 
 The pretty printing clause for HsDocTy was wrong, causing brackets to be left
 out. We now print Haddock comments on types as if they were postfix type
 operators.
] 
[Add "Word size" to the +RTS --info output
Ian Lynagh <igloo at earth.li>**20090109160454] 
[Check that make supports eval
Ian Lynagh <igloo at earth.li>**20090109151006] 
[Add some more fields to +RTS --info
Ian Lynagh <igloo at earth.li>**20090108131101] 
[FIX BUILD on Windows (fix for #2873 broke it)
Simon Marlow <marlowsd at gmail.com>**20090109090658] 
[when calling mmap() with MAP_ANON, the fd argument should be -1
Simon Marlow <marlowsd at gmail.com>**20090108155341
 might fix #2925
] 
[Fix Trac #2914: record wild cards and assoicated types
simonpj at microsoft.com**20090108124118] 
[Fix #2873: should fail if a package DB desn't exist
Simon Marlow <marlowsd at gmail.com>**20090108095628
 We allowed non-existence before because the user DB is allowed to not
 exist, so now we have an explicit exception for that case.
] 
[Close the races between throwTo and thread completion
Simon Marlow <marlowsd at gmail.com>**20090107140507
 Any threads we missed were being caught by the GC (possibly the idle
 GC if the system was otherwise inactive), but that's not ideal.  The
 fix (from Bertram Felgenhauer) is to use lockTSO to synchronise,
 imposing an unconditional lockTSO on thread exit.  I couldn't measure
 any performance overhead from doing this, so it seems reasonable.
] 
[add comment
Simon Marlow <marlowsd at gmail.com>**20090107121142] 
[Fix two more locking issues in throwTo()
Bertram Felgenhauer <int-e at gmx.de>**20090107120808] 
[maybePerformBlockedException() should handle ThreadComplete/ThreadKilled
Simon Marlow <marlowsd at gmail.com>**20090107120734
 Part of the fix for #2910
] 
[fix a race where the timer signal could remain turned off, leading to deadlock
Simon Marlow <marlowsd at gmail.com>**20090107120652] 
[putMVar and takeMVar: add write_barrier() to fix race with throwTo
Simon Marlow <marlowsd at gmail.com>**20090107112026] 
[cruft removal
Simon Marlow <marlowsd at gmail.com>**20090106154408] 
[wake up the blocked exception queue on ThreadFinished; fixes #2910
Simon Marlow <marlowsd at gmail.com>**20090106153254] 
[bump GHC's max stack size to 512M
Simon Marlow <marlowsd at gmail.com>**20081219112211
 To accomodate compiling very long static lists (#2002)
] 
[ext-core: change .cabal file so we can build with either GHC 6.8 or 6.10
Tim Chevalier <chevalier at alum.wellesley.edu>**20090105192757] 
[ext-core: fix some Prep bugs
Tim Chevalier <chevalier at alum.wellesley.edu>**20090105192734] 
[ext-core: use shorter names when combining modules
Tim Chevalier <chevalier at alum.wellesley.edu>**20090105192645] 
[ext-core: twiddle primitive things
Tim Chevalier <chevalier at alum.wellesley.edu>**20090105192434] 
[Don't pin a register for gc_thread on SPARC.
Ben.Lippmeier at anu.edu.au**20090105030758
 
 This makes the build work again.
] 
[Require HsColour by default
Ian Lynagh <igloo at earth.li>**20090104214647
 This should stop us ending up without HsColour'ed sources on some
 platforms.
 
 We also now tell Cabal where to find HsColour, rather than it finding
 it itself.
] 
[Fix build
Ian Lynagh <igloo at earth.li>**20090104211810] 
[Add GHCi completions to :set and :show
Ori Avtalion <ori at avtalion.name>**20081209194210] 
[Fix sync-all: Check for --complete/partial before --<anything>
Ian Lynagh <igloo at earth.li>**20090104184652
 Patch from megacz in trac #2857
] 
[Remove time from extralibs at request of maintainer
Ian Lynagh <igloo at earth.li>**20090104115509] 
[validate fix: InteractiveEval no longer needs to import  IdInfo
Ian Lynagh <igloo at earth.li>**20090103154754] 
[Fix validate: strs is no longer used in IfaceSyn
Ian Lynagh <igloo at earth.li>**20090103153624] 
[Remove trailing whitespace from HaddockUtils
Ian Lynagh <igloo at earth.li>**20081229191727] 
[Fix warnings in HaddockUtils
Ian Lynagh <igloo at earth.li>**20081229191657] 
[Remove dead code from HaddockUtils
Ian Lynagh <igloo at earth.li>**20081229191430] 
[Make record selectors into ordinary functions
simonpj at microsoft.com**20090102142851
 
 This biggish patch addresses Trac #2670.  The main effect is to make
 record selectors into ordinary functions, whose unfoldings appear in
 interface files, in contrast to their previous existence as magic
 "implicit Ids".  This means that the usual machinery of optimisation,
 analysis, and inlining applies to them, which was failing before when
 the selector was somewhat complicated.  (Which it can be when
 strictness annotations, unboxing annotations, and GADTs are involved.)
 
 The change involves the following points
 
 * Changes in Var.lhs to the representation of Var.  Now a LocalId can
   have an IdDetails as well as a GlobalId.  In particular, the
   information that an Id is a record selector is kept in the
   IdDetails.  While compiling the current module, the record selector
   *must* be a LocalId, so that it participates properly in compilation
   (free variables etc).
 
   This led me to change the (hidden) representation of Var, so that there
   is now only one constructor for Id, not two.
 
 * The IdDetails is persisted into interface files, so that an
   importing module can see which Ids are records selectors.
 
 * In TcTyClDecls, we generate the record-selector bindings in renamed,
   but not typechecked form.  In this way, we can get the typechecker
   to add all the types and so on, which is jolly helpful especially
   when GADTs or type families are involved.  Just like derived
   instance declarations.
 
   This is the big new chunk of 180 lines of code (much of which is
   commentary).  A call to the same function, mkAuxBinds, is needed in
   TcInstDcls for associated types.
 
 * The typechecker therefore has to pin the correct IdDetails on to 
   the record selector, when it typechecks it.  There was a neat way
   to do this, by adding a new sort of signature to HsBinds.Sig, namely
   IdSig.  This contains an Id (with the correct Name, Type, and IdDetails);
   the type checker uses it as the binder for the final binding.  This
   worked out rather easily.
 
 * Record selectors are no longer "implicit ids", which entails changes to
      IfaceSyn.ifaceDeclSubBndrs
      HscTypes.implicitTyThings
      TidyPgm.getImplicitBinds
   (These three functions must agree.)
 
 * MkId.mkRecordSelectorId is deleted entirely, some 300+ lines (incl
   comments) of very error prone code.  Happy days.
 
 * A TyCon no longer contains the list of record selectors: 
   algTcSelIds is gone
 
 The renamer is unaffected, including the way that import and export of
 record selectors is handled.
 
 Other small things
 
 * IfaceSyn.ifaceDeclSubBndrs had a fragile test for whether a data
   constructor had a wrapper.  I've replaced that with an explicit flag
   in the interface file. More robust I hope.
 
 * I renamed isIdVar to isId, which touched a few otherwise-unrelated files.
 
 
] 
[Fix Trac #2721: reject newtype deriving if the class has associated types
simonpj at microsoft.com**20081231164300] 
[-XImpredicativeTypes implies -XRankNTypes, and improve error msg in TcMType
simonpj at microsoft.com**20081231152517
 
 If you are going for impredicative types you almost certainly want RankN
 too. The change to TcMType improves the error when you say
      T (forall a. blah)
 where T is a type synonym.  This doesn't necessarily need impredicativity,
 if you have LiberalTypeSynonyms.
 
] 
[Fix Trac #2856: make deriving work for type families
simonpj at microsoft.com**20081231144151
 
 Darn, but TcDeriv is complicated, when type families get in on
 the act!  This patch makes GeneralisedNewtypeDeriving work 
 properly for type families.  I think.
 
 In order to do so, I found that GeneralisedNewtypeDeriving can
 work for recursive newtypes too -- and since families are conservatively
 marked recursive, that's a crucial part of the fix, and useful too.
 See Note [Recursive newtypes] in TcDeriv.
 
] 
[White space and spelling in comments
simonpj at microsoft.com**20081231144131] 
[Remove -XImpredicativeTypes from -fglasgow-exts
simonpj at microsoft.com**20081231144006
 
 See Trac #2846: impredicative types are far from stable, so
 -fglasgow-exts should not imply them.  Maybe we should merge
 this into 6.10?
 
] 
[Improve error reporting for 'deriving'
simonpj at microsoft.com**20081231143521
 
 a) Improve the extra suggested fix when there's a "no instance"
    error in a deriving clause.
 
 b) Improve error location recording in tcInstDecl2
 
 Many of the changes in tcInstDecl2 are simple reformatting.
 
 
] 
[Improve error message in deriving (fix Trac #2851)
simonpj at microsoft.com**20081230165906] 
[Avoid nasty name clash with associated data types (fixes Trac #2888)
simonpj at microsoft.com**20081230164432
 
 The main bug was in TcHsType; see Note [Avoid name clashes for 
 associated data types].  However I did a bit of re-factoring while 
 I was abouut it.
 
 I'm still a but unhappy with the use of TyCon.setTyConArgPoss; it'd
 be better to construct the TyCon correctly in the first place.  But
 that means passing an extra parameter to tcTyDecl1... maybe we should
 do this.
 
 
] 
[Refactor RnEnv to fix Trac #2901
simonpj at microsoft.com**20081230150445
 
 This tidy-up fixes Trac #2901, and eliminates 20 lines of code.
 Mainly this is done by making a version of lookupGlobalOccRn that
 returns (Maybe Name); this replaces lookupSrcOccRn but does more.
 
] 
[Add quotes to error message
simonpj at microsoft.com**20081230150402] 
[Tidy up treatment of big lambda (fixes Trac #2898)
simonpj at microsoft.com**20081230145948
 
 There was a leftover big lambda in the CorePrep'd code, which confused
 the bytecode generator.  Actually big lambdas are harmless.  This patch
 refactors ByteCodeGen so that it systemantically used 'bcView' to eliminate
 junk.  I did a little clean up in CorePrep too.
 
 See comments in Trac #2898.
 
] 
[Fix warnings in ByteCodeAsm
Ian Lynagh <igloo at earth.li>**20081229174726] 
[Fix warnings in ByteCodeInstr
Ian Lynagh <igloo at earth.li>**20081229173331] 
[Fix warnings in Rules
Ian Lynagh <igloo at earth.li>**20081229171832] 
[Fix warnings in StgCmmForeign
Ian Lynagh <igloo at earth.li>**20081229165957] 
[Fix warnings in CgCallConv
Ian Lynagh <igloo at earth.li>**20081229165402] 
[Fix warnings in SMRep
Ian Lynagh <igloo at earth.li>**20081229164959] 
[Fix warnings in ClosureInfo
Ian Lynagh <igloo at earth.li>**20081229164618] 
[Fix warnings in CgTicky
Ian Lynagh <igloo at earth.li>**20081229153416] 
[Fix warnings in CgCon
Ian Lynagh <igloo at earth.li>**20081229151733] 
[Fix warnings in WorkWrap
Ian Lynagh <igloo at earth.li>**20081229150406] 
[Fix warnings in NCGMonad
Ian Lynagh <igloo at earth.li>**20081229145627] 
[Fix warnings in CmmInfo
Ian Lynagh <igloo at earth.li>**20081229145307] 
[Fix warnings in CmmCPSGen
Ian Lynagh <igloo at earth.li>**20081229145119] 
[Fix warnings in CmmProcPoint
Ian Lynagh <igloo at earth.li>**20081229144214] 
[Fix warnings in CmmCallConv
Ian Lynagh <igloo at earth.li>**20081229141924] 
[Fix warnings in CmmLive
Ian Lynagh <igloo at earth.li>**20081229141035] 
[Fix warnings in CmmCPS
Ian Lynagh <igloo at earth.li>**20081229133158] 
[Fix warnings in CmmUtils
Ian Lynagh <igloo at earth.li>**20081229132637] 
[Comment out dead function breakProc
Ian Lynagh <igloo at earth.li>**20081229115647] 
[Fix warnings in CmmBrokenBlock
Ian Lynagh <igloo at earth.li>**20081229115527] 
[Comments only.  Haddockify parts of TcRnTypes.
Thomas Schilling <nominolo at googlemail.com>**20081211154657] 
[Comments only.  Fix typo.
Thomas Schilling <nominolo at googlemail.com>**20081211153104] 
[Include PprTyThings in tags file.
Thomas Schilling <nominolo at googlemail.com>**20081211153005] 
[Use DynFlags to work out if we are doing ticky ticky profiling
Ian Lynagh <igloo at earth.li>**20081218161928
 We used to use StaticFlags
] 
[Fix warnings in CgExpr
Ian Lynagh <igloo at earth.li>**20081217201152] 
[Fix warnings in CgBindery
Ian Lynagh <igloo at earth.li>**20081217194607] 
[Fix warnings in CgStackery
Ian Lynagh <igloo at earth.li>**20081217191713] 
[Fix warnings in CgCase
Ian Lynagh <igloo at earth.li>**20081217190848] 
[Remove some dead code from CgCase
Ian Lynagh <igloo at earth.li>**20081217184755] 
[Fix warnings in StgCmmProf
Ian Lynagh <igloo at earth.li>**20081217182236] 
[Fix warnings in CgProf
Ian Lynagh <igloo at earth.li>**20081217181711] 
[Fix warnings in CgInfoTbls
Ian Lynagh <igloo at earth.li>**20081217180144] 
[Remove dead function srtLabelAndLength from CgInfoTbls
Ian Lynagh <igloo at earth.li>**20081217180044] 
[Fix warnings in CgHeapery
Ian Lynagh <igloo at earth.li>**20081217175726] 
[Fix warnings in CgTailCall
Ian Lynagh <igloo at earth.li>**20081217175040] 
[Remove a little dead code from CgTailCall
Ian Lynagh <igloo at earth.li>**20081217174947] 
[Fix warnings in CodeGen
Ian Lynagh <igloo at earth.li>**20081217165904] 
[Fix warnings in StgCmmTicky
Ian Lynagh <igloo at earth.li>**20081217165433] 
[Remove dead code from CgUtils
Ian Lynagh <igloo at earth.li>**20081217163920] 
[Fix warnings in CgPrimOp
Ian Lynagh <igloo at earth.li>**20081217163912] 
[Fix warnings in CgMonad
Ian Lynagh <igloo at earth.li>**20081217163903] 
[Fix warnings in CgClosure
Ian Lynagh <igloo at earth.li>**20081217163850] 
[Fix warnings in CgForeignCall
Ian Lynagh <igloo at earth.li>**20081215222515] 
[Remove some redundant code
Ian Lynagh <igloo at earth.li>**20081215194047
 We were looking at opt_DoTickyProfiling, and if it was set claling ifTicky
 which looks at opt_DoTickyProfiling itself.
] 
[Fix warnings in CgLetNoEscape
Ian Lynagh <igloo at earth.li>**20081215173752] 
[Workaround for #2262, from Barney Stratford
Simon Marlow <marlowsd at gmail.com>**20081216124706
 See http://www.haskell.org/pipermail/glasgow-haskell-users/2008-December/016333.html
] 
[UNDO: Add -fpass-case-bndr-to-join-points
Simon Marlow <marlowsd at gmail.com>**20081216114235
 
 rolling back:
 
 Fri Dec  5 10:51:59 GMT 2008  simonpj at microsoft.com
   * Add -fpass-case-bndr-to-join-points
   
   See Note [Passing the case binder to join points] in Simplify.lhs
   The default now is *not* to pass the case binder.  There are some
   nofib results with the above note; the effect is almost always 
   negligible.
   
   I don't expect this flag to be used by users (hence no docs). It's just
   there to let me try the performance effects of switching on and off.
   
 
     M ./compiler/main/StaticFlagParser.hs +1
     M ./compiler/main/StaticFlags.hs +4
     M ./compiler/simplCore/Simplify.lhs -14 +73
] 
[Rollback INLINE patches
Simon Marlow <marlowsd at gmail.com>**20081216103556
 
 rolling back:
 
 Fri Dec  5 16:54:00 GMT 2008  simonpj at microsoft.com
   * Completely new treatment of INLINE pragmas (big patch)
   
   This is a major patch, which changes the way INLINE pragmas work.
   Although lots of files are touched, the net is only +21 lines of
   code -- and I bet that most of those are comments!
   
   HEADS UP: interface file format has changed, so you'll need to
   recompile everything.
   
   There is not much effect on overall performance for nofib, 
   probably because those programs don't make heavy use of INLINE pragmas.
   
           Program           Size    Allocs   Runtime   Elapsed
               Min         -11.3%     -6.9%     -9.2%     -8.2%
               Max          -0.1%     +4.6%     +7.5%     +8.9%
    Geometric Mean          -2.2%     -0.2%     -1.0%     -0.8%
   
   (The +4.6% for on allocs is cichelli; see other patch relating to
   -fpass-case-bndr-to-join-points.)
   
   The old INLINE system
   ~~~~~~~~~~~~~~~~~~~~~
   The old system worked like this. A function with an INLINE pragam
   got a right-hand side which looked like
        f = __inline_me__ (\xy. e)
   The __inline_me__ part was an InlineNote, and was treated specially
   in various ways.  Notably, the simplifier didn't inline inside an
   __inline_me__ note.  
   
   As a result, the code for f itself was pretty crappy. That matters
   if you say (map f xs), because then you execute the code for f,
   rather than inlining a copy at the call site.
   
   The new story: InlineRules
   ~~~~~~~~~~~~~~~~~~~~~~~~~~
   The new system removes the InlineMe Note altogether.  Instead there
   is a new constructor InlineRule in CoreSyn.Unfolding.  This is a 
   bit like a RULE, in that it remembers the template to be inlined inside
   the InlineRule.  No simplification or inlining is done on an InlineRule,
   just like RULEs.  
   
   An Id can have an InlineRule *or* a CoreUnfolding (since these are two
   constructors from Unfolding). The simplifier treats them differently:
   
     - An InlineRule is has the substitution applied (like RULES) but 
       is otherwise left undisturbed.
   
     - A CoreUnfolding is updated with the new RHS of the definition,
       on each iteration of the simplifier.
   
   An InlineRule fires regardless of size, but *only* when the function
   is applied to enough arguments.  The "arity" of the rule is specified
   (by the programmer) as the number of args on the LHS of the "=".  So
   it makes a difference whether you say
     	{-# INLINE f #-}
   	f x = \y -> e     or     f x y = e
   This is one of the big new features that InlineRule gives us, and it
   is one that Roman really wanted.
   
   In contrast, a CoreUnfolding can fire when it is applied to fewer
   args than than the function has lambdas, provided the result is small
   enough.
   
   
   Consequential stuff
   ~~~~~~~~~~~~~~~~~~~
   * A 'wrapper' no longer has a WrapperInfo in the IdInfo.  Instead,
     the InlineRule has a field identifying wrappers.
   
   * Of course, IfaceSyn and interface serialisation changes appropriately.
   
   * Making implication constraints inline nicely was a bit fiddly. In
     the end I added a var_inline field to HsBInd.VarBind, which is why
     this patch affects the type checker slightly
   
   * I made some changes to the way in which eta expansion happens in
     CorePrep, mainly to ensure that *arguments* that become let-bound
     are also eta-expanded.  I'm still not too happy with the clarity
     and robustness fo the result.
   
   * We now complain if the programmer gives an INLINE pragma for
     a recursive function (prevsiously we just ignored it).  Reason for
     change: we don't want an InlineRule on a LoopBreaker, because then
     we'd have to check for loop-breaker-hood at occurrence sites (which
     isn't currenlty done).  Some tests need changing as a result.
   
   This patch has been in my tree for quite a while, so there are
   probably some other minor changes.
   
 
     M ./compiler/basicTypes/Id.lhs -11
     M ./compiler/basicTypes/IdInfo.lhs -82
     M ./compiler/basicTypes/MkId.lhs -2 +2
     M ./compiler/coreSyn/CoreFVs.lhs -2 +25
     M ./compiler/coreSyn/CoreLint.lhs -5 +1
     M ./compiler/coreSyn/CorePrep.lhs -59 +53
     M ./compiler/coreSyn/CoreSubst.lhs -22 +31
     M ./compiler/coreSyn/CoreSyn.lhs -66 +92
     M ./compiler/coreSyn/CoreUnfold.lhs -112 +112
     M ./compiler/coreSyn/CoreUtils.lhs -185 +184
     M ./compiler/coreSyn/MkExternalCore.lhs -1
     M ./compiler/coreSyn/PprCore.lhs -4 +40
     M ./compiler/deSugar/DsBinds.lhs -70 +118
     M ./compiler/deSugar/DsForeign.lhs -2 +4
     M ./compiler/deSugar/DsMeta.hs -4 +3
     M ./compiler/hsSyn/HsBinds.lhs -3 +3
     M ./compiler/hsSyn/HsUtils.lhs -2 +7
     M ./compiler/iface/BinIface.hs -11 +25
     M ./compiler/iface/IfaceSyn.lhs -13 +21
     M ./compiler/iface/MkIface.lhs -24 +19
     M ./compiler/iface/TcIface.lhs -29 +23
     M ./compiler/main/TidyPgm.lhs -55 +49
     M ./compiler/parser/ParserCore.y -5 +6
     M ./compiler/simplCore/CSE.lhs -2 +1
     M ./compiler/simplCore/FloatIn.lhs -6 +1
     M ./compiler/simplCore/FloatOut.lhs -23
     M ./compiler/simplCore/OccurAnal.lhs -36 +5
     M ./compiler/simplCore/SetLevels.lhs -59 +54
     M ./compiler/simplCore/SimplCore.lhs -48 +52
     M ./compiler/simplCore/SimplEnv.lhs -26 +22
     M ./compiler/simplCore/SimplUtils.lhs -28 +4
     M ./compiler/simplCore/Simplify.lhs -91 +109
     M ./compiler/specialise/Specialise.lhs -15 +18
     M ./compiler/stranal/WorkWrap.lhs -14 +11
     M ./compiler/stranal/WwLib.lhs -2 +2
     M ./compiler/typecheck/Inst.lhs -1 +3
     M ./compiler/typecheck/TcBinds.lhs -17 +27
     M ./compiler/typecheck/TcClassDcl.lhs -1 +2
     M ./compiler/typecheck/TcExpr.lhs -4 +6
     M ./compiler/typecheck/TcForeign.lhs -1 +1
     M ./compiler/typecheck/TcGenDeriv.lhs -14 +13
     M ./compiler/typecheck/TcHsSyn.lhs -3 +2
     M ./compiler/typecheck/TcInstDcls.lhs -5 +4
     M ./compiler/typecheck/TcRnDriver.lhs -2 +11
     M ./compiler/typecheck/TcSimplify.lhs -10 +17
     M ./compiler/vectorise/VectType.hs +7
 
 Mon Dec  8 12:43:10 GMT 2008  simonpj at microsoft.com
   * White space only
 
     M ./compiler/simplCore/Simplify.lhs -2
 
 Mon Dec  8 12:48:40 GMT 2008  simonpj at microsoft.com
   * Move simpleOptExpr from CoreUnfold to CoreSubst
 
     M ./compiler/coreSyn/CoreSubst.lhs -1 +87
     M ./compiler/coreSyn/CoreUnfold.lhs -72 +1
 
 Mon Dec  8 17:30:18 GMT 2008  simonpj at microsoft.com
   * Use CoreSubst.simpleOptExpr in place of the ad-hoc simpleSubst (reduces code too)
 
     M ./compiler/deSugar/DsBinds.lhs -50 +16
 
 Tue Dec  9 17:03:02 GMT 2008  simonpj at microsoft.com
   * Fix Trac #2861: bogus eta expansion
   
   Urghlhl!  I "tided up" the treatment of the "state hack" in CoreUtils, but
   missed an unexpected interaction with the way that a bottoming function
   simply swallows excess arguments.  There's a long
        Note [State hack and bottoming functions]
   to explain (which accounts for most of the new lines of code).
   
 
     M ./compiler/coreSyn/CoreUtils.lhs -16 +53
 
 Mon Dec 15 10:02:21 GMT 2008  Simon Marlow <marlowsd at gmail.com>
   * Revert CorePrep part of "Completely new treatment of INLINE pragmas..."
   
   The original patch said:
   
   * I made some changes to the way in which eta expansion happens in
     CorePrep, mainly to ensure that *arguments* that become let-bound
     are also eta-expanded.  I'm still not too happy with the clarity
     and robustness fo the result.
     
   Unfortunately this change apparently broke some invariants that were
   relied on elsewhere, and in particular lead to panics when compiling
   with profiling on.
   
   Will re-investigate in the new year.
 
     M ./compiler/coreSyn/CorePrep.lhs -53 +58
     M ./configure.ac -1 +1
 
 Mon Dec 15 12:28:51 GMT 2008  Simon Marlow <marlowsd at gmail.com>
   * revert accidental change to configure.ac
 
     M ./configure.ac -1 +1
] 
[revert accidental change to configure.ac
Simon Marlow <marlowsd at gmail.com>**20081215122851] 
[Revert CorePrep part of "Completely new treatment of INLINE pragmas..."
Simon Marlow <marlowsd at gmail.com>**20081215100221
 
 The original patch said:
 
 * I made some changes to the way in which eta expansion happens in
   CorePrep, mainly to ensure that *arguments* that become let-bound
   are also eta-expanded.  I'm still not too happy with the clarity
   and robustness fo the result.
   
 Unfortunately this change apparently broke some invariants that were
 relied on elsewhere, and in particular lead to panics when compiling
 with profiling on.
 
 Will re-investigate in the new year.
] 
[wake up other Capabilities even when there is only one spark (see #2868)
Simon Marlow <marlowsd at gmail.com>**20081210164644] 
[Document new GC options -q1 and -qg<n>
Simon Marlow <marlowsd at gmail.com>**20081210164557] 
[SysTools no longer needs -fno-cse
Ian Lynagh <igloo at earth.li>**20081211182327] 
[Make the lists of files and directories to be cleaned-up non-global
Ian Lynagh <igloo at earth.li>**20081211180739
 They still need to be stored in IORefs, as the exception handler needs
 to know what they all are.
] 
[The default cleanup handler should /always/ delete the temp files
Ian Lynagh <igloo at earth.li>**20081211170006
 Not only if there has been an exception. It worked for GHC anyway,
 as it was getting an ExitSuccess exception, but GHC API clients
 shouldn't be required to do that.
] 
[Fix user guide typesetting
Ian Lynagh <igloo at earth.li>**20081210165434] 
[FIX #1364: added support for C finalizers that run as soon as the value is not longer reachable.
Simon Marlow <marlowsd at gmail.com>**20081210150425
   
 Patch originally by Ivan Tomac <tomac at pacific.net.au>, amended by
 Simon Marlow:
 
   - mkWeakFinalizer# commoned up with mkWeakFinalizerEnv#
   - GC parameters to ALLOC_PRIM fixed
] 
[On FreeBSD, try MAP_FIXED if ordinary mmap() fails to give us suitable memory
Simon Marlow <marlowsd at gmail.com>**20081210115751
 This appears to be necessary on FreeBSD.  It might be necessary on
 other OSs too, but I'm being cautious because using MAP_FIXED can lead
 to crashes by overwriting existing mappings, and we have no (easy) way
 to prevent that.
] 
[Document hs_init() infelicity (#2863)
Simon Marlow <marlowsd at gmail.com>**20081209164322] 
[Improve documentation for data family instances (cf Trac #1968)
simonpj at microsoft.com**20081210054432
 
 The HEAD allows GADT syntax for data/newtype family instances. 
 (GHC 6.10 does not seem to.)
 
] 
[Make some profiling flags dynamic
Ian Lynagh <igloo at earth.li>**20081209230157
 In particular:
     -fauto-sccs-on-all-toplevs          -auto-all   -no-auto-all
     -fauto-sccs-on-exported-toplevs     -auto       -no-auto
     -fauto-sccs-on-individual-cafs      -caf-all    -no-caf-all
] 
[Fix warnings in StgCmmGran
Ian Lynagh <igloo at earth.li>**20081209222413] 
[Add OPTIONS_CATCH,DERIVE,YHC to those that GHC knows about; trac #2847
Ian Lynagh <igloo at earth.li>**20081209191724] 
[Fix warnings in CgHpc
Ian Lynagh <igloo at earth.li>**20081209191713] 
[Parse pragma names better; trac #2847
Ian Lynagh <igloo at earth.li>**20081209190318
 We require that pragma names are not followed by pragma character,
 defined as
     isAlphaNum c || c == '_'
] 
[Fix warnings in CgParallel
Ian Lynagh <igloo at earth.li>**20081209184402] 
[Fix warnings in StgCmmHpc
Ian Lynagh <igloo at earth.li>**20081209184004] 
[Remove an unnecessary -w flag
Ian Lynagh <igloo at earth.li>**20081209183812] 
[Fix Trac #2861: bogus eta expansion
simonpj at microsoft.com**20081209170302
 
 Urghlhl!  I "tided up" the treatment of the "state hack" in CoreUtils, but
 missed an unexpected interaction with the way that a bottoming function
 simply swallows excess arguments.  There's a long
      Note [State hack and bottoming functions]
 to explain (which accounts for most of the new lines of code).
 
] 
[Fix #2592: do an orderly shutdown when the heap is exhausted
Simon Marlow <marlowsd at gmail.com>**20081209105919
 Really we should be raising an exception in this case, but that's
 tricky (see comments).  At least now we shut down the runtime
 correctly rather than just exiting.
] 
[Fix #2848: avoid overflow during time calculation
Simon Marlow <marlowsd at gmail.com>**20081209105600] 
[Fix #2838: we should narrow a CmmInt before converting to ImmInteger
Simon Marlow <marlowsd at gmail.com>**20081209105515] 
[fix an assertion failure in prof/threaded/debug mode
Simon Marlow <marlowsd at gmail.com>**20081204101201] 
[Inject implicit bindings after CoreTidy, not before Simplify
simonpj at microsoft.com**20081208173525
 
 Originally I inject the "implicit bindings" (record selectors, class
 method selectors, data con wrappers...) after CoreTidy.  However, in a
 misguided attempt to fix Trac #2070, I moved the injection point to
 before the Simplifier, so that record selectors would be optimised by
 the simplifier.
 
 This was misguided because record selectors (indeed all implicit bindings)
 are GlobalIds, whose IdInfo is meant to be frozen.  But the Simplifier,
 and other Core-to-Core optimisations, merrily change the IdInfo.  That 
 ultimately made Trac #2844 happen, where a record selector got arity 2,
 but the GlobalId (which importing scopes re-construct from the class decl
 rather than reading from the interface file) has arity 1.
 
 So this patch moves the injection back to CoreTidy. Happily #2070 should
 still be OK because we now use CoreSubst.simpleOptExpr on the unfoldings
 for implict things, which gets rid of the most gratuitous infelicities.
 
 Still, there's a strong case for stoppping record selectors from being
 GlobalIds, and treating them much more like dict-funs.  I'm thinking
 about that.  Meanwhile, #2844 is ok now.
 
] 
[Add assertion for arity match (checks Trac #2844)
simonpj at microsoft.com**20081208173241
 
 The exported arity of a function must match the arity for the
 STG function.  Trac #2844 was a pretty obscure manifestation of
 the failure of this invariant. This patch doesn't cure the bug;
 rather it adds an assertion to CoreToStg to check the invariant
 so we should get an earlier and less obscure warning if this
 fails in future.
 
] 
[Use CoreSubst.simpleOptExpr in place of the ad-hoc simpleSubst (reduces code too)
simonpj at microsoft.com**20081208173018] 
[Move simpleOptExpr from CoreUnfold to CoreSubst
simonpj at microsoft.com**20081208124840] 
[White space only
simonpj at microsoft.com**20081208124310] 
[Comments only
simonpj at microsoft.com**20081208124155] 
[Completely new treatment of INLINE pragmas (big patch)
simonpj at microsoft.com**20081205165400
 
 This is a major patch, which changes the way INLINE pragmas work.
 Although lots of files are touched, the net is only +21 lines of
 code -- and I bet that most of those are comments!
 
 HEADS UP: interface file format has changed, so you'll need to
 recompile everything.
 
 There is not much effect on overall performance for nofib, 
 probably because those programs don't make heavy use of INLINE pragmas.
 
         Program           Size    Allocs   Runtime   Elapsed
             Min         -11.3%     -6.9%     -9.2%     -8.2%
             Max          -0.1%     +4.6%     +7.5%     +8.9%
  Geometric Mean          -2.2%     -0.2%     -1.0%     -0.8%
 
 (The +4.6% for on allocs is cichelli; see other patch relating to
 -fpass-case-bndr-to-join-points.)
 
 The old INLINE system
 ~~~~~~~~~~~~~~~~~~~~~
 The old system worked like this. A function with an INLINE pragam
 got a right-hand side which looked like
      f = __inline_me__ (\xy. e)
 The __inline_me__ part was an InlineNote, and was treated specially
 in various ways.  Notably, the simplifier didn't inline inside an
 __inline_me__ note.  
 
 As a result, the code for f itself was pretty crappy. That matters
 if you say (map f xs), because then you execute the code for f,
 rather than inlining a copy at the call site.
 
 The new story: InlineRules
 ~~~~~~~~~~~~~~~~~~~~~~~~~~
 The new system removes the InlineMe Note altogether.  Instead there
 is a new constructor InlineRule in CoreSyn.Unfolding.  This is a 
 bit like a RULE, in that it remembers the template to be inlined inside
 the InlineRule.  No simplification or inlining is done on an InlineRule,
 just like RULEs.  
 
 An Id can have an InlineRule *or* a CoreUnfolding (since these are two
 constructors from Unfolding). The simplifier treats them differently:
 
   - An InlineRule is has the substitution applied (like RULES) but 
     is otherwise left undisturbed.
 
   - A CoreUnfolding is updated with the new RHS of the definition,
     on each iteration of the simplifier.
 
 An InlineRule fires regardless of size, but *only* when the function
 is applied to enough arguments.  The "arity" of the rule is specified
 (by the programmer) as the number of args on the LHS of the "=".  So
 it makes a difference whether you say
   	{-# INLINE f #-}
 	f x = \y -> e     or     f x y = e
 This is one of the big new features that InlineRule gives us, and it
 is one that Roman really wanted.
 
 In contrast, a CoreUnfolding can fire when it is applied to fewer
 args than than the function has lambdas, provided the result is small
 enough.
 
 
 Consequential stuff
 ~~~~~~~~~~~~~~~~~~~
 * A 'wrapper' no longer has a WrapperInfo in the IdInfo.  Instead,
   the InlineRule has a field identifying wrappers.
 
 * Of course, IfaceSyn and interface serialisation changes appropriately.
 
 * Making implication constraints inline nicely was a bit fiddly. In
   the end I added a var_inline field to HsBInd.VarBind, which is why
   this patch affects the type checker slightly
 
 * I made some changes to the way in which eta expansion happens in
   CorePrep, mainly to ensure that *arguments* that become let-bound
   are also eta-expanded.  I'm still not too happy with the clarity
   and robustness fo the result.
 
 * We now complain if the programmer gives an INLINE pragma for
   a recursive function (prevsiously we just ignored it).  Reason for
   change: we don't want an InlineRule on a LoopBreaker, because then
   we'd have to check for loop-breaker-hood at occurrence sites (which
   isn't currenlty done).  Some tests need changing as a result.
 
 This patch has been in my tree for quite a while, so there are
 probably some other minor changes.
 
] 
[Add -fpass-case-bndr-to-join-points
simonpj at microsoft.com**20081205105159
 
 See Note [Passing the case binder to join points] in Simplify.lhs
 The default now is *not* to pass the case binder.  There are some
 nofib results with the above note; the effect is almost always 
 negligible.
 
 I don't expect this flag to be used by users (hence no docs). It's just
 there to let me try the performance effects of switching on and off.
 
] 
[Add static flag -fsimple-list-literals
simonpj at microsoft.com**20081205105002
 
 The new static flag -fsimple-list-literals makes ExplicitList literals
 be desugared in the straightforward way, rather than using 'build' as
 now.  See SLPJ comments with Note [Desugaring explicit lists].
 
 I don't expect this flag to be used by users (hence no docs). It's just
 there to let me try the performance effects of switching on and off.
 
] 
[Comments only in OccurAnal
simonpj at microsoft.com**20081205103252] 
[Comments only
simonpj at microsoft.com**20081205102437] 
[Layout only
simonpj at microsoft.com**20081205102252] 
[Comments only (Note [Entering error thunks])
simonpj at microsoft.com**20081205102149] 
[Make CoreToStg a little more robust to eta expansion
simonpj at microsoft.com**20081205101932] 
[Add no-op case for addIdSpecialisations (very minor optimisation)
simonpj at microsoft.com**20081205101022] 
[Trim redundant import
simonpj at microsoft.com**20081205101006] 
[Make CoreTidy retain deadness info (better -ddump-simpl)
simonpj at microsoft.com**20081205100518
 
 GHC now retains more robust information about dead variables; but
 CoreTidy was throwing it away.  This patch makes CoreTidy retain it,
 which gives better output for -ddump-simpl.
 
 New opportunity: shrink interface files by using wildcards for dead variables.
 
 
] 
[Remove INLINE pragmas on recursive functions
simonpj at microsoft.com**20081205100353
 
 INLINE pragmas on recursive functions are ignored; and this
 is checked in my upcoming patch for inlinings.
 
] 
[Comments only (on Activation)
simonpj at microsoft.com**20081205100139] 
[We need to tell cabal-bin which version of Cabal to use
Ian Lynagh <igloo at earth.li>**20081203123208
 Otherwise, if the bootstrapping compiler has a newer version, we get
 a mismatch between the version used to compile ghc-prim's Setup.hs and
 the version that installPackage uses.
] 
[Document 'loadModule'.
Thomas Schilling <nominolo at googlemail.com>**20081202154800] 
[Add 'needsTemplateHaskell' utility function and document why one might
Thomas Schilling <nominolo at googlemail.com>**20081202152358
 want to use it.
] 
[Documentation only.
Thomas Schilling <nominolo at googlemail.com>**20081202150158] 
[Export 'succeeded' and 'failed' helper functions.
Thomas Schilling <nominolo at googlemail.com>**20081202144451] 
[Put full ImportDecls in ModSummary instead of just ModuleNames
Simon Marlow <marlowsd at gmail.com>**20081202133736
 ... and use it to make ghc -M generate correct cross-package
 dependencies when using package-qualified imports (needed for the new
 build system).  Since we're already parsing the ImportDecl from the
 source file, there seems no good reason not to keep it in the
 ModSummary, it might be useful for other things too.
] 
[ghc -M: need to add a dep on Prelude unless -fno-implicit-prelude is on
Simon Marlow <marlowsd at gmail.com>**20081128165707] 
[make -include-pkg-deps work (not sure when this got lost)
Simon Marlow <marlowsd at gmail.com>**20081128135746] 
[Fix more problems caused by padding in the Capability structure
Simon Marlow <marlowsd at gmail.com>**20081202120735
 Fixes crashes on Windows and Sparc
] 
[add missing case to Ord GlobalReg (EagerBlackhole == EagerBlackhole)
Simon Marlow <marlowsd at gmail.com>**20081128130106] 
[Better error message for fundep conflict
simonpj at microsoft.com**20081201162845] 
[Fix typo in quasi-quote documentation's sample.
shelarcy <shelarcy at gmail.com>**20081129024344] 
[Remove the v_Split_info global variable and use a field of dflags instead
Ian Lynagh <igloo at earth.li>**20081130152403] 
[Document the --machine-readable RTS flag
Ian Lynagh <igloo at earth.li>**20081130152311] 
[Let 'loadModule' generate proper code depending on the 'hscTarget'.
Thomas Schilling <nominolo at googlemail.com>**20081128164412
 
 With this change it should be possible to perform something similar to
 'load' by traversing the module graph in dependency order and calling
 '{parse,typecheck,load}Module' on each.  Of course, if you want smart
 recompilation checking you should still use 'load'.
] 
[Expose a separate 'hscBackend' phase for 'HsCompiler' and change
Thomas Schilling <nominolo at googlemail.com>**20081128163746
 parameter to 'InteractiveStatus' to a 'Maybe'.
] 
[Whoops, *don't* reset the complete session in 'withLocalCallbacks'.
Thomas Schilling <nominolo at googlemail.com>**20081128150727] 
[Use a record instead of a typeclass for 'HsCompiler'.  This is mostly
Thomas Schilling <nominolo at googlemail.com>**20081128121947
 equivalent to a typeclass implementation that uses a functional
 dependency from the target mode to the result type.
] 
[Remove dead code
Ian Lynagh <igloo at earth.li>**20081128193831] 
[Update docs not to talk about deprecated -optdep-* flags; fixes trac #2773
Ian Lynagh <igloo at earth.li>**20081128193633] 
[Use relative URLs in the GHC API haddock docs; fixes #2755
Ian Lynagh <igloo at earth.li>**20081128184511] 
[Teach runghc about --help; fixes trac #2757
Ian Lynagh <igloo at earth.li>**20081128191706] 
[Use a per-session data structure for callbacks.  Make 'WarnErrLogger'
Thomas Schilling <nominolo at googlemail.com>**20081128103628
 part of it.
 
 Part of the GHC API essentially represents a compilation framework.
 The difference of a *framework* as opposed to a *library* is that the
 overall structure of the functionality is pre-defined but certain
 details can be customised via callbacks.  (Also known as the Hollywood
 Principle: "Don't call us, we'll call you.")
 
 This patch introduces a per-session data structure that contains all
 the callbacks instead of adding lots of small function arguments
 whenever we want to give the user more control over certain parts of
 the API.  This should also help with future changes: Adding a new
 callback doesn't break old code since code that doesn't know about the
 new callback will use the (hopefully sane) default implementation.
 
 Overall, however, we should try and keep the number of callbacks small
 and well-defined (and provide useful defaults) and use simple library
 routines for the rest.
] 
[Improve error message for #2739 (but no fix).
Thomas Schilling <nominolo at googlemail.com>**20081127135725
 
 This patch changes 'loadModule' to define a fake linkable.  The
 previous implementation of providing no linkable at all violated a
 pre-condition in the ByteCode linker.  This doesn't fix #2739, but it
 improves the error message a bit.
] 
[Remove the packing I added recently to the Capability structure
Simon Marlow <marlowsd at gmail.com>**20081128105046
 The problem is that the packing caused some unaligned loads, which
 lead to bus errors on Sparc (and reduced performance elsewhere,
 presumably).
] 
[don't emit CmmComments for now
Simon Marlow <marlowsd at gmail.com>**20081127090145
   - if the string contains */, we need to fix it (demonstrated by 
     building Cabal with -fvia-C)
   - the strings can get quite large, so we probably only want to
     inject comments when some debugging option is on.
] 
[Collect instead of print warnings in 'warnUnnecessarySourceImports'.
Thomas Schilling <nominolo at googlemail.com>**20081127102534] 
[Force recompilation of BCOs when they were compiled in HscNothing mode.
Thomas Schilling <nominolo at googlemail.com>**20081126183402
 
 Previously, loading a set of modules in HscNothing mode and then
 switching to HscInterpreted could lead to crashes since modules
 compiled with HscNothing were thought to be valid bytecode objects.
 
 This patch forces recompilation in these cases, hence switching between
 HscNothing and HscInterpreted should be safe now.
] 
[Documentation only: Add module description for HscMain.
Thomas Schilling <nominolo at googlemail.com>**20081126134344] 
[Include GHCi files in ctags/etags.
Thomas Schilling <nominolo at googlemail.com>**20081126122801] 
[drop some debugging traces and use only one flag for new codegen
dias at eecs.harvard.edu**20081126180808] 
[one more missing patch from new codegen path
dias at eecs.harvard.edu**20081126165742] 
[Fix Trac #2817 (TH syntax -> HsSyn conversion)
simonpj at microsoft.com**20081126154022] 
[Fix Trac #2756: CorePrep strictness bug
simonpj at microsoft.com**20081126143448] 
[Format output for :t more nicely
simonpj at microsoft.com**20081126134814] 
[Fix Trac #2766: printing operator type variables
simonpj at microsoft.com**20081126132202] 
[Fix build following codegen patch
simonpj at microsoft.com**20081126125526] 
[Removed warnings, made Haddock happy, added examples in documentation
dias at eecs.harvard.edu**20081017170707
 The interesting examples talk about our story with heap checks in
 case alternatives and our story with the case scrutinee as a Boolean.
] 
[Fixed linear regalloc bug, dropped some tracing code
dias at eecs.harvard.edu**20081016104218
 o The linear-scan register allocator sometimes allocated a block
   before allocating one of its predecessors, which could lead
   to inconsistent allocations. Now, we allocate a block only
   if a predecessor has set the "incoming" assignments for the block
   (or if it's the procedure's entry block).
 o Also commented out some tracing code on the new codegen path.
] 
[Keep update frames live even in functions that never return
dias at eecs.harvard.edu**20081014165437
 An unusual case, but without it:
 (a) we had an assertion failure
 (b) we can overwrite the caller's infotable, which might cause
     the garbage collector to collect live data.
 Better to keep the update frame live at all call sites,
 not just at returns.
] 
[Removed space and time inefficiency in procpoint splitting
dias at eecs.harvard.edu**20081014160354
 I was adding extra jumps to every procpoint, even when the split-off graph
 referred to only some of the procpoints. No effect on correctness,
 but a big effect on space/time efficiency when there are lots of procpoints...
] 
[Clarify the SRT building process
dias at eecs.harvard.edu**20081014140202
 Before: building a closure that would build an SRT given the top-level
 SRT. It was somewhat difficult to understand the control flow, and it
 may have had held onto some data structures long after they should be dead.
 Now, I just bundle the info we need about CAFs along with the procedure
 and directly call a new top-level function to build the SRTs later.
] 
[Don't adjust hp up when the case scrutinee won't allocate
dias at eecs.harvard.edu**20081014112618
 
 If the case scrutinee can't allocate, we don't need to do a heap
 check in the case alternatives. (A previous patch got that right.)
 In that case, we had better not adjust the heap pointer to recover
 unused stack space before evaluating the scrutinee -- because we
 aren't going to reallocate for the case alternative.
] 
[Floating infotables were reversed in C back end
dias at eecs.harvard.edu**20081013152718] 
[forgot a few files
dias at eecs.harvard.edu**20081013134251] 
[Big collection of patches for the new codegen branch.
dias at eecs.harvard.edu**20081013132556
 o Fixed bug that emitted the copy-in code for closure entry
   in the wrong place -- at the initialization of the closure.
 o Refactored some of the closure entry code.
 o Added code to check that no LocalRegs are live-in to a procedure
    -- trip up some buggy programs earlier
 o Fixed environment bindings for thunks
    -- we weren't (re)binding the free variables in a thunk
 o Fixed a bug in proc-point splitting that dropped some updates
   to the entry block in a procedure.
 o Fixed improper calls to code that generates CmmLit's for strings
 o New invariant on cg_loc in CgIdInfo: the expression is always tagged
 o Code to load free vars on entry to a thunk was (wrongly) placed before
   the heap check.
 o Some of the StgCmm code was redundantly passing around Id's
   along with CgIdInfo's; no more.
 o Initialize the LocalReg's that point to a closure before allocating and
   initializing the closure itself -- otherwise, we have problems with
   recursive closure bindings
 o BlockEnv and BlockSet types are now abstract.
 o Update frames:
   - push arguments in Old call area
   - keep track of the return sp in the FCode monad
   - keep the return sp in every call, tail call, and return
       (because it might be different at different call sites,
        e.g. tail calls to the gc after a heap check are performed
             before pushing the update frame)
   - set the sp appropriately on returns and tail calls
 o Reduce call, tail call, and return to a single LastCall node
 o Added slow entry code, using different calling conventions on entry and tail call
 o More fixes to the calling convention code.
   The tricky stuff is all about the closure environment: it must be passed in R1,
   but in non-closures, there is no such argument, so we can't treat all arguments
   the same way: the closure environment is special. Maybe the right step forward
   would be to define a different calling convention for closure arguments.
 o Let-no-escapes need to be emitted out-of-line -- otherwise, we drop code.
 o Respect RTS requirement of word alignment for pointers
   My stack allocation can pack sub-word values into a single word on the stack,
   but it wasn't requiring word-alignment for pointers. It does now,
   by word-aligning both pointer registers and call areas.
 o CmmLint was over-aggresively ruling out non-word-aligned memory references,
   which may be kosher now that we can spill small values into a single word.
 o Wrong label order on a conditional branch when compiling switches.
 o void args weren't dropped in many cases.
   To help prevent this kind of mistake, I defined a NonVoid wrapper,
   which I'm applying only to Id's for now, although there are probably
   other good candidates.
 o A little code refactoring: separate modules for procpoint analysis splitting, 
   stack layout, and building infotables.
 o Stack limit check: insert along with the heap limit check, using a symbolic
   constant (a special CmmLit), then replace it when the stack layout is known.
 o Removed last node: MidAddToContext 
 o Adding block id as a literal: means that the lowering of the calling conventions
   no longer has to produce labels early, which was inhibiting common-block elimination.
   Will also make it easier for the non-procpoint-splitting path.
 o Info tables: don't try to describe the update frame!
 o Over aggressive use of NonVoid!!!!
   Don't drop the non-void args before setting the type of the closure!!!
 o Sanity checking:
   Added a pass to stub dead dead slots on the stack
   (only ~10 lines with the dataflow framework)
 o More sanity checking:
   Check that incoming pointer arguments are non-stubbed.
   Note: these checks are still subject to dead-code removal, but they should
   still be quite helpful.
 o Better sanity checking: why stop at function arguments?
   Instead, in mkAssign, check that _any_ assignment to a pointer type is non-null
   -- the sooner the crash, the easier it is to debug.
   Still need to add the debugging flag to turn these checks on explicitly.
 o Fixed yet another calling convention bug.
   This time, the calls to the GC were wrong. I've added a new convention
   for GC calls and invoked it where appropriate.
   We should really straighten out the calling convention stuff:
     some of the code (and documentation) is spread across the compiler,
     and there's some magical use of the node register that should really
     be handled (not avoided) by calling conventions.
 o Switch bug: the arms in mkCmmLitSwitch weren't returning to a single join point.
 o Environment shadowing problem in Stg->Cmm:
   When a closure f is bound at the top-level, we should not bind f to the
   node register on entry to the closure.
   Why? Because if the body of f contains a let-bound closure g that refers
   to f, we want to make sure that it refers to the static closure for f.
   Normally, this would all be fine, because when we compile a closure,
   we rebind free variables in the environment. But f doesn't look like
   a free variable because it's a static value. So, the binding for f
   remains in the environment when we compile g, inconveniently referring
   to the wrong thing.
   Now, I bind the variable in the local environment only if the closure is not
   bound at the top level. It's still okay to make assumptions about the
   node holding the closure environment; we just won't find the binding
   in the environment, so code that names the closure will now directly
   get the label of the static closure, not the node register holding a
   pointer to the static closure.
 o Don't generate bogus Cmm code containing SRTs during the STG -> Cmm pass!
   The tables made reference to some labels that don't exist when we compute and
   generate the tables in the back end.
 o Safe foreign calls need some special treatment (at least until we have the integrated
   codegen). In particular:
   o they need info tables
   o they are not procpoints -- the successor had better be in the same procedure
   o we cannot (yet) implement the calling conventions early, which means we have
     to carry the calling-conv info all the way to the end
 o We weren't following the old convention when registering a module.
   Now, we use update frames to push any new modules that have to be registered
   and enter the youngest one on the stack.
   We also use the update frame machinery to specify that the return should pop
   the return address off the stack.
 o At each safe foreign call, an infotable must be at the bottom of the stack,
   and the TSO->sp must point to it.
 o More problems with void args in a direct call to a function:
   We were checking the args (minus voids) to check whether the call was saturated,
   which caused problems when the function really wasn't saturated because it
   took an extra void argument.
 o Forgot to distinguish integer != from floating != during Stg->Cmm
 o Updating slotEnv and areaMap to include safe foreign calls
   The dataflow analyses that produce the slotEnv and areaMap give
   results for each basic block, but we also need the results for
   a safe foreign call, which is a middle node.
   After running the dataflow analysis, we have another pass that
   updates the results to includ any safe foreign calls.
 o Added a static flag for the debugging technique that inserts
   instructions to stub dead slots on the stack and crashes when
   a stubbed value is loaded into a pointer-typed LocalReg.
 o C back end expects to see return continuations before their call sites.
   Sorted the flowgraphs appropriately after splitting.
 o PrimOp calling conventions are special -- unlimited registers, no stack
   Yet another calling convention...
 o More void value problems: if the RHS of a case arm is a void-typed variable,
   don't try to return it.
 o When calling some primOp, they may allocate memory; if so, we need to
   do a heap check when we return from the call.
 
] 
[Merging in the new codegen branch
dias at eecs.harvard.edu**20080814124027
 This merge does not turn on the new codegen (which only compiles
 a select few programs at this point),
 but it does introduce some changes to the old code generator.
 
 The high bits:
 1. The Rep Swamp patch is finally here.
    The highlight is that the representation of types at the
    machine level has changed.
    Consequently, this patch contains updates across several back ends.
 2. The new Stg -> Cmm path is here, although it appears to have a
    fair number of bugs lurking.
 3. Many improvements along the CmmCPSZ path, including:
    o stack layout
    o some code for infotables, half of which is right and half wrong
    o proc-point splitting
] 
[Major clean-up of HscMain.
Thomas Schilling <nominolo at googlemail.com>**20081125153201
 
 This patch entails a major restructuring of HscMain and a small bugfix
 to MkIface (which required the restructuring in HscMain).
 
 In MkIface:
 
   - mkIface* no longer outputs orphan warnings directly and also no
     longer quits GHC when -Werror is set.  Instead, errors are
     reported using the common IO (Messages, Maybe result) scheme.
 
 In HscMain:
 
   - Get rid of the 'Comp' monad.  This monad was mostly GhcMonad + two
     reader arguments, a ModSummary for the currently compiled module
     and a possible old interface.  The latter actually lead to a small
     space-leak since only its hash was needed (to check whether the
     newly-generated interface file was the same as the original one).
 
     Functions originally of type 'Comp' now only take the arguments
     that they actually need.  This leads to slighly longer argument
     lists in some places, however, it is now much easier to see what
     is actually going on.
 
   - Get rid of 'myParseModule'.  Rename 'parseFile' to 'hscParse'.
 
   - Join 'deSugarModule' and 'hscDesugar' (keeping the latter).
 
   - Rename 'typecheck{Rename}Module{'}' to 'hscTypecheck{Rename}'.
     One variant keeps the renamed syntax, the other doesn't.
 
   - Parameterise 'HscStatus', so that 'InteractiveStatus' is just a
     different parameterisation of 'HscStatus'.
 
   - 'hscCompile{OneShot,Batch,Nothing,Interactive}' are now
     implemented using a (local) typeclass called 'HsCompiler'.  The
     idea is to make the common structure more obvious.  Using this
     typeclass we now have two functions 'genericHscCompile' (original
     'hscCompiler') and 'genericHscRecompile' (original 'genComp')
     describing the default pipeline.  The methods of the typeclass
     describe a sort of "hook" interface (in OO-terms this would be
     called the "template method" pattern).
 
     One problem with this approach is that we parameterise over the
     /result/ type which, in fact, is not actually different for
     "nothing" and "batch" mode.  To avoid functional dependencies or
     associated types, we use type tags to make them artificially
     different and parameterise the type class over the result type.
     A perhaps better approach might be to use records instead.
     
   - Drop some redundant 'HscEnv' arguments.  These were likely
     different from what 'getSession' would return because during
     compilation we temporarily set the module's DynFlags as well as a
     few other fields.  We now use the 'withTempSession' combinator to
     temporarily change the 'HscEnv' and automatically restore the
     original session after the enclosed action has returned (even in
     case of exceptions).
 
   - Rename 'hscCompile' to 'hscGenHardCode' (since that is what it
     does).
 
 Calls in 'GHC' and 'DriverPipeline' accordingly needed small
 adaptions.
] 
[Fix Trac #2799: TcType.isOverloadedTy
simonpj at microsoft.com**20081125110540
 
 A missing case (for equality predicates) in isOverloadedTy make
 bindInstsOfLocalFuns/Pats do the wrong thing.  Core Lint nailed it.
 
 Merge to 6.10 branch.
 
] 
[Fix #2740: we were missing the free variables on some expressions
Simon Marlow <marlowsd at gmail.com>**20081125103113
 Particularly boolean expresions: the conditional of an 'if', and
 guards, were missing their free variables.
] 
[Fix symbol macro names in Linker.c
Thorkil Naur <naur at post11.tele.dk>**20081121160149] 
[Add a --machine-readable RTS flag
Ian Lynagh <igloo at earth.li>**20081123152127
 Currently it only affects the -t flag output
] 
[Return errors instead of dying in myParseModule.
Thomas Schilling <nominolo at googlemail.com>**20081122154151] 
[Comments/Haddockification only.
Thomas Schilling <nominolo at googlemail.com>**20081122143018] 
[Report source span instead of just source location for unused names.
Thomas Schilling <nominolo at googlemail.com>**20081122142641] 
[Change 'handleFlagWarnings' to throw exceptions instead of dying.
Thomas Schilling <nominolo at googlemail.com>**20081122130658
 
 It now uses the standard warning log and error reporting mechanism.
] 
[Document exported functions in main/HeaderInfo.
Thomas Schilling <nominolo at googlemail.com>**20081121145307] 
[Remove warning supression klugde in main/HeaderInfo
Thomas Schilling <nominolo at googlemail.com>**20081121144155] 
[Use mutator threads to do GC, instead of having a separate pool of GC threads
Simon Marlow <marlowsd at gmail.com>**20081121151233
 
 Previously, the GC had its own pool of threads to use as workers when
 doing parallel GC.  There was a "leader", which was the mutator thread
 that initiated the GC, and the other threads were taken from the pool.
 
 This was simple and worked fine for sequential programs, where we did
 most of the benchmarking for the parallel GC, but falls down for
 parallel programs.  When we have N mutator threads and N cores, at GC
 time we would have to stop N-1 mutator threads and start up N-1 GC
 threads, and hope that the OS schedules them all onto separate cores.
 It practice it doesn't, as you might expect.
 
 Now we use the mutator threads to do GC.  This works quite nicely,
 particularly for parallel programs, where each mutator thread scans
 its own spark pool, which is probably in its cache anyway.
 
 There are some flag changes:
 
   -g<n> is removed (-g1 is still accepted for backwards compat).
   There's no way to have a different number of GC threads than mutator
   threads now.
 
   -q1       Use one OS thread for GC (turns off parallel GC)
   -qg<n>    Use parallel GC for generations >= <n> (default: 1)
 
 Using parallel GC only for generations >=1 works well for sequential
 programs.  Compiling an ordinary sequential program with -threaded and
 running it with -N2 or more should help if you do a lot of GC.  I've
 found that adding -qg0 (do parallel GC for generation 0 too) speeds up
 some parallel programs, but slows down some sequential programs.
 Being conservative, I left the threshold at 1.
 
 ToDo: document the new options.
 
] 
[we shouldn't update topBound in discardSparks()
Simon Marlow <marlowsd at gmail.com>**20081121113539] 
[Throw SourceErrors instead of ProgramErrors in main/HeaderInfo.
Thomas Schilling <nominolo at googlemail.com>**20081121141339
 
 Parse errors during dependency analysis or options parsing really
 shouldn't kill GHC; this is particularly annoying for GHC API clients.
] 
[fix the build when !USE_MMAP
Simon Marlow <marlowsd at gmail.com>**20081121085418] 
[round the size up to a page in mmapForLinker() instead of in the caller
Simon Marlow <marlowsd at gmail.com>**20081120154014] 
[Fix a race in the deadlock-detection code
Simon Marlow <marlowsd at gmail.com>**20081120112438
 After a deadlock it was possible for the timer signal to remain off,
 which meant that the next deadlock would not be detected, and the
 system would hang.  Spotted by conc047(threaded2).
] 
[error message wibble
Simon Marlow <marlowsd at gmail.com>**20081120084901] 
[Fix flag name -XDisambiguateRecordFields
simonpj at microsoft.com**20081120123205] 
[Fix regTableToCapability() if gcc introduces padding
Simon Marlow <marlowsd at gmail.com>**20081119162910
 Also avoid padding if possible using __attribute__((packed))
 Fixes the Windows build
] 
[Fix 32-bit breakage
Simon Marlow <marlowsd at gmail.com>**20081119145429] 
[Small refactoring, and add comments
Simon Marlow <marlowsd at gmail.com>**20081119143702
 I discovered a new invariant while experimenting (blackholing is not
 optional when using parallel GC), so documented it.
] 
[Fix some unsigned comparisions that should be signed
Simon Marlow <marlowsd at gmail.com>**20081119143205
 Fixes crashes when using reclaimSpark() (not used currently, but may
 be in the future).
] 
[Remove incorrect assertions in steal()
Simon Marlow <marlowsd at gmail.com>**20081119143043] 
[don't run sparks if there are other threads on this Capability
Simon Marlow <marlowsd at gmail.com>**20081114121022] 
[Fix typo (HAVE_LIBGMP => HAVE_LIB_GMP); omit local gmp includes if HAVE_LIB_GMP
Simon Marlow <marlowsd at gmail.com>**20081119131056
 If we're using the system's installed GMP, we don't want to be picking
 up the local gmp.h header file.
 
 Fixes 2469(ghci) for me, because it turns out the system's GMP is more
 up-to-date than GHC's version and has a fix for more recent versions
 of gcc.  We also need to pull in a more recent GMP, but that's a
 separte issue.
] 
[Fix some more shutdown races
Simon Marlow <marlowsd at gmail.com>**20081119124848
 There were races between workerTaskStop() and freeTaskManager(): we
 need to be sure that all Tasks have exited properly before we start
 tearing things down.  This isn't completely straighforward, see
 comments for details.
] 
[Add help messages about --with-editline-(includes,libraries) to the ghc configure script.
Judah Jacobson <judah.jacobson at gmail.com>**20081114183334] 
[Add optional eager black-holing, with new flag -feager-blackholing
Simon Marlow <marlowsd at gmail.com>**20081118142442
 
 Eager blackholing can improve parallel performance by reducing the
 chances that two threads perform the same computation.  However, it
 has a cost: one extra memory write per thunk entry.  
 
 To get the best results, any code which may be executed in parallel
 should be compiled with eager blackholing turned on.  But since
 there's a cost for sequential code, we make it optional and turn it on
 for the parallel package only.  It might be a good idea to compile
 applications (or modules) with parallel code in with
 -feager-blackholing.
 
 ToDo: document -feager-blackholing.
] 
[Fix #2783: detect black-hole loops properly
Simon Marlow <marlowsd at gmail.com>**20081117144515
 At some point we regressed on detecting simple black-hole loops.  This
 happened due to the introduction of duplicate-work detection for
 parallelism: a black-hole loop looks very much like duplicate work,
 except it's duplicate work being performed by the very same thread.
 So we have to detect and handle this case.
] 
[Fix warning on Windows (use deleteThread() not deleteThread_())
Simon Marlow <marlowsd at gmail.com>**20081117143047] 
[fix compile breakage on Windows
Simon Marlow <marlowsd at gmail.com>**20081117142831] 
[Attempt to fix #2512 and #2063;  add +RTS -xm<address> -RTS option
Simon Marlow <marlowsd at gmail.com>**20081117120556
 On x86_64, the RTS needs to allocate memory in the low 2Gb of the
 address space.  On Linux we can do this with MAP_32BIT, but sometimes
 this doesn't work (#2512) and other OSs don't support it at all
 (#2063).  So to work around this:
 
   - Try MAP_32BIT first, if available.
 
   - Otherwise, try allocating memory from a fixed address (by default
     1Gb)
 
   - We now provide an option to configure the address to allocate
     from.  This allows a workaround on machines where the default
     breaks, and also provides a way for people to test workarounds
     that we can incorporate in future releases.
] 
[Another shutdown fix
Simon Marlow <marlowsd at gmail.com>**20081117094350
 If we encounter a runnable thread during shutdown, just kill it.  All
 the threads are supposed to be dead at this stage, but this catches
 threads that might have just returned from a foreign call, or were
 finalizers created by the GC.
 
 Fixes memo002(threaded1)
] 
[Correct an example in the users guide
Ian Lynagh <igloo at earth.li>**20081116174938] 
[Fix gen_contents_index when not run inplace; trac #2764
Ian Lynagh <igloo at earth.li>**20081116174122
 Based on a patch from juhpetersen.
] 
[close the temporary Handle before removing the file
Simon Marlow <marlowsd at gmail.com>**20081114130958] 
[refactor: move unlockClosure() into SMPClosureOps() where it should be
Simon Marlow <marlowsd at gmail.com>**20081114095817] 
[Omit definitions of cas() and xchg() in .hc code
Simon Marlow <marlowsd at gmail.com>**20081114095738
 They cause compilation errors (correctly) with newer gccs
 Shows up compiling the RTS via C, which happens on Windows
] 
[Don't put stdin into non-blocking mode (#2778, #2777)
Simon Marlow <marlowsd at gmail.com>**20081114130546
 This used to be necessary when our I/O library needed all FDs in
 O_NONBLOCK mode, and readline used to put stdin back into blocking
 mode.  Nowadays the I/O library can cope with FDs in blocking mode,
 and #2778/#2777 show why this is important.
] 
[Rmoeve --enable-dotnet
Simon Marlow <marlowsd at gmail.com>**20081114124929] 
[#2751: disourage --enable-shared in ./configure --help
Simon Marlow <marlowsd at gmail.com>**20081114124748] 
[add a warning that --enable-shared is experimental
Simon Marlow <marlowsd at gmail.com>**20081114104034] 
[lookupSymbol: revert to looking up both with and without the @N suffix
Simon Marlow <marlowsd at gmail.com>**20081113122927] 
[#2768: fix compatibility problem with newer version of mingw
Simon Marlow <marlowsd at gmail.com>**20081113114626] 
[notice ^C exceptions when waiting for I/O
Simon Marlow <marlowsd at gmail.com>**20081113114342] 
[Fix a bug in the recompilation checking logic.
Thomas Schilling <nominolo at googlemail.com>**20081113162653
 
 Previously, using target HscNothing resulted in unnessesary
 recompilation because 'upsweep_mod' treated HscInterface specially.
 This patch changes relaxes this.
 
 When running GHC with debug level 5, 'upsweep_mod' will now also be
 more verbose about what it is doing.
 
 There is (at least) one possible remaining problem, though: When using
 target 'HscNothing' we generate a fake linkable to signal that we have
 processed a module.  When switching to 'HscInterpreted' this may cause
 objects to not be recompiled.  Switching from HscNothing to
 HscInterpreted is therefore only safe if we unload everything first.
] 
[Fix another subtle shutdown deadlock
Simon Marlow <marlowsd at gmail.com>**20081113160005
 The problem occurred when a thread tries to GC during shutdown.  In
 order to GC it has to acquire all the Capabilities in the system, but
 during shutdown, some of the Capabilities have already been closed and
 can never be acquired.
] 
[Fix an extremely subtle deadlock bug on x86_64
Simon Marlow <marlowsd at gmail.com>**20081113155730
 The recent_activity flag was an unsigned int, but we sometimes do a
 64-bit xchg() on it, which overwrites the next word in memory.  This
 happened to contain the sched_state flag, which is used to control the
 orderly shutdown of the system.  If the xchg() happened during
 shutdown, the scheduler would get confused and deadlock.  Don't you
 just love C?
] 
[move an assertion
Simon Marlow <marlowsd at gmail.com>**20081113154542] 
[Always zap the trailing @N from symbols when looking up in a DLL
Simon Marlow <marlowsd at gmail.com>**20081112111518
 
 Fixes win32002(ghci)
 
 Previously we only did this for references from object files, but we
 should do it for all symbols, including those that GHCi looks up due
 to FFI calls from bytecode.
] 
[Only allocate a mark stack if we're actually doing marking
Simon Marlow <marlowsd at gmail.com>**20081112112144
 saves a bit of memory in major GCs
] 
[Fix parse error with older gccs (#2752)
Simon Marlow <marlowsd at gmail.com>**20081111135344] 
[Fix to i386_insert_ffrees (#2724, #1944)
Simon Marlow <marlowsd at gmail.com>**20081111125619
 The i386 native code generator has to arrange that the FPU stack is
 clear on exit from any function that uses the FPU.  Unfortunately it
 was getting this wrong (and has been ever since this code was written,
 I think): it was looking for basic blocks that used the FPU and adding
 the code to clear the FPU stack on any non-local exit from the block.
 In fact it should be doing this on a whole-function basis, rather than
 individual basic blocks.
] 
[Fix bootstrap with 6.10.1 on Windows
Simon Marlow <marlowsd at gmail.com>**20081110134318
 ghc-pkg doesn't understand the old syntax any more, so 'ghc-pkg -l' fails
] 
[Perform case-insensitive matching of path components in getBaseDir on Windows (Fixes bug 2743)
Neil Mitchell <ndmitchell at gmail.com>**20081105134315] 
[Documentation only.  Clarify that 'load*' may indeed throw SourceErrors.
Thomas Schilling <nominolo at googlemail.com>**20081110175614
 
 I don't think errors during dependency analysis should be passed to
 the logger.
] 
[Fix documentation (to say the opposite).
Thomas Schilling <nominolo at googlemail.com>**20081110153819] 
[Fix line numbers in TAGS files.
Thomas Schilling <nominolo at googlemail.com>**20081110153621] 
[Documentation only.
Thomas Schilling <nominolo at googlemail.com>**20081110153456] 
[Add 'packageDbModules' function to GHC API.
Thomas Schilling <nominolo at googlemail.com>**20081110143510
 
 This function returns a list of all modules available through the
 package DB.
 
 MERGE TO 6.10
] 
[We now require GHC 6.6, so we always have Applicative
Ian Lynagh <igloo at earth.li>**20081108144723] 
[Remove a CPP test that's always true (__GLASGOW_HASKELL__ >= 605)
Ian Lynagh <igloo at earth.li>**20081108144544] 
[Remove some dead code now that __GLASGOW_HASKELL__ >= 606
Ian Lynagh <igloo at earth.li>**20081108144459] 
[Remove some flag duplication from a Makefile
Ian Lynagh <igloo at earth.li>**20081108144412] 
[ghc_ge_605 is now always YES
Ian Lynagh <igloo at earth.li>**20081108144328] 
[Remove the GHC 6.4 unicode compat stuff; we can now just use Data.Char
Ian Lynagh <igloo at earth.li>**20081108143423] 
[Fix libffi bindist
Clemens Fruhwirth <clemens at endorphin.org>**20081108094725] 
[Replace couple of fromJust with expectJust
Clemens Fruhwirth <clemens at endorphin.org>**20081107160735] 
[Bugfix for patch "Do not filter the rts from linked libraries..." (#2745)
Simon Marlow <marlowsd at gmail.com>**20081107092925
 The sense of the #ifdef was wrong
] 
[fix via-C compilation: import ghczmprim_GHCziBool_False_closure
Simon Marlow <marlowsd at gmail.com>**20081107090432] 
[disable instance MonadPlus CoreM for GHC <= 6.6
Simon Marlow <marlowsd at gmail.com>**20081107085250] 
[re-instate counting of sparks converted
Simon Marlow <marlowsd at gmail.com>**20081106160810
 lost in patch "Run sparks in batches"
] 
[fix ASSERT_SPARK_POOL_INVARIANTS(): top>bottom is valid
Simon Marlow <marlowsd at gmail.com>**20081106155826] 
[pruneSparkQueue(): fix bug when top>bottom
Simon Marlow <marlowsd at gmail.com>**20081106155648] 
[don't yield if the system is shutting down
Simon Marlow <marlowsd at gmail.com>**20081106155356] 
[leave out ATTRIBUTE_ALIGNED on Windows, it gives a warning
Simon Marlow <marlowsd at gmail.com>**20081106132105] 
[Cope with ThreadRelocated when traversing the blocked_queue
Simon Marlow <marlowsd at gmail.com>**20081106114045
 Fixes "invalid what_next field" in ioref001 on Windows, and perhaps others
] 
[Remove dead code.
Thomas Schilling <nominolo at googlemail.com>**20081031162036] 
[Run sparks in batches, instead of creating a new thread for each one
Simon Marlow <marlowsd at gmail.com>**20081106113639
 Signficantly reduces the overhead for par, which means that we can
 make use of paralellism at a much finer granularity.
] 
[allocateInGen(): increase alloc_blocks (#2747)
Simon Marlow <marlowsd at gmail.com>**20081106113714] 
[disable MonadPlus instance that doesn't compile with 6.6
Simon Marlow <marlowsd at gmail.com>**20081106100411] 
[don't yield the Capability if blackholes_need_checking
Simon Marlow <marlowsd at gmail.com>**20081105154928] 
[deadlock fix: reset the flag *after* checking the blackhole queue
Simon Marlow <marlowsd at gmail.com>**20081105150542] 
[retreat the top/bottom fields of the spark pool in pruneSparkPool()
Simon Marlow <marlowsd at gmail.com>**20081105150359] 
[fix the :help docs for :set stop (#2737)
Simon Marlow <marlowsd at gmail.com>**20081104092929] 
[bugfix: don't ingore the return value from rts_evalIO()
Simon Marlow <marlowsd at gmail.com>**20081104142147] 
[Document the new SPARKS statistic, and xref from the parallelism section
Simon Marlow <marlowsd at gmail.com>**20081024120236] 
[Move the freeing of Capabilities later in the shutdown sequence
Simon Marlow <marlowsd at gmail.com>**20081024104301
 Fixes a bug whereby the Capability has been freed but other
 Capabilities are still trying to steal sparks from its pool.
] 
[Pad Capabilities and Tasks to 64 bytes
Simon Marlow <marlowsd at gmail.com>**20081023080749
 This is just good practice to avoid placing two structures heavily
 accessed by different CPUs on the same cache line
] 
[Fix desugaring of record update (fixes Trac #2735)
simonpj at microsoft.com**20081103110819] 
[Refuse to register packages with unversioned dependencies; trac #1837
Ian Lynagh <igloo at earth.li>**20081031181746] 
[We now require GHC 6.6 to build the HEAD (and thus 6.12)
Ian Lynagh <igloo at earth.li>**20081031171506] 
[:set prompt now understand Haskell String syntax; trace #2652
Ian Lynagh <igloo at earth.li>**20081031145227] 
[Comments only
simonpj at microsoft.com**20081031140236] 
[Quickfix for warning.
Thomas Schilling <nominolo at googlemail.com>**20081031113125] 
[Export typeclasses for accessing compiler results.
Thomas Schilling <nominolo at googlemail.com>**20081028182310
 
 MERGE TO 6.10.
] 
[Minor refactoring.
Thomas Schilling <nominolo at googlemail.com>**20081028182202] 
[Include record fields in tags.
Thomas Schilling <nominolo at googlemail.com>**20081028180538] 
[Fix imports
simonpj at microsoft.com**20081031092306] 
[Improve error reporting for non-rigid GADT matches
simonpj at microsoft.com**20081030143947
 
 Following suggestions from users, this patch improves the error message
 when a GADT match needs a rigid type:
 
  tcfail172.hs:19:10:
      GADT pattern match in non-rigid context for `Nil'
 -      Solution: add a type signature
 +      Probable solution: add a type signature for `is_normal'
      In the pattern: Nil
      In the definition of `is_normal': is_normal Nil = True
 
 Now GHC tries to tell you what to give a type signature *for*.
 Thanks to Daniel Gorin and others for the suggestions.
 
] 
[Add (a) CoreM monad, (b) new Annotations feature
simonpj at microsoft.com**20081030125108
 
 This patch, written by Max Bolingbroke,  does two things
 
 1.  It adds a new CoreM monad (defined in simplCore/CoreMonad),
     which is used as the top-level monad for all the Core-to-Core
     transformations (starting at SimplCore).  It supports
        * I/O (for debug printing)
        * Unique supply
        * Statistics gathering
        * Access to the HscEnv, RuleBase, Annotations, Module
     The patch therefore refactors the top "skin" of every Core-to-Core
     pass, but does not change their functionality.
 
 2.  It adds a completely new facility to GHC: Core "annotations".
     The idea is that you can say
        {#- ANN foo (Just "Hello") #-}
     which adds the annotation (Just "Hello") to the top level function
     foo.  These annotations can be looked up in any Core-to-Core pass,
     and are persisted into interface files.  (Hence a Core-to-Core pass
     can also query the annotations of imported things.)  Furthermore,
     a Core-to-Core pass can add new annotations (eg strictness info)
     of its own, which can be queried by importing modules.
 
 The design of the annotation system is somewhat in flux.  It's
 designed to work with the (upcoming) dynamic plug-ins mechanism,
 but is meanwhile independently useful.
 
 Do not merge to 6.10!  
 
] 
[Fix Trac #2674: in TH reject empty case expressions and function definitions
simonpj at microsoft.com**20081030094528] 
[Change naming conventions for compiler-generated dictionaries and type functions
simonpj at microsoft.com**20081029140858
 
 Up to now, the data constructor dictionary for class C as been called
 ":DC". But there is no reason for the colon to be at the front; indeed
 it confuses the (simple-minded) pretty-printer for types.  So this
 patch changes it to be "D:C".  This makes Core a lot easier to read.
 Having a colon in the middle ensures that it can't clash with a user-written
 data type.
 
 Similarly I changed
 
   T:C 	   Data type corresponding a class dictionary (was :TC)
   D:C	   Data constructor for class dictionary (was :DC)
 
   NTCo:T   Coercion mapping from a newtype T to its representation type
 		(was :CoT)
 
   TFCo:R   Coercion mapping from a data family to its respresentation type R
 		(was :CoFR)
 
   Rn:T     The n'th respresentation data type for a data type T
 		(was :RnT)
 
 
 Do not merge to 6.10.
 
 HEADS-UP: you'll need to recompile libraries from scratch.  
 
 ROMAN: you could do the same for OccName.mkVectTyConOcc etc, if you wanted.
 
 
] 
[Fix tcrun031: yet more tidying up in TcDeriv
simonpj at microsoft.com**20081029130155] 
[Add Outputable instance for CoercionI
simonpj at microsoft.com**20081029130114] 
[Fix Trac #2720: inlining and casts
simonpj at microsoft.com**20081028140828
 
 The issue here is what happens when we have
 
 	(f |> co) x
 
 where f is itself marked INLINE.  We want callSiteInline to "see" 
 the fact that the function is applied, and hence have some incentive
 to inline.  I've done this by extending CoreUnfold.CallCtxt with 
 ValAppCtxt.  I think that should catch this case without messing up
 any of the others.
 
] 
[Clarify documentatoin
simonpj at microsoft.com**20081028133009] 
[Update library version numbers in the release notes
Ian Lynagh <igloo at earth.li>**20081023144018] 
[various updates to the release notes
Simon Marlow <marlowsd at gmail.com>**20081007151647] 
[Add library release notes
Ian Lynagh <igloo at earth.li>**20080920155722] 
[Add release notes for the compiler
Ian Lynagh <igloo at earth.li>**20080920114857] 
[Doc fix
Ian Lynagh <igloo at earth.li>**20081028150534] 
[Rename some variables in docs
Ian Lynagh <igloo at earth.li>**20081028150447] 
[Fix typos
Ian Lynagh <igloo at earth.li>**20081028144655] 
[Mostly-fix Trac #2595: updates for existentials
simonpj at microsoft.com**20081028115427
 
 Ganesh wanted to update records that involve existentials.  That 
 seems reasonable to me, and this patch covers existentials, GADTs,
 and data type families.
 
 The restriction is that 
   The types of the updated fields may mention only the
   universally-quantified type variables of the data constructor
 
 This doesn't allow everything in #2595 (it allows 'g' but not 'f' in
 the ticket), but it gets a lot closer.
 
 Lots of the new lines are comments!
 
] 
[Fix Trac #2723: keep track of record field names in the renamer
simonpj at microsoft.com**20081028110445
 
 The idea here is that with -XNamedFieldPuns and -XRecordWildCards we don't
 want to report shadowing errors for
 	let fld = <blah> in C { .. }
 But to suppress such shadowing errors, the renamer needs to know that
 'fld' *is* a record selector.  Hence the new NameSet in 
 TcRnFypes.RecFieldEnv
 
] 
[Remove dead code
simonpj at microsoft.com**20081028074639] 
[Fix Trac #2713: refactor and tidy up renaming of fixity decls
simonpj at microsoft.com**20081027222738
 
 In fixing #2713, this patch also eliminates two almost-unused
 functions from RnEnv (lookupBndr and lookupBndr_maybe).  The
 net lines of code is prety much unchanged, but more of them
 are comments!
 
] 
[Fix Trac #2701: make deriving check better for unlifted args
simonpj at microsoft.com**20081025171211
 
 Getting the automatic deriving mechanism to work really smoothly
 is surprisingly hard.  I keep finding myself in TcDeriv!
 
 Anyway, this is a nice clean fix to Trac #2701.
 
] 
[Use pdflatex rather than latex for building
Ian Lynagh <igloo at earth.li>**20081024112400
 The Windows builder is having problems running ps2pdf, so this works
 aroudn the problem.
] 
[Remove an unmatched } in core.tex
Ian Lynagh <igloo at earth.li>**20081024111750] 
[Add a usepackage{url}
Ian Lynagh <igloo at earth.li>**20081024111458] 
[Update ANNOUNCE
Ian Lynagh <igloo at earth.li>**20081022164423] 
[Fix a bug in the new scheduler
Simon Marlow <marlowsd at gmail.com>**20081023155017
 If the current thread blocks, we should yield the Capability
 immediately, because the thread and hence possibly the current Task
 are now owned by someone else.  This worked in the old scheduler, but
 we moved where the yield happens in the new scheduler which broke it.
] 
[add an assertion
Simon Marlow <marlowsd at gmail.com>**20081023154551] 
[fix a warning
Simon Marlow <marlowsd at gmail.com>**20081023082213] 
[traverse the spark pools only once during GC rather than twice
Simon Marlow <marlowsd at gmail.com>**20081022115233] 
[Refactoring and reorganisation of the scheduler
Simon Marlow <marlowsd at gmail.com>**20081022092744
 
 Change the way we look for work in the scheduler.  Previously,
 checking to see whether there was anything to do was a
 non-side-effecting operation, but this has changed now that we do
 work-stealing.  This lead to a refactoring of the inner loop of the
 scheduler.
 
 Also, lots of cleanup in the new work-stealing code, but no functional
 changes.
 
 One new statistic is added to the +RTS -s output:
 
   SPARKS: 1430 (2 converted, 1427 pruned)
 
 lets you know something about the use of `par` in the program.
] 
[Work stealing for sparks
berthold at mathematik.uni-marburg.de**20080915132846
 
    Spark stealing support for PARALLEL_HASKELL and THREADED_RTS versions of the RTS.
   
   Spark pools are per capability, separately allocated and held in the Capability 
   structure. The implementation uses Double-Ended Queues (deque) and cas-protected 
   access.
   
   The write end of the queue (position bottom) can only be used with
   mutual exclusion, i.e. by exactly one caller at a time.
   Multiple readers can steal()/findSpark() from the read end
   (position top), and are synchronised without a lock, based on a cas
   of the top position. One reader wins, the others return NULL for a
   failure.
   
   Work stealing is called when Capabilities find no other work (inside yieldCapability),
   and tries all capabilities 0..n-1 twice, unless a theft succeeds.
   
   Inside schedulePushWork, all considered cap.s (those which were idle and could 
   be grabbed) are woken up. Future versions should wake up capabilities immediately when 
   putting a new spark in the local pool, from newSpark().
 
 Patch has been re-recorded due to conflicting bugfixes in the sparks.c, also fixing a 
 (strange) conflict in the scheduler.
 
] 
[include an elapsed time table
Simon Marlow <marlowsd at gmail.com>**20081023080648] 
[generate a valid summary for older GHC versions too
Simon Marlow <marlowsd at gmail.com>**20081023080629] 
[Fix Trac #2714 (a minor wibble)
simonpj at microsoft.com**20081022145138
 
 In boxy_match (which is a pure function used by preSubType) we can
 encounter TyVars not just TcTyVars; this patch takes account of that.
 
] 
[Reject programs with superclass equalities for now
Manuel M T Chakravarty <chak at cse.unsw.edu.au>**20081021131721
 - The current implementation of type families cannot properly deal
   with superclass equalities.  Instead of making a half-hearted attempt at
   supporting them, which mostly ends in cryptic error message, rejecting
   right away with an appropriate message.
 
   MERGE TO 6.10
] 
[Fix doc syntax
Ian Lynagh <igloo at earth.li>**20081021183317] 
[Don't put the README file in the Windows installer; fixes trac #2698
Ian Lynagh <igloo at earth.li>**20081021162543
 The README file talks about getting and building the sources, which
 doesn't make sense for the installer.
] 
[Comments and parens only
simonpj at microsoft.com**20081021151401] 
[Do proper cloning in worker/wrapper splitting
simonpj at microsoft.com**20081021143156
 
 See Note [Freshen type variables] in WwLib.  We need to clone type
 variables when building a worker/wrapper split, else we simply get
 bogus code, admittedly in rather obscure situations.  I can't quite
 remember what program showed this up, unfortunately, but there 
 definitely *was* one!  (You get a Lint error.)
 
] 
[Don't float an expression wrapped in a cast
simonpj at microsoft.com**20081021143019
 
 There is no point in floating out an expression wrapped in a coercion;
 If we do we'll transform  
 	lvl = e |> co [_$_]
 to  	
 	lvl' = e; lvl = lvl' |> co
 and then inline lvl.  Better just to float out the payload (e).
 
] 
[Fix Trac #2668, and refactor TcDeriv
simonpj at microsoft.com**20081021142922
 
 TcDeriv deals with both standalone and ordinary 'deriving';
 and with both data types and 'newtype deriving'.  The result
 is really rather compilcated and ad hoc.  Ryan discovered
 #2668; this patch fixes that bug, and makes the internal interfces
 #more uniform.  Specifically, the business of knocking off 
 type arguments from the instance type until it matches the kind of the
 class, is now done by derivTyData, not mkNewTypeEqn, because the
 latter is shared with standalone derriving, whree the trimmed
 type application is what the user wrote.
 
] 
[Spelling error in comment
simonpj at microsoft.com**20081019233511] 
[White space only
simonpj at microsoft.com**20081019233352] 
[Comments to explain strict overlap checking for type family instances
simonpj at microsoft.com**20081019184208] 
[Allow type families to use GADT syntax (and be GADTs)
simonpj at microsoft.com**20080923140535
 
 We've always intended to allow you to use GADT syntax for
 data families:
 	data instance T [a] where
 	  T1 :: a -> T [a]
 and indeed to allow data instances to *be* GADTs
 	data intsance T [a] where
 	  T1 :: Int -> T [Int]
 	  T2 :: a -> b -> T [(a,b)]
 
 This patch fixes the renamer and type checker to allow this.
 	
] 
[Improve crash message from applyTys and applyTypeToArgs
simonpj at microsoft.com**20080923135419] 
[Wibble to ungrammatical error message
simonpj at microsoft.com**20080920232256] 
[Comments only: replace ":=:" by "~" (notation for equality predicates)
simonpj at microsoft.com**20080920232024] 
[FIX #2693
Manuel M T Chakravarty <chak at cse.unsw.edu.au>**20081021120107
 - As long as the first reduceContext in tcSimplifyRestricted potentially
   performs improvement, we need to zonk again before the second reduceContext.
   It would be better to prevent the improvement in the first place, but given
   the current situation zonking is definitely the right thing to do.
 
   MERGE TO 6.10
] 
[Restore the terminal attributes even if ghci does not exit normally.
Judah Jacobson <judah.jacobson at gmail.com>**20081020164109] 
[FIX #2688
Manuel M T Chakravarty <chak at cse.unsw.edu.au>**20081021044213
 - Change in TcSimplify.reduceContext:
 
      We do *not* go around for new extra_eqs.  Morally, we should,
      but we can't without risking non-termination (see #2688).  By
      not going around, we miss some legal programs mixing FDs and
      TFs, but we never claimed to support such programs in the
      current implementation anyway.
 
   MERGE TO 6.10
] 
[Move documentation within 80 column boundary.
Thomas Schilling <nominolo at googlemail.com>**20081014134016] 
[Improve haddock documentation for 'GHC.topSortModuleGraph'.
Thomas Schilling <nominolo at googlemail.com>**20081014133833] 
[Improve haddock documentation for HsExpr module.
Thomas Schilling <nominolo at googlemail.com>**20081014133740] 
[Improve Haddock-markup for HsDecls module.
Thomas Schilling <nominolo at googlemail.com>**20081014133556] 
[Run Haddock with compacting GC and show RTS statistics.
Thomas Schilling <nominolo at googlemail.com>**20081020111410] 
[FIX (partially) #2703: bug in stack overflow handling when inside block
Simon Marlow <marlowsd at gmail.com>**20081020121103
 As a result of a previous ticket (#767) we disabled the generation of
 StackOverflow exceptions when inside a Control.Exception.block, on the
 grounds that StackOverflow is like an asynchronous exception.  Instead
 we just increase the stack size.  However, the stack size calculation
 was wrong, and ended up not increasing the size of the stack, with the
 result that the runtime just kept re-allocating the stack and filling
 up memory.
] 
[Re-export Located(..) and related functions
Simon Marlow <marlowsd at gmail.com>**20081020102422
 So that clients don't need to import SrcLoc
] 
[whitespace fix
Simon Marlow <marlowsd at gmail.com>**20081020101241] 
[FIX #2691: Manually reset the terminal to its initial settings; works around a bug in libedit.
Judah Jacobson <judah.jacobson at gmail.com>**20081016024838] 
[Eliminate duplicate flags in the tab completion of ghci's :set command.
Judah Jacobson <judah.jacobson at gmail.com>**20081016015721] 
[Add dph haddock docs to the doc index
Ian Lynagh <igloo at earth.li>**20081019133208] 
[Clean the bootstrapping extensible-exceptions package
Ian Lynagh <igloo at earth.li>**20081017195942] 
[Fix trac #2687
Ian Lynagh <igloo at earth.li>**20081015163412
 OtherPunctuation, ConnectorPunctuation and DashPunctuation are now
 treated as symbols, rather than merely graphic characters.
] 
[Fix trac #2680; avoid quadratic behaviour from (++)
Ian Lynagh <igloo at earth.li>**20081015163235] 
[Fix the build when the bootstrapping compiler has a newer Cabal than us
Ian Lynagh <igloo at earth.li>**20081015144023
 We need to forcibly use the in-tree Cabal, or we get version mismatch errors
] 
[Fix the name of prologue.txt when making bindists
Ian Lynagh <igloo at earth.li>**20081014114714] 
[Comments only
simonpj at microsoft.com**20081015084501] 
[Fix Trac #2497; two separate typos in Lexer.x
simonpj at microsoft.com**20081015084344
 
 The patch to switch on lexing of 'forall' inside a RULES pragma
 wasn't working.  This fixes it so that it does.
 
] 
[Update manual: tidy up instances, say more about type families in instance decls
simonpj at microsoft.com**20081015080509] 
[Make tags work on Unices, too.
Thomas Schilling <nominolo at googlemail.com>**20081014211236] 
[Undefine __PIC__ before defining it to work around "multiple definitions of __PIC__" warnings
Clemens Fruhwirth <clemens at endorphin.org>**20081014143206] 
[Add "dyn" to GhcRTSWays when compiling --enable-shared
Clemens Fruhwirth <clemens at endorphin.org>**20081014125123] 
[Fill out the ghc package's cabal file
Ian Lynagh <igloo at earth.li>**20081013235817] 
[Patching libffi so it can be built as DLL
Clemens Fruhwirth <clemens at endorphin.org>**20081014103459
 
 libffi-dllize-3.0.6.patch should be pushed upstream
] 
[Add 'etags' makefile target.
Thomas Schilling <nominolo at googlemail.com>**20081013170927
 
 This only works with stage2 since `ghctags' is built against stage1
 but not against the bootstrapping compiler.  Also note that all of GHC
 must typecheck for this target to succeed.  Perhaps we should not
 overwrite the old TAGS file by default then.
] 
[Use cabal information to get GHC's flags to `ghctags'.
Thomas Schilling <nominolo at googlemail.com>**20081013170658
 
 By giving the dist-directory to ghctags we can get all the GHC API
 flags we need in order to load the required modules.  The flag name
 could perhaps be improved, but apart from that it seems to work well.
] 
[Version bump for libffi to 3.0.6
Clemens Fruhwirth <clemens at endorphin.org>**20081014081300] 
[Encode shared/static configuration into stamps to do the right thing when rebuilding
Clemens Fruhwirth <clemens at endorphin.org>**20081013221530] 
[Add a link to the GHC API docs from the library haddock index
Ian Lynagh <igloo at earth.li>**20081013195943] 
[Link to the GHC API documentation from the main doc page
Ian Lynagh <igloo at earth.li>**20081013200927] 
[Whitespace only in docs/index.html
Ian Lynagh <igloo at earth.li>**20081013200625] 
[Tweak gen_contents_index
Ian Lynagh <igloo at earth.li>**20081013192548
 It now works again after it has been installed, as well as while it is
 in a source tree.
 After it's been installed it filters out the ghc package, as that
 currently swamps everything else in the index.
] 
[Build fixes for DLLized rts
Clemens Fruhwirth <clemens at endorphin.org>**20081013201608] 
[Do not filter the rts from linked libraries in linkDynLib as Windows does not allow unresolved symbols
Clemens Fruhwirth <clemens at endorphin.org>**20081013201426] 
[Add HsFFI.o to INSTALL_LIBS
Clemens Fruhwirth <clemens at endorphin.org>**20081013200945] 
[Rename symbol macros to a consistant naming scheme
Clemens Fruhwirth <clemens at endorphin.org>**20081013162433] 
[Fix #2685: two Bool arguments to tidyTypeEnv were the wrong way around
Simon Marlow <marlowsd at gmail.com>**20081013121339
 So -XTemplateHaskell was behaving like -fomit-interface-file-pragmas,
 and vice versa.
] 
[Simplify the "is $bindir in $PATH" test
Ian Lynagh <igloo at earth.li>**20081011191008] 
[Correct the "is $bindir in $PATH" test
Ian Lynagh <igloo at earth.li>**20081011191030
 We were testing neq instead of eq
] 
[Fix a typo which was causing ghci to quit on commands errors
pepe <mnislaih at gmail.com>**20081011114720] 
[Drop libm from the linker dependencies for libffi
Clemens Fruhwirth <clemens at endorphin.org>**20081011074524] 
[Do not generate haddock documentation when running install-docs in libffi
Clemens Fruhwirth <clemens at endorphin.org>**20081010192318] 
[When waking up thread blocked on TVars, wake oldest first (#2319)
Josef Svenningsson <josef.svenningsson at gmail.com>**20081010150322
 StgTVarWatchQueue contains the threads blocked on a TVar in order 
 youngest first. The list has to be traversed backwards to unpark the threads 
 oldest first.
 
 This improves the fairness when using STM in some situations.
] 
[add readTVarIO :: TVar a -> IO a
Simon Marlow <marlowsd at gmail.com>**20081010131545] 
[fix #2636: throw missing module errors as SourceErrors, not ErrMsg
Simon Marlow <marlowsd at gmail.com>**20081010131535] 
[atomicModifyIORef: use a local cas() instead of the global lock
Simon Marlow <simonmar at microsoft.com>**20081008154702
 This should improve scaling when using atomicModifyIORef
] 
[Delay building libffi until package.conf is created and fix bindist
Clemens Fruhwirth <clemens at endorphin.org>**20081010073106] 
[Install a versioned ghc-pkg script; fixes trac #2662
Ian Lynagh <igloo at earth.li>**20081009164946] 
[Fix bindist creation: Only the main RTS was being put in the bindists
Ian Lynagh <igloo at earth.li>**20081009163451] 
[pushAtom: add missing case for MachNullAddr (#2589)
Simon Marlow <marlowsd at gmail.com>**20081009091118] 
[undo incorrect assertion, and fix comments
Simon Marlow <marlowsd at gmail.com>**20081009085118] 
[remove old GRAN/PARALLEL_HASKELL code
Simon Marlow <marlowsd at gmail.com>**20081009085051] 
[FIX #2639
Manuel M T Chakravarty <chak at cse.unsw.edu.au>**20081009132328
 
   MERGE TO 6.10
] 
[Cover PredTy case in Type.tyFamInsts
Manuel M T Chakravarty <chak at cse.unsw.edu.au>**20081009061435
 
   MERGE TO 6.10
] 
[Drop ghcconfig.h/RtsConfig.h from libffi's package.conf.in
Clemens Fruhwirth <clemens at endorphin.org>**20081009071342] 
[Don't use sed's -i flag as Solaris doesn't know it in libffi/Makefile
Clemens Fruhwirth <clemens at endorphin.org>**20081008234455] 
[Don't use /dev/null trick to create empty object files in libffi/Makefile
Clemens Fruhwirth <clemens at endorphin.org>**20081008232902] 
[Turn libffi into a Haskell package
Clemens Fruhwirth <clemens at endorphin.org>**20081008170443] 
[Make 'getModSummary' deterministic.
Thomas Schilling <nominolo at googlemail.com>**20081008144032] 
[Add accessors to 'HsModule' and haddockify it.
Thomas Schilling <nominolo at googlemail.com>**20081007235656] 
[fix syntax errors in src-dist publish rules
Simon Marlow <marlowsd at gmail.com>**20081008103432] 
[add comments and an ASSERT_LOCK_HELD()
Simon Marlow <marlowsd at gmail.com>**20081008112627] 
[Fix #2663: we had a hard-wired capabilities[0]
Simon Marlow <marlowsd at gmail.com>**20081008112609
 For some unknown reason in schedulePostRunThread() we were always
 passing capabilities[0] rather than the current Capability to
 throwToSingleThreaded().  This caused all kinds of weird failures and
 crashes in STM code when running on multiple processors.
] 
[Fix #1955 for heap profiles generated by +RTS -hT
Simon Marlow <marlowsd at gmail.com>**20081003150745] 
[add a section id for +RTS -hT
Simon Marlow <marlowsd at gmail.com>**20081007151007] 
[update documentation for PostfixOperators
Simon Marlow <marlowsd at gmail.com>**20081007150957] 
[fix markup
Simon Marlow <marlowsd at gmail.com>**20081007150943] 
[Fix bug in DPH docs
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20081008101618] 
[Add short DPH section to users guide
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20081008064754
 
 MERGE TO 6.10
] 
[Users Guide: added type family documentation
Manuel M T Chakravarty <chak at cse.unsw.edu.au>**20081008061927
 
   MERGE TO 6.10
] 
[Track changes to package dph
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20081008032859
 
 MERGE TO 6.10
] 
[Build a profiled GHC API by default if p is in GhcLibWays
Ian Lynagh <igloo at earth.li>**20081007152318] 
[Check whether mk/validate.mk defines anything after validating
Ian Lynagh <igloo at earth.li>**20081007144855] 
[Remove #define _BSD_SOURCE from Stg.h
Ian Lynagh <igloo at earth.li>**20081006101959
 It's no longer needed, as base no longer #includes it
] 
[Make ghctags compile again.
Thomas Schilling <nominolo at googlemail.com>**20081007135705] 
[Revert AutoLinkPackages change for dynamic libraries. Cabal handles that now.
Clemens Fruhwirth <clemens at endorphin.org>**20081007100417] 
[Change suffix for dyn. linked executables from _real to .dyn
Clemens Fruhwirth <clemens at endorphin.org>**20081007100750] 
[Add accessors to 'Target' fields and haddockify.
Thomas Schilling <nominolo at googlemail.com>**20081006222940
 
 MERGE TO 6.10
] 
[Make 'gblock' and 'gunblock' part of 'ExceptionMonad'.  This way the
Thomas Schilling <nominolo at googlemail.com>**20081006222831
 default implementations of 'gbracket' and 'gfinally' just work.
 
 MERGE TO 6.10
] 
[Add Word8 support to vectoriser
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20081007004416
 
 MERGE TO 6.10
] 
[Fix generating OS X installers: Set COMMAND_MODE=unix2003
Ian Lynagh <igloo at earth.li>**20081005222715
 If we don't specify COMMAND_MODE=unix2003 then xcodebuild defaults
 to setting it to legacy, which means that ar builds archives
 without a table of contents. That makes the build fail later on.
] 
[We need to set datadir = $(libdir) in bindists
Ian Lynagh <igloo at earth.li>**20081005143307
 We already do in the normal Makefiles.
 
 This is because GHC needs package.conf and unlit to be in the same place
 (and things like ghc-pkg need to agree on where package.conf is, so we
 just set it globally).
] 
[prep-bin-dist-mingw complains if it finds a bad version of windres
Ian Lynagh <igloo at earth.li>**20081004175351] 
[removed Data.Generics.Basics, added Data.Data
'Jose Pedro Magalhaes <jpm at cs.uu.nl>'**20081002082808] 
[Fix a build problem with GHC 6.4.2
Ian Lynagh <igloo at earth.li>**20081003195700] 
[No AutoLinkPackages for dynamic library linking
Clemens Fruhwirth <clemens at endorphin.org>**20081003185304] 
[use ghcError for error in command line
Clemens Fruhwirth <clemens at endorphin.org>**20081001125648] 
[Fix warnings
simonpj at microsoft.com**20081003171207] 
[Always use extensible exceptions in ghc-pkg, rather than using ifdefs
Ian Lynagh <igloo at earth.li>**20081003161247] 
[Use a proper exception for IOEnvFailure, not just a UserError
Ian Lynagh <igloo at earth.li>**20081003160129] 
[Use an extensible-exceptions package when bootstrapping
Ian Lynagh <igloo at earth.li>**20081003140216
 Ifdefs for whether we had extensible exceptions or not were spreading
 through GHC's source, and things would only have got worse for the next
 2-3 years, so instead we now use an implementation of extensible
 exceptions built on top of the old exception type.
] 
[Expunge ThFake, cure Trac #2632
simonpj at microsoft.com**20081003140423
 
 This patch fixes a dirty hack (the fake ThFake module), which in turn
 was causing Trac #2632.
 
 The new scheme is that the top-level binders in a TH [d| ... |] decl splice
 get Internal names.  That breaks a previous invariant that things like
 TyCons always have External names, but these TyCons are never long-lived;
 they live only long enough to typecheck the TH quotation; the result is
 discarded.  So it seems cool.
 
 Nevertheless -- Template Haskell folk: please test your code.  The testsuite
 is OK but it's conceivable that I've broken something in TH.  Let's see.
 
] 
[Make a debug check more refined
simonpj at microsoft.com**20081003140144] 
[Add ASSERTs to all calls of nameModule
simonpj at microsoft.com**20081003135334
 
 nameModule fails on an InternalName.  These ASSERTS tell you
 which call failed.
 
] 
[Let parseModule take a ModSummary like checkAndLoadModule did.
Thomas Schilling <nominolo at googlemail.com>**20081002230412
 
 To get the ModSummary for a ModuleName getModSummary can be used.
 It's not called find* or lookup* because it assumes that the module is
 in the module graph and throws an exception if it cannot be found.
 Overall, I'm not quite sure about the usefulness of this function
 since the user has no control about which filetype to grab (hs or
 hs-boot).
] 
[Remove some out-of-date entries from .darcs-boring
Ian Lynagh <igloo at earth.li>**20081002201519] 
[TFs: Allow repeated variables in left-hand sides of instances
Manuel M T Chakravarty <chak at cse.unsw.edu.au>**20081002134539
 
   MERGE TO 6.10
] 
[Clean up some comments
Manuel M T Chakravarty <chak at cse.unsw.edu.au>**20081002074642
 
   MERGE TO 6.10
] 
[Make the new binder-swap stuff in OccurAnal work right for GlobalIds
simonpj at microsoft.com**20081002133002
 
 See Note [Binder swap on GlobalId scrutinees].  I hadn't got this
 right before, so repeated cases on imported Ids weren't getting optimised.
 
 
] 
[Minor refactoring only
simonpj at microsoft.com**20081002132929] 
[Comments only
simonpj at microsoft.com**20081002132833] 
[Zap dead-ness info appropriately in SpecConstr
simonpj at microsoft.com**20081002132657
 
 SpecConstr can make pattern binders come alive, so we must remember
 to zap their dead-variable annotation.  See extendCaseBndrs.
 
 (This was triggering a Core Lint failure in DPH.)
 
] 
[Suppress invalid Core Lint complaint about lack of constructors
simonpj at microsoft.com**20081002132426] 
[add some more GC roots (fixes conc048, and possibly some others)
Simon Marlow <marlowsd at gmail.com>**20081001164427] 
[Document +RTS -hT 
Simon Marlow <marlowsd at gmail.com>**20081001163222
 We forgot to document this in GHC 6.8
] 
[fix new-qualified-operators link
Simon Marlow <marlowsd at gmail.com>**20081001163105] 
[Proper error message for unsupported pattern signatures
Manuel M T Chakravarty <chak at cse.unsw.edu.au>**20081001144339
 - Pattern signatures must be identical to the type expected for the pattern;
   see Note [Pattern coercions]
 - We now signal an appropriate error if an equality coercion would be needed
   (instead of just generating Core that doesn't typecheck)
 
   MERGE TO 6.10
] 
[Prevent excessive inlining with DPH
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20081002012055
 
 This adds a new flag -finline-if-enough-args which disables inlining for
 partially applied functions. It is automatically set by -Odph. This is a
 temporary hack and should remain undocumented.
 
 MERGE TO 6.10
 
] 
[On Windows, check that we have a good version of windres when configuring
Ian Lynagh <igloo at earth.li>**20081001171133] 
[Call $(PERL) rather than perl when making the manpage
Ian Lynagh <igloo at earth.li>**20080930155054] 
[don't install the installPackage program
Ian Lynagh <igloo at earth.li>**20080930145714] 
[Fix #2637: conc032(threaded2) failure
Simon Marlow <marlowsd at gmail.com>**20081001135549
 There was a race condition whereby a thread doing throwTo could be
 blocked on a thread that had finished, and the GC would detect this
 as a deadlock rather than raising the pending exception.  We can't
 close the race, but we can make the right thing happen when the GC
 runs later.
] 
[Remove outdated link to OGI webpage
Simon Marlow <marlowsd at gmail.com>**20080930150912] 
[TFs: Fixed InstContextNorm (and simplification of IPs)
Manuel M T Chakravarty <chak at cse.unsw.edu.au>**20081001131303
 
   MERGE TO 6.10
] 
[TcSimplify.reduceImplication: clean up
Manuel M T Chakravarty <chak at cse.unsw.edu.au>**20081001091315
 - This cleans up some of the mess in reduceImplication and documents the
   precondition on the form of wanted equalities properly.
 - I also made the back off test a bit smarter by allowing to back off in the
   presence of wanted equalities as long as none of them got solved in the
   attempt.  (That should save generating some superfluous bindings.)
 
   MERGE TO 6.10
] 
[Make sure to zonk the kind of coercion variables
Manuel M T Chakravarty <chak at cse.unsw.edu.au>**20081001053243
 
   MERGE TO 6.10
] 
[Remover PROT_EXEC flag from mmap()
Simon Marlow <marlowsd at gmail.com>**20080930141842
 Needed for #738 fix
] 
[Fix #2410: carefully generate unique names for CAF CCs
Simon Marlow <marlowsd at gmail.com>**20080930141812] 
[fix #2594: we were erroneously applying masks, as the reporter suggested
Simon Marlow <marlowsd at gmail.com>**20080930115611
 My guess is that this is left over from when we represented Int8 and
 friends as zero-extended rather than sign-extended.  It's amazing it hasn't
 been noticed earlier.
] 
[Unconditionalize definition of DYNAMIC_* so that libffi.so/.dll is removed even when BuildSharedLibs is reset to NO
Clemens Fruhwirth <clemens at endorphin.org>**20080930085449] 
[Type families: need to instantiate flexible skolems before other flexibles
Manuel M T Chakravarty <chak at cse.unsw.edu.au>**20080930053559
 
 MERGE TO 6.10
] 
[Fix warnings
Manuel M T Chakravarty <chak at cse.unsw.edu.au>**20080929142227] 
[Type families: consider subst rules both way
Manuel M T Chakravarty <chak at cse.unsw.edu.au>**20080929141040
 - applySubstFam, applySubstVarVar & applySubstVarFam need to return their 
   second argument -to be put into the todo list- if the rule would be 
   applicable if the equalities would be supplied in the opposite order.
 
 MERGE TO 6.10
] 
[Clean up a bit and improve an error message
pepe**20080926211429] 
[Don't capture error calls in tryUser
pepe**20080926204836
 
 A previous patch slightly changed the semantics of tryUser.
 This patch restores the original behaviour
 (as expected in :print)
 
] 
[tweaks to this section of the docs
Simon Marlow <simonmar at microsoft.com>**20080927141834] 
[Add -outputdir flag (#2295)
Simon Marlow <simonmar at microsoft.com>**20080927141822] 
[oops, forgot to add -XNewQualifiedOperators to the flags table
Simon Marlow <simonmar at microsoft.com>**20080923140449] 
[Fix making OS X installers from source tarballs
Ian Lynagh <igloo at earth.li>**20080927150507
 I'm not sure why it works in the HEAD, but when making an installer
 from the 6.10.1 beta configure hangs when doing the CHECK_HIST_ERRORS
 test (during rl_initialize, I believe). Giving make /dev/null as stdin
 fixes it.
] 
[Make the matching of the filename ghc.exe case insensitive, fixes bug #2603
Neil Mitchell <ndmitchell at gmail.com>**20080916160311] 
[Fix #2411: missing case for CATCH_STM_FRAME in raiseAsync()
Simon Marlow <simonmar at microsoft.com>**20080926232806] 
[Fix parsing of -ignore-package flag.
Bertram Felgenhauer <int-e at gmx.de>**20080925053820] 
[Add an example of how to use SCCs to the user guide
Ian Lynagh <igloo at earth.li>**20080926203832] 
[Add some description of the +RTS -t/-s/-S output
Ian Lynagh <igloo at earth.li>**20080926200203] 
[Remove a redundant options pragma
Ian Lynagh <igloo at earth.li>**20080926152731] 
[Split ShowVersion etc off into a different type to DoInteractive etc
Ian Lynagh <igloo at earth.li>**20080926140539
 This fixes trac #1348 (ghci --help gave ghc's help), and also tidies
 things up a bit. Things would be even tidier if the usage.txt files were
 put into a .hs file, so that ShowUsage wouldn't need to be able to find
 the libdir.
] 
[Pass SRC_HC_OPTS to GHC when building GHC's Main.hs
Ian Lynagh <igloo at earth.li>**20080926131609] 
[Improve runghc docs; fixes trac #2477
Ian Lynagh <igloo at earth.li>**20080926124425] 
[Type families: fixes in flattening & finalisation
Manuel M T Chakravarty <chak at cse.unsw.edu.au>**20080925225324
 * Finalisation didn't do the right thing for equalities x ~ y, where
   x was instantiated, but not zonked and y flexible (need to do y := x)
 * During flattening we weren't careful enough when turning wanteds 
   intermediates into locals
 
 Both bugs showed up in a small example of SPJ:
 
   linear :: HasTrie (Basis v) => (Basis v, v)
   linear =  basisValue
 
   class HasTrie a where
 
   type family Basis u :: *
 
   basisValue :: (Basis v,v)
   basisValue = error "urk"
 
] 
[Fix the behaviour of flags like --help and --version; fixes trac #2620
Ian Lynagh <igloo at earth.li>**20080925165618
 They should override other mode flags, not conflict with them
] 
[Follow the integer package changes
Ian Lynagh <igloo at earth.li>**20080925133855] 
[Type families: fix decomposition problem
Manuel M T Chakravarty <chak at cse.unsw.edu.au>**20080925084139
 * Fixes the problem reported in 
   <http://www.haskell.org/pipermail/haskell-cafe/2008-July/044911.html>
] 
[Don't exit ghci if :info is called on an undefined identifier.
Judah Jacobson <judah.jacobson at gmail.com>**20080924212422] 
[Fix maintainer-clean
Ian Lynagh <igloo at earth.li>**20080924230553] 
[Use -f when making the runhaskell symlink
Ian Lynagh <igloo at earth.li>**20080924124255
 Otherwise installation fails if runhaskell already exists.
] 
[Use -perm -100 rather than -perm /a+x when looking for executable files
Ian Lynagh <igloo at earth.li>**20080924124137
 /a+x doesn't work on some Solaris and OS X machines. Spotted by
 Christian Maeder.
] 
[Use $(FIND) rather than find, as the former may be gfind
Ian Lynagh <igloo at earth.li>**20080924123323] 
[Look for gfind as well as find
Ian Lynagh <igloo at earth.li>**20080924123046] 
[In configure, don't call FPTOOLS_HADDOCK
Ian Lynagh <igloo at earth.li>**20080924122558
 We now use the in-tree haddock, so we don't need to look for it.
] 
[Use $(TAR) rather than tar
Ian Lynagh <igloo at earth.li>**20080924121759
 Fixes problems on Solaris, where we need to use gtar instead of tar
] 
[Add $(strip) to a Makefile test
Ian Lynagh <igloo at earth.li>**20080924120940
 Fixes making bindists on solaris. Patch from Christian Maeder.
] 
[Use test -f rather than test -e, for portability (Solaris)
Ian Lynagh <igloo at earth.li>**20080924120840] 
[Remove some dependencies on bootstrapping.conf from libraries/Makefile
Ian Lynagh <igloo at earth.li>**20080923205755
 They were causing some unnecessary work:
 Running make in a built tree reregisters the GHC package in
 bootstrapping.conf, and the build system thought that this updated
 timestamp meant that the configure stamps were out of date. This is
 particularly bad for the libraries with configure scripts, as those
 take a while to run.
 
 The bootstrapping.conf is built in an earlier phase ("make boot") so
 one shouldn't rely on the dependencies anyway.
] 
[Bump the version number to 6.11
Ian Lynagh <igloo at earth.li>**20080923165613] 
[Generalise type of 'defaultErrorHandler' so it can be used inside a Ghc session.
Thomas Schilling <nominolo at googlemail.com>**20080921085647] 
[Make "sh -e boot" work
Ian Lynagh <igloo at earth.li>**20080921111508] 
[Use -f rather than -e for portability
Ian Lynagh <igloo at earth.li>**20080921111436] 
[Add some special cases for putting dph in bindists
Ian Lynagh <igloo at earth.li>**20080921000406] 
[Escape a hash in the Makefile (it was breaking source dist creation)
Ian Lynagh <igloo at earth.li>**20080920232945] 
[Disallow package flags in OPTIONS_GHC pragmas (#2499)
Simon Marlow <simonmar at microsoft.com>**20080923173904] 
[#2566: emit a warning for 'ghc -c foo.bar'
Simon Marlow <simonmar at microsoft.com>**20080923144956
 
 $ ghc -c foo.bar
 Warning: the following files would be used as linker inputs, but linking is not being done: foo.bar
 ghc: no input files
 Usage: For basic information, try the `--help' option.
] 
[Fix to new executable allocation code (fixed print002 etc.)
Simon Marlow <simonmar at microsoft.com>**20080922210915
 The problem here is caused by the fact that info tables include a
 relative offset to the string naming the constructor.  Executable
 memory now resides at two places in the address space: one for writing
 and one for executing.  In the info tables generated by GHCi, we were
 calculating the offset relative to the writable instance, rather than
 the executable instance, which meant that the GHCi debugger couldn't
 find the names for constructors it found in the heap.
] 
[clean sm/Evac_thr.c and sm/Scav_thr.c
Simon Marlow <simonmar at microsoft.com>**20080922152827] 
[add -XNewQualifiedOperators (Haskell' qualified operator syntax)
Simon Marlow <simonmar at microsoft.com>**20080922152340] 
[Fix Trac #2597 (first bug): correct type checking for empty list
simonpj at microsoft.com**20080920212010
 
 The GHC front end never generates (ExplicitList []), but TH can.
 This patch makes the typechecker robust to such programs.
 
] 
[Fix Trac #2597 (second bug): complain about an empty DoE block
simonpj at microsoft.com**20080920211101
 
 When converting an empty do-block from TH syntax to HsSyn,
 complain rather than crashing.
 
] 
[Update dependencies
Ian Lynagh <igloo at earth.li>**20080920183534] 
[Fix building with GHC 6.6
Ian Lynagh <igloo at earth.li>**20080920162918] 
[Remove fno-method-sharing from the list of static flags
Ian Lynagh <igloo at earth.li>**20080920010635
 It is now a dynamic flag
] 
[Tidy up the treatment of dead binders
simonpj at microsoft.com**20080920175238
 
 This patch does a lot of tidying up of the way that dead variables are
 handled in Core.  Just the sort of thing to do on an aeroplane.
 
 * The tricky "binder-swap" optimisation is moved from the Simplifier
   to the Occurrence Analyser.  See Note [Binder swap] in OccurAnal.
   This is really a nice change.  It should reduce the number of
   simplifier iteratoins (slightly perhaps).  And it means that
   we can be much less pessimistic about zapping occurrence info
   on binders in a case expression.  
 
 * For example:
 	case x of y { (a,b) -> e }
   Previously, each time around, even if y,a,b were all dead, the
   Simplifier would pessimistically zap their OccInfo, so that we
   can't see they are dead any more.  As a result virtually no 
   case expression ended up with dead binders.  This wasn't Bad
   in itself, but it always felt wrong.
 
 * I added a check to CoreLint to check that a dead binder really
   isn't used.  That showed up a couple of bugs in CSE. (Only in
   this sense -- they didn't really matter.)
   
 * I've changed the PprCore printer to print "_" for a dead variable.
   (Use -dppr-debug to see it again.)  This reduces clutter quite a
   bit, and of course it's much more useful with the above change.
 
 * Another benefit of the binder-swap change is that I could get rid of
   the Simplifier hack (working, but hacky) in which the InScopeSet was
   used to map a variable to a *different* variable. That allowed me
   to remove VarEnv.modifyInScopeSet, and to simplify lookupInScopeSet
   so that it doesn't look for a fixpoint.  This fixes no bugs, but 
   is a useful cleanup.
 
 * Roman pointed out that Id.mkWildId is jolly dangerous, because
   of its fixed unique.  So I've 
 
      - localied it to MkCore, where it is private (not exported)
 
      - renamed it to 'mkWildBinder' to stress that you should only
        use it at binding sites, unless you really know what you are
        doing
 
      - provided a function MkCore.mkWildCase that emodies the most
        common use of mkWildId, and use that elsewhere
 
    So things are much better
 
 * A knock-on change is that I found a common pattern of localising
   a potentially global Id, and made a function for it: Id.localiseId
 
] 
[Gix the ghcii script
Ian Lynagh <igloo at earth.li>**20080919174651
 The ghc executable name doesn't have a version number on Windows, so
 don't put one in the script.
] 
[Create runhaskell as well as runghc
Ian Lynagh <igloo at earth.li>**20080919153010] 
[On Linux use libffi for allocating executable memory (fixed #738)
Simon Marlow <marlowsd at gmail.com>**20080919134602] 
[Move the context_switch flag into the Capability
Simon Marlow <marlowsd at gmail.com>**20080919102601
 Fixes a long-standing bug that could in some cases cause sub-optimal
 scheduling behaviour.
] 
[Fix building the extralibs tarball
Ian Lynagh <igloo at earth.li>**20080919133555
 We now need to dig the appropriate lines out of packages, rather than
 just catting libraries/extra-packages, in order to find out what the
 extralibs are.
] 
[Install libffi when installing frmo a bindist
Ian Lynagh <igloo at earth.li>**20080919130332] 
[Fix how we put libffi into bindists
Ian Lynagh <igloo at earth.li>**20080919125528] 
[TAG 6.10 branch has been forked
Ian Lynagh <igloo at earth.li>**20080919123437] 
[Don't require Parser.y in a source dist
Ian Lynagh <igloo at earth.li>**20080919115831] 
[Add HpcParser.hs to source dists
Ian Lynagh <igloo at earth.li>**20080919115816] 
[Fix the list of generated files that need to go into the source dists
Ian Lynagh <igloo at earth.li>**20080919112522] 
[Improve documentation of overlapping instances
simonpj at microsoft.com**20080919093147] 
[Put generated files in source dists
Ian Lynagh <igloo at earth.li>**20080918194424
 We don't want to require that users building source dists have alex/happy
] 
[Add libraries/syb to .darcs-boring
Ian Lynagh <igloo at earth.li>**20080918190116] 
[Fix a couple of issues with :print
pepe**20080918122133
       
       - Ticket #1995: Unsoundness with newtypes
       - Ticket #2475: "Can't unify" error when stopped at an exception
       
       In addition this patch adds the following:
       
       - Unfailingness: RTTI cannot panic anymore. 
         In case of failure, it recovers gracefully by returning the "I know nothing" type
       - A -ddump-rtti flag
 
] 
[wibble
pepe <mnislaih at gmail.com>**20080418172303] 
[RichTokenStream support
Chaddai Fouche <chaddai.fouche at gmail.com>**20080918165256
 
 This patch adds support for raw token streams, that contain more
 information than normal token streams (they contains comments at
 least). The "lexTokenStream" function brings this support to the
 Lexer module. In addition to that, functions have been added to
 the GHC module to make easier to recover of the token stream of 
 a module ("getTokenStream").
 
 Building on that, I added what could be called "rich token
 stream": token stream to which have been added the source string
 corresponding to each token, the function addSourceToToken takes
 a StringBuffer and a starting SrcLoc and a token stream and build
 this rich token stream. getRichTokenStream is a convenience
 function to get a module rich token stream. "showRichTokenStream"
 use the SrcLoc information in such a token stream to get a string
 similar to the original source (except unsignificant
 whitespaces). Thus "putStrLn . showRichTokenStream =<<
 getRichTokenStream s mod" should print a valid module source, the
 interesting part being to modify the token stream between the get
 and the show of course.
] 
[When passing gcc -B, also tell it where the mingw include directory is
Ian Lynagh <igloo at earth.li>**20080918143312] 
[Don't put the mingw directory in RTS's package.conf
Ian Lynagh <igloo at earth.li>**20080918143118] 
[Be more forceful when cleaning in compiler/ and ghc/
Ian Lynagh <igloo at earth.li>**20080918134443
 Now that the Cabal file is generated by configure, it would be nice
 if clean worked even if the cabal file is missing. So now we just rm -rf
 the dist directory.
] 
[Generate ghc.cabal and ghc-bin.cabal with configure
Ian Lynagh <igloo at earth.li>**20080918133636
 This allows us to put the proper version number into them
] 
[Make the ghci scripts point to the versioned GHC program, not just "ghc"
Ian Lynagh <igloo at earth.li>**20080918122516] 
[Fix Trac #1470: improve handling of recursive instances (needed for SYB3)
simonpj at microsoft.com**20080918161719
 
 This bug has been hanging around for a long time, as you'll see by its
 number. The fix implements a feature that is really needed by SYB3, to
 allow an instance to (rather indirectly) refer to itself.  The trickiness
 comes when solving the superclass constraints.
 
 The whoel issue is explained in Note [Recursive instances and superclases]
 in TcSimplify.
 
 In cracking this one I found I could remove the WantSCs argument to the
 ReduceMe flag, which is a worthwhile simplification.  Good!
 
] 
[Comments only
simonpj at microsoft.com**20080918155602] 
[Replace ASSERT with WARN, and explain why
simonpj at microsoft.com**20080918155245
 
 The DPH library tripped an ASSERT.  The code is actually OK, but it's
 badly-optimised so I changed it to WARN.  The issue here is explained
 in ClosureInfo, Note [Unsafe coerce complications].
 
] 
[Add a missing "prime" (env' --> env'') thereby fixing a tripping WARN.  Hurrah!
simonpj at microsoft.com**20080918155144] 
[Fix nasty infelicity: do not short-cut empty substitution in the simplifier
simonpj at microsoft.com**20080917162910
 
 I was perplexed about why an arity-related WARN was tripping. It took 
 me _day_ (sigh) to find that it was because SimplEnv.substExpr was taking
 a short cut when the substitution was empty, thereby not subsituting for
 Ids in scope, which must be done (CoreSubst Note [Extending the Subst]).
 
 The fix is a matter of deleting the "optimisation".  Same with
 CoreSubst.substSpec, although I don't know if that actually caused a
 probem.
 
] 
[Avoid arity reduction when doing eta-reduce
simonpj at microsoft.com**20080917162704
 
 We like things with high arity, so when doing eta reduction
 it's probably a good idea to avoid reducing arity.
 
] 
[Add extra WARN test
simonpj at microsoft.com**20080917162434
 
 This warning tests that the arity of a function does not decrease.
 And that it's at least as great as the strictness signature.
 
 Failing this test isn't a disater, but it's distinctly odd and 
 usually indicates that not enough information is getting propagated
 around, and hence you may get more simplifier iterations.
 
] 
[Comments only
simonpj at microsoft.com**20080917162350] 
[Re-adjust interaction between -ddump flags and force-recompilation
simonpj at microsoft.com**20080917161920
 
 If you say -ddump-xx we effectively add -fforce-recomp, so that you
 see your dump output.  But this works badly in --make mode, because
 you get the ddump output for every module, which is probably not what
 you want.  This patch forces recompilation with -ddump-X only in one-shot
 mode.  
 
 Of course, this only affects people using -ddump options.
 
] 
[Add Outputable GhcMode instance
simonpj at microsoft.com**20080917161847] 
[Improve error reporting for 'deriving' (Trac #2604)
simonpj at microsoft.com**20080917135104] 
[Add link to GADT paper re rigid types
simonpj at microsoft.com**20080916094521] 
[Fix MacOS X build: don't believe __GNUC_GNU_INLINE__ on MacOS X
Simon Marlow <marlowsd at gmail.com>**20080918112856] 
[require Alex version 2.1.0
Simon Marlow <marlowsd at gmail.com>**20080918112812
 Having 2.0.1 causes some unicode tests to fail
] 
[Type families: fixes in the new solver
Manuel M T Chakravarty <chak at cse.unsw.edu.au>**20080918100934] 
[ext-core library: Parser fixes; make it build with the HEAD
Tim Chevalier <chevalier at alum.wellesley.edu>**20080918090349
 
 In the ext-core parser I guess I never tested:
 * existential type variable bindings in case alts
 * empty data declarations
 
 That'll learn me!
] 
[Wibble ghc-pkg imports to fix building on Windows
Ian Lynagh <igloo at earth.li>**20080917210813] 
[ghc-pkg needs to make package.conf with sensible permissions
Ian Lynagh <igloo at earth.li>**20080917192155
 It was calling openTempFile which uses a 600 permissions mask.
] 
[Change 'loadWithCompiler' callback argument to just print warnings.
Thomas Schilling <nominolo at googlemail.com>**20080917102925
 Rename function accordingly.
 
 The callback wasn't very flexible to begin with.  There's pretty much
 no way around to calling 'compile' inside that callback since
 'upsweep' depends on certain side effects of compile.  It therefore
 makes more sense to restrict the callback to its intended use only,
 namely to log warnings and errors.
] 
[Fix: GhcStage2HcOpts were being added to stage 3 too
Simon Marlow <marlowsd at gmail.com>**20080917085917] 
[Type families: unify with family apps in checking mode
Manuel M T Chakravarty <chak at cse.unsw.edu.au>**20080917062548] 
[Type families: bug fixes
Manuel M T Chakravarty <chak at cse.unsw.edu.au>**20080916151254] 
[Keep sysnonyms folded in equalities if possible
Manuel M T Chakravarty <chak at cse.unsw.edu.au>**20080916075700] 
[Type families: apply flattening coercions in the right order
Manuel M T Chakravarty <chak at cse.unsw.edu.au>**20080916055136] 
[TcTyFuns: tidy warning
Manuel M T Chakravarty <chak at cse.unsw.edu.au>**20080915031423] 
[Signature for Inst.isValidWantedEqInst
Manuel M T Chakravarty <chak at cse.unsw.edu.au>**20080915030118] 
[Remember if RewriteInst is swapped & bug fixes
Manuel M T Chakravarty <chak at cse.unsw.edu.au>**20080914163639] 
[Type families: fixed all non-termination in the testsuite
Manuel M T Chakravarty <chak at cse.unsw.edu.au>**20080914120638] 
[Type families: completed the new equality solver
Manuel M T Chakravarty <chak at cse.unsw.edu.au>**20080913133631
 - Implements normalisation of class constraints containing synonym family
   applications or skolems refined by local equalities.
 - Clean up of TcSimplify.reduceContext by using the new equality solver.
 - Removed all the now unused code of the old algorithm.
 - This completes the implementation of the new algorithm, but it is largely
   untested => many regressions.
] 
[Use the new -optdep flag replacements when building with >= GHC 6.9
Ian Lynagh <igloo at earth.li>**20080916220057
 Fix building the HEAD with itself
] 
[Use "exec" when running ghc in the wrapper
Ian Lynagh <igloo at earth.li>**20080915100217] 
[Add "#!/bin/sh" to runghc.wrapper
Ian Lynagh <igloo at earth.li>**20080914153507] 
[Add a "#!/bin/sh" to ghc.wrapper
Ian Lynagh <igloo at earth.li>**20080914153344] 
[Fixing directory creation to not create "" directories inside hpc report (harmless but needless)
andygill at ku.edu**20080916172313] 
[Fix Trac #2052 Allowing hpc to understand hsc files.
andygill at ku.edu**20080916030521] 
[Fix Trac #2311: creates subdirs for package coverage information
andygill at ku.edu**20080915204322] 
[FIX #2469: sort out our static/extern inline story
Simon Marlow <marlowsd at gmail.com>**20080916132222
 gcc has changed the meaning of "extern inline" when certain flags are
 on (e.g. --std=gnu99), and this broke our use of it in the header
 files.
] 
[Fix a warning
Simon Marlow <marlowsd at gmail.com>**20080916130922] 
[Stop using mremap() to allocate space for trampolines
Simon Marlow <marlowsd at gmail.com>**20080915145924
 
 This was causing problems because sometimes mremap() moved the memory
 we had allocated from the low 2Gb to above the 2Gb boundary, causing
 some linkages to fail.  There's no MAP_32BIT flag to mremap().
 
 So now we just use mmap(MAP_ANON|MAP_32BIT) to allocated space for the
 trampolines.  People without MAP_32BIT (eg. *BSD) will still have to
 do something else here, such as allocating memory from a fixed
 address; so I've made it slightly easier for those guys, but there's
 still work to do (#2063).
 
 One solution (that Simon PJ is advocating) is to turn on -fPIC by
 default on x86-64.  This is a good solution as it removes the need for
 MAP_32BIT, but doesn't work with -fvia-C, so probably this is for
 later.
] 
[add $(GhcStage[123]HcOpts)
Simon Marlow <marlowsd at gmail.com>**20080912155549] 
[Improve handling of -fdph-* flags
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20080916034746] 
[Add -fdph-this
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20080916033710] 
[Remove last traces of package ndp
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20080916033428] 
[Clean up vectorisation error messages
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20080916013236] 
[Fix vectoriser bug
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20080915042823
 
 We were using mkWildId in situations where it cause disastrous shadowing
] 
[Track changes to dph
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20080912114028] 
[Change desugaring of PArr literals
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20080912015609] 
[Expose the dph packages automatically if -dph-* is set
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20080912004403] 
[Don't panic on non-vectorisable expressions
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20080911054333] 
[-Odph implies -fno-spec-constr-count
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20080910045339] 
[Improve warning for SpecConstr
simonpj at microsoft.com**20080915154908] 
[White space only
simonpj at microsoft.com**20080915154841] 
[Minor refactoring to get rid of Type.splitNewTyConApp
simonpj at microsoft.com**20080915072946] 
[Refactor the desugaring of RULE lhss a bit
simonpj at microsoft.com**20080915150601
 
 This is just a tidy-up.  Previously we were calling occurAnalyse
 twice on each LHS which was silly and a bit unclean too.  
 
 This patch should have no overall effect, though.
 
] 
[Do not use the Static Arg Transformation by default with -O2
simonpj at microsoft.com**20080915150433
 
 Max has some more heuristics to add, and is meanwhile worried
 that having SAT on by default will make some highly-tuned array
 programs worse.  So it's off by default.  
 
 Use -fstatic-argument-transformation to switch it on.
 
] 
[Comments, and a couple of asserts, only
simonpj at microsoft.com**20080914114641] 
[Fix Trac #2587: take account of type lets
simonpj at microsoft.com**20080914113434
 
 GHC allows a non-recursive let for type varaibles
 	let a = TYPE ty in ...
 But the free-variable finder had not caught up with this
 fact. This patch catches up.
 
] 
[Don't try to float type-lets
simonpj at microsoft.com**20080914113324
 
 A type let shouldn't really occur in SetLevels, but if it does,
 this patch makes sure it is left alone.
 
] 
[add refs and fix a bug (noted by Peter Gammie) in docs of arrow notation
Ross Paterson <ross at soi.city.ac.uk>**20080915104757] 
[Generalise type of 'withExtendedLinkEnv'.
Thomas Schilling <nominolo at googlemail.com>**20080915085738] 
[Use 'GhcMonad' in ghci/InteractiveUI.
Thomas Schilling <nominolo at googlemail.com>**20080915085633] 
[Use 'GhcMonad' in ghci/GhciTags.
Thomas Schilling <nominolo at googlemail.com>**20080915084922] 
[Use 'GhcMonad' in ghci/Debugger.
Thomas Schilling <nominolo at googlemail.com>**20080915084738] 
[Use 'GhcMonad' in ghci/GhciMonad.
Thomas Schilling <nominolo at googlemail.com>**20080915084646] 
[Use 'GhcMonad' in ghc/Main.
Thomas Schilling <nominolo at googlemail.com>**20080914232957] 
[Require PatternSignatures for bootstrapping compiler.
Thomas Schilling <nominolo at googlemail.com>**20080914232642] 
[Use 'GhcMonad' in InteractiveEval.
Thomas Schilling <nominolo at googlemail.com>**20080914232454] 
[Use 'GhcMonad' in GHC and split up checkModule into phases.
Thomas Schilling <nominolo at googlemail.com>**20080914232044
 
 I'm not sure I covered all the ways of throwing errors in the code.
 Some functions throw ProgramErrors, some error messages.  It's still
 quite a mess, but we're getting closer.  The missing cases are mostly
 errors that cannot be fixed by the API client either or are a result
 of wrong usage, so are in any case fatal.
 
 One function, 'getModuleInfo', still returns a 'Maybe', but the
 documentation suggests it should always succeed.  So I may change that
 soon.
 
 The spit-up of of 'checkModule' has pros and cons.  The various forms
 of 'checkModule*' now become:
 
  checkAndLoadModule ms False ~~>
     loadModule =<< typecheckModule =<< parseModule (ms_mod_name ms)
 
  checkAndLoadModule ms True ~~>
    loadModule =<< desugarModule =<< typecheckModule =<< parseModule (ms_mod_name ms)
 
  checkModule mn False ~~>
    typecheckModule =<< parseModule mn
 
  checkModule mn True ~~>
    desugarModule =<< typecheckModule =<< parseModule mn
 
 The old APIs cannot easily be provided, since the result type would be
 different depending on the second argument.  However, a more
 convenient API can be modelled on top of these four functions
 ({parse,typecheck,desugar,load}Module).
] 
[Use 'GhcMonad' in DriverPipeline.  Also haddockify a bit while we're at it.
Thomas Schilling <nominolo at googlemail.com>**20080914220628] 
[Use 'GhcMonad' in HscMain.
Thomas Schilling <nominolo at googlemail.com>**20080914213655] 
[Use 'GhcMonad' in DriverMkDepend.
Thomas Schilling <nominolo at googlemail.com>**20080914212113] 
[Haddockify DynFlags (partial).
Thomas Schilling <nominolo at googlemail.com>**20080914211718] 
[Haddockify 'IE'.
Thomas Schilling <nominolo at googlemail.com>**20080914210016] 
[Provide accessors for 'ImportDecl'.
Thomas Schilling <nominolo at googlemail.com>**20080914205811] 
[Start haddockifying 'HsBindLR'.
Thomas Schilling <nominolo at googlemail.com>**20080914205629] 
[Document 'parseStaticFlags'.
Thomas Schilling <nominolo at googlemail.com>**20080914205316] 
[Introduce 'GhcMonad' class and two default implementations 'Ghc' and 'GhcT'.
Thomas Schilling <nominolo at googlemail.com>**20080914204930
 
 This monad will be required by most public API calls.
] 
[Give the "Failing due to -Werror" message a name.
Thomas Schilling <nominolo at googlemail.com>**20080914173904] 
[Make typechecker top-level functions also return messages instead of
Thomas Schilling <nominolo at googlemail.com>**20080914173228
 printing them.
] 
[Reflect changes of desugarer error reporting in VectMonad.
Thomas Schilling <nominolo at googlemail.com>**20080914172711] 
[Generalise 'handleGhcException' to work with any 'ExceptionMonad'.
Thomas Schilling <nominolo at googlemail.com>**20080914172404] 
[Introduce an 'ExceptionMonad' class.
Thomas Schilling <nominolo at googlemail.com>**20080914172154
 
 This monad provides variants of 'catch', 'bracket', and 'finally', so
 exceptions can be handled in monads that wrap IO.  The latter two
 methods need to be part of the class definition, because GHC uses
 'block' and 'unblock' which are used in the definition of those two
 methods for the IO monad.  A perhaps better class interface would
 consist of 'gcatch', 'gblock', and 'gunblock' and let the latter two
 default to 'id' like is done for non-GHC implementations of 'bracket'
 and 'finally'.
] 
[Provide default MonadIO instance for IO.
Thomas Schilling <nominolo at googlemail.com>**20080914164245] 
[Return instead of print warnings and errors in desugarer.
Thomas Schilling <nominolo at googlemail.com>**20080914163641] 
[Return parser errors and warnings instead of dying.
Thomas Schilling <nominolo at googlemail.com>**20080914162644] 
[Add aliases for bags of warnings and errors.
Thomas Schilling <nominolo at googlemail.com>**20080914160337] 
[Slightly more helpful panic message in DynFlags
Tim Chevalier <chevalier at alum.wellesley.edu>**20080915080650] 
[Comments only: ".core" => ".hcr"
Tim Chevalier <chevalier at alum.wellesley.edu>**20080914203645] 
[We need to tell ghc-pkg to --force if we've only built a profiling library
Ian Lynagh <igloo at earth.li>**20080913153142] 
[If we're profiling GHC, don't bother building the GHC package the vanilla way
Ian Lynagh <igloo at earth.li>**20080913144820] 
[Remove the duplicate show rule in libraries/Makefile
Ian Lynagh <igloo at earth.li>**20080913144413] 
[Move the "show" target from target.mk to boilerplate.mk
Ian Lynagh <igloo at earth.li>**20080913141312
 target.mk isn't included everywhere, but show is always handy
] 
[Change how we detect if we are using the bootstrapping compiler or not
Ian Lynagh <igloo at earth.li>**20080913104658
 I think looking for $(GHC_COMPILER_DIR_ABS) was failing on the Windows
 buildbot due to different path separators. Now we just look for
 "inplace".
] 
[wibble the distrib Makefile
Ian Lynagh <igloo at earth.li>**20080912135932
 We now need to install driver after ghc
] 
[Reinstate the driver/ghc directory, to create a versioned GHC program
Ian Lynagh <igloo at earth.li>**20080912113619
 e.g. $(bindir)/ghc-6.9.20080911
] 
[If USE_NEW_MKDEPEND_FLAGS is YES then don't use the deprecated -optdep flags
Ian Lynagh <igloo at earth.li>**20080912110316] 
[Use --force-local when calling tar in bindisttest/
Ian Lynagh <igloo at earth.li>**20080912012855
 Otherwise it thinks that c:/foo is a remote file
] 
[Fix #2586, bug in THUNK_SELECTORs (again)
Simon Marlow <marlowsd at gmail.com>**20080912130404
 This time, we had forgetten the write barrier in one place.
] 
[TAG 2008-09-12 2
Ian Lynagh <igloo at earth.li>**20080912132848] 
Patch bundle hash:
9f946abe9db7b081f803579b0de92bdb9ec8a7c2


More information about the Cvs-ghc mailing list