[TRIVIAL PATCH] handle LinkDynLib correctly until we got shared rts library

Louis Zhuang y.zhuang5 at lse.ac.uk
Wed Apr 22 16:58:19 EDT 2009


Wed Apr 22 21:19:37 BST 2009  y.zhuang5 at lse.ac.uk
  * enable LinkDynLib in compilier phase

Wed Apr 22 21:28:36 BST 2009  y.zhuang5 at lse.ac.uk
  * [TRIVIAL PATCH] do not filter rt package in -shared until we have rts as shared library

New patches:

[enable LinkDynLib in compilier phase
y.zhuang5 at lse.ac.uk**20090422201937
 Ignore-this: 615f399aae08a19ea5047e7c0c4a67d4
] {
hunk ./compiler/main/DriverPipeline.hs 299
    = return Succeeded
 
 link LinkBinary dflags batch_attempt_linking hpt
+   = link' dflags batch_attempt_linking hpt
+
+link LinkDynLib dflags batch_attempt_linking hpt
+   = link' dflags batch_attempt_linking hpt
+
+-- warning suppression
+link other _ _ _ = panicBadLink other
+
+panicBadLink :: GhcLink -> a
+panicBadLink other = panic ("link: GHC not built to link this way: " ++
+                            show other)
+
+link' :: DynFlags                -- dynamic flags
+      -> Bool                    -- attempt linking in batch mode?
+      -> HomePackageTable        -- what to link
+      -> IO SuccessFlag
+
+link' dflags batch_attempt_linking hpt
    | batch_attempt_linking
    = do
         let
hunk ./compiler/main/DriverPipeline.hs 368
                                 text "   Main.main not exported; not linking.")
         return Succeeded
 
--- warning suppression
-link other _ _ _ = panicBadLink other
-
-panicBadLink :: GhcLink -> a
-panicBadLink other = panic ("link: GHC not built to link this way: " ++
-                            show other)
-
 
 linkingNeeded :: DynFlags -> [Linkable] -> [PackageId] -> IO Bool
 linkingNeeded dflags linkables pkg_deps = do
}
[[TRIVIAL PATCH] do not filter rt package in -shared until we have rts as shared library
y.zhuang5 at lse.ac.uk**20090422202836
 Ignore-this: d8c55cf8e6c8c0291117ed7b076d3890
] {
hunk ./compiler/main/DriverPipeline.hs 1549
     -- able to pick the flavour when a binary is linked.
     pkgs <- getPreloadPackagesAnd dflags dep_packages
 
-    -- On Windows we need to link the RTS import lib as Windows does
-    -- not allow undefined symbols.
-#if !defined(mingw32_HOST_OS)
-    let pkgs_no_rts = filter ((/= rtsPackageId) . packageConfigId) pkgs
-#else
+    -- We do not generate rts as shared library yet, so do not filter
+    -- rts package
     let pkgs_no_rts = pkgs
hunk ./compiler/main/DriverPipeline.hs 1552
-#endif
     let pkg_lib_paths = collectLibraryPaths pkgs_no_rts
     let pkg_lib_path_opts = map ("-L"++) pkg_lib_paths
 
}

Context:

[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:
3e27d4e1588ecf79b3c9b0269981823ec6ac823e

Please access the attached hyperlink for an important electronic communications disclaimer: http://www.lse.ac.uk/collections/secretariat/legal/disclaimer.htm



More information about the Cvs-ghc mailing list