Ticket #2865: completions.patch

File completions.patch, 109.2 KB (added by salty-horse, 6 years ago)
1Tue Dec  9 21:42:10 IST 2008  Ori Avtalion <[email protected]>
2  * Add GHCi completions to :set and :show
4New patches:
6[Add GHCi completions to :set and :show
7Ori Avtalion <[email protected]>**20081209194210] {
8hunk ./compiler/ghci/InteractiveUI.hs 146
9-  ("show",     keepGoing showCmd,              Nothing, completeNone),
10+  ("show",     keepGoing showCmd,              Nothing, completeShowOptions),
11hunk ./compiler/ghci/InteractiveUI.hs 1752
12-    where options = "args":"prog":flagList
13+    where options = "args":"prog":"prompt":"editor":"stop":flagList
14hunk ./compiler/ghci/InteractiveUI.hs 1755
15+completeShowOptions w = do
16+  return (filter (w `isPrefixOf`) options)
17+    where options =
18+        ["args", "prog", "prompt", "editor", "stop", "modules", "bindings",
19+         "linker", "breaks", "context", "packages", "languages"]
21hunk ./compiler/ghci/InteractiveUI.hs 1809
22-completeMacro      = completeNone
23-completeIdentifier = completeNone
24-completeModule     = completeNone
25-completeHomeModule = completeNone
26-completeSetOptions = completeNone
27-completeFilename   = completeNone
28+completeMacro       = completeNone
29+completeIdentifier  = completeNone
30+completeModule      = completeNone
31+completeHomeModule  = completeNone
32+completeSetOptions  = completeNone
33+completeShowOptions = completeNone
34+completeFilename    = completeNone
39[Fix #2592: do an orderly shutdown when the heap is exhausted
40Simon Marlow <[email protected]>**20081209105919
41 Really we should be raising an exception in this case, but that's
42 tricky (see comments).  At least now we shut down the runtime
43 correctly rather than just exiting.
45[Fix #2848: avoid overflow during time calculation
46Simon Marlow <[email protected]>**20081209105600]
47[Fix #2838: we should narrow a CmmInt before converting to ImmInteger
48Simon Marlow <[email protected]>**20081209105515]
49[fix an assertion failure in prof/threaded/debug mode
50Simon Marlow <[email protected]>**20081204101201]
51[Inject implicit bindings after CoreTidy, not before Simplify
52[email protected]**20081208173525
54 Originally I inject the "implicit bindings" (record selectors, class
55 method selectors, data con wrappers...) after CoreTidy.  However, in a
56 misguided attempt to fix Trac #2070, I moved the injection point to
57 before the Simplifier, so that record selectors would be optimised by
58 the simplifier.
60 This was misguided because record selectors (indeed all implicit bindings)
61 are GlobalIds, whose IdInfo is meant to be frozen.  But the Simplifier,
62 and other Core-to-Core optimisations, merrily change the IdInfo.  That
63 ultimately made Trac #2844 happen, where a record selector got arity 2,
64 but the GlobalId (which importing scopes re-construct from the class decl
65 rather than reading from the interface file) has arity 1.
67 So this patch moves the injection back to CoreTidy. Happily #2070 should
68 still be OK because we now use CoreSubst.simpleOptExpr on the unfoldings
69 for implict things, which gets rid of the most gratuitous infelicities.
71 Still, there's a strong case for stoppping record selectors from being
72 GlobalIds, and treating them much more like dict-funs.  I'm thinking
73 about that.  Meanwhile, #2844 is ok now.
76[Add assertion for arity match (checks Trac #2844)
77[email protected]**20081208173241
79 The exported arity of a function must match the arity for the
80 STG function.  Trac #2844 was a pretty obscure manifestation of
81 the failure of this invariant. This patch doesn't cure the bug;
82 rather it adds an assertion to CoreToStg to check the invariant
83 so we should get an earlier and less obscure warning if this
84 fails in future.
87[Use CoreSubst.simpleOptExpr in place of the ad-hoc simpleSubst (reduces code too)
88[email protected]**20081208173018]
89[Move simpleOptExpr from CoreUnfold to CoreSubst
90[email protected]**20081208124840]
91[White space only
92[email protected]**20081208124310]
93[Comments only
94[email protected]**20081208124155]
95[Completely new treatment of INLINE pragmas (big patch)
96[email protected]**20081205165400
98 This is a major patch, which changes the way INLINE pragmas work.
99 Although lots of files are touched, the net is only +21 lines of
100 code -- and I bet that most of those are comments!
102 HEADS UP: interface file format has changed, so you'll need to
103 recompile everything.
105 There is not much effect on overall performance for nofib,
106 probably because those programs don't make heavy use of INLINE pragmas.
108         Program           Size    Allocs   Runtime   Elapsed
109             Min         -11.3%     -6.9%     -9.2%     -8.2%
110             Max          -0.1%     +4.6%     +7.5%     +8.9%
111  Geometric Mean          -2.2%     -0.2%     -1.0%     -0.8%
113 (The +4.6% for on allocs is cichelli; see other patch relating to
114 -fpass-case-bndr-to-join-points.)
116 The old INLINE system
117 ~~~~~~~~~~~~~~~~~~~~~
118 The old system worked like this. A function with an INLINE pragam
119 got a right-hand side which looked like
120      f = __inline_me__ (\xy. e)
121 The __inline_me__ part was an InlineNote, and was treated specially
122 in various ways.  Notably, the simplifier didn't inline inside an
123 __inline_me__ note. 
125 As a result, the code for f itself was pretty crappy. That matters
126 if you say (map f xs), because then you execute the code for f,
127 rather than inlining a copy at the call site.
129 The new story: InlineRules
130 ~~~~~~~~~~~~~~~~~~~~~~~~~~
131 The new system removes the InlineMe Note altogether.  Instead there
132 is a new constructor InlineRule in CoreSyn.Unfolding.  This is a
133 bit like a RULE, in that it remembers the template to be inlined inside
134 the InlineRule.  No simplification or inlining is done on an InlineRule,
135 just like RULEs. 
137 An Id can have an InlineRule *or* a CoreUnfolding (since these are two
138 constructors from Unfolding). The simplifier treats them differently:
140   - An InlineRule is has the substitution applied (like RULES) but
141     is otherwise left undisturbed.
143   - A CoreUnfolding is updated with the new RHS of the definition,
144     on each iteration of the simplifier.
146 An InlineRule fires regardless of size, but *only* when the function
147 is applied to enough arguments.  The "arity" of the rule is specified
148 (by the programmer) as the number of args on the LHS of the "=".  So
149 it makes a difference whether you say
150        {-# INLINE f #-}
151        f x = \y -> e     or     f x y = e
152 This is one of the big new features that InlineRule gives us, and it
153 is one that Roman really wanted.
155 In contrast, a CoreUnfolding can fire when it is applied to fewer
156 args than than the function has lambdas, provided the result is small
157 enough.
160 Consequential stuff
161 ~~~~~~~~~~~~~~~~~~~
162 * A 'wrapper' no longer has a WrapperInfo in the IdInfo.  Instead,
163   the InlineRule has a field identifying wrappers.
165 * Of course, IfaceSyn and interface serialisation changes appropriately.
167 * Making implication constraints inline nicely was a bit fiddly. In
168   the end I added a var_inline field to HsBInd.VarBind, which is why
169   this patch affects the type checker slightly
171 * I made some changes to the way in which eta expansion happens in
172   CorePrep, mainly to ensure that *arguments* that become let-bound
173   are also eta-expanded.  I'm still not too happy with the clarity
174   and robustness fo the result.
176 * We now complain if the programmer gives an INLINE pragma for
177   a recursive function (prevsiously we just ignored it).  Reason for
178   change: we don't want an InlineRule on a LoopBreaker, because then
179   we'd have to check for loop-breaker-hood at occurrence sites (which
180   isn't currenlty done).  Some tests need changing as a result.
182 This patch has been in my tree for quite a while, so there are
183 probably some other minor changes.
186[Add -fpass-case-bndr-to-join-points
187[email protected]**20081205105159
189 See Note [Passing the case binder to join points] in Simplify.lhs
190 The default now is *not* to pass the case binder.  There are some
191 nofib results with the above note; the effect is almost always
192 negligible.
194 I don't expect this flag to be used by users (hence no docs). It's just
195 there to let me try the performance effects of switching on and off.
198[Add static flag -fsimple-list-literals
199[email protected]**20081205105002
201 The new static flag -fsimple-list-literals makes ExplicitList literals
202 be desugared in the straightforward way, rather than using 'build' as
203 now.  See SLPJ comments with Note [Desugaring explicit lists].
205 I don't expect this flag to be used by users (hence no docs). It's just
206 there to let me try the performance effects of switching on and off.
209[Comments only in OccurAnal
210[email protected]**20081205103252]
211[Comments only
212[email protected]**20081205102437]
213[Layout only
214[email protected]**20081205102252]
215[Comments only (Note [Entering error thunks])
216[email protected]**20081205102149]
217[Make CoreToStg a little more robust to eta expansion
218[email protected]**20081205101932]
219[Add no-op case for addIdSpecialisations (very minor optimisation)
220[email protected]**20081205101022]
221[Trim redundant import
222[email protected]**20081205101006]
223[Make CoreTidy retain deadness info (better -ddump-simpl)
224[email protected]**20081205100518
226 GHC now retains more robust information about dead variables; but
227 CoreTidy was throwing it away.  This patch makes CoreTidy retain it,
228 which gives better output for -ddump-simpl.
230 New opportunity: shrink interface files by using wildcards for dead variables.
234[Remove INLINE pragmas on recursive functions
235[email protected]**20081205100353
237 INLINE pragmas on recursive functions are ignored; and this
238 is checked in my upcoming patch for inlinings.
241[Comments only (on Activation)
242[email protected]**20081205100139]
243[We need to tell cabal-bin which version of Cabal to use
244Ian Lynagh <[email protected]>**20081203123208
245 Otherwise, if the bootstrapping compiler has a newer version, we get
246 a mismatch between the version used to compile ghc-prim's Setup.hs and
247 the version that installPackage uses.
249[Document 'loadModule'.
250Thomas Schilling <[email protected]>**20081202154800]
251[Add 'needsTemplateHaskell' utility function and document why one might
252Thomas Schilling <[email protected]>**20081202152358
253 want to use it.
255[Documentation only.
256Thomas Schilling <[email protected]>**20081202150158]
257[Export 'succeeded' and 'failed' helper functions.
258Thomas Schilling <[email protected]>**20081202144451]
259[Put full ImportDecls in ModSummary instead of just ModuleNames
260Simon Marlow <[email protected]>**20081202133736
261 ... and use it to make ghc -M generate correct cross-package
262 dependencies when using package-qualified imports (needed for the new
263 build system).  Since we're already parsing the ImportDecl from the
264 source file, there seems no good reason not to keep it in the
265 ModSummary, it might be useful for other things too.
267[ghc -M: need to add a dep on Prelude unless -fno-implicit-prelude is on
268Simon Marlow <[email protected]>**20081128165707]
269[make -include-pkg-deps work (not sure when this got lost)
270Simon Marlow <[email protected]>**20081128135746]
271[Fix more problems caused by padding in the Capability structure
272Simon Marlow <[email protected]>**20081202120735
273 Fixes crashes on Windows and Sparc
275[add missing case to Ord GlobalReg (EagerBlackhole == EagerBlackhole)
276Simon Marlow <[email protected]>**20081128130106]
277[Better error message for fundep conflict
278[email protected]**20081201162845]
279[Fix typo in quasi-quote documentation's sample.
280shelarcy <[email protected]>**20081129024344]
281[Remove the v_Split_info global variable and use a field of dflags instead
282Ian Lynagh <[email protected]>**20081130152403]
283[Document the --machine-readable RTS flag
284Ian Lynagh <[email protected]>**20081130152311]
285[Let 'loadModule' generate proper code depending on the 'hscTarget'.
286Thomas Schilling <[email protected]>**20081128164412
288 With this change it should be possible to perform something similar to
289 'load' by traversing the module graph in dependency order and calling
290 '{parse,typecheck,load}Module' on each.  Of course, if you want smart
291 recompilation checking you should still use 'load'.
293[Expose a separate 'hscBackend' phase for 'HsCompiler' and change
294Thomas Schilling <[email protected]>**20081128163746
295 parameter to 'InteractiveStatus' to a 'Maybe'.
297[Whoops, *don't* reset the complete session in 'withLocalCallbacks'.
298Thomas Schilling <[email protected]>**20081128150727]
299[Use a record instead of a typeclass for 'HsCompiler'.  This is mostly
300Thomas Schilling <[email protected]>**20081128121947
301 equivalent to a typeclass implementation that uses a functional
302 dependency from the target mode to the result type.
304[Remove dead code
305Ian Lynagh <[email protected]>**20081128193831]
306[Update docs not to talk about deprecated -optdep-* flags; fixes trac #2773
307Ian Lynagh <[email protected]>**20081128193633]
308[Use relative URLs in the GHC API haddock docs; fixes #2755
309Ian Lynagh <[email protected]>**20081128184511]
310[Teach runghc about --help; fixes trac #2757
311Ian Lynagh <[email protected]>**20081128191706]
312[Use a per-session data structure for callbacks.  Make 'WarnErrLogger'
313Thomas Schilling <[email protected]>**20081128103628
314 part of it.
316 Part of the GHC API essentially represents a compilation framework.
317 The difference of a *framework* as opposed to a *library* is that the
318 overall structure of the functionality is pre-defined but certain
319 details can be customised via callbacks.  (Also known as the Hollywood
320 Principle: "Don't call us, we'll call you.")
322 This patch introduces a per-session data structure that contains all
323 the callbacks instead of adding lots of small function arguments
324 whenever we want to give the user more control over certain parts of
325 the API.  This should also help with future changes: Adding a new
326 callback doesn't break old code since code that doesn't know about the
327 new callback will use the (hopefully sane) default implementation.
329 Overall, however, we should try and keep the number of callbacks small
330 and well-defined (and provide useful defaults) and use simple library
331 routines for the rest.
333[Improve error message for #2739 (but no fix).
334Thomas Schilling <[email protected]>**20081127135725
336 This patch changes 'loadModule' to define a fake linkable.  The
337 previous implementation of providing no linkable at all violated a
338 pre-condition in the ByteCode linker.  This doesn't fix #2739, but it
339 improves the error message a bit.
341[Remove the packing I added recently to the Capability structure
342Simon Marlow <[email protected]>**20081128105046
343 The problem is that the packing caused some unaligned loads, which
344 lead to bus errors on Sparc (and reduced performance elsewhere,
345 presumably).
347[don't emit CmmComments for now
348Simon Marlow <[email protected]>**20081127090145
349   - if the string contains */, we need to fix it (demonstrated by
350     building Cabal with -fvia-C)
351   - the strings can get quite large, so we probably only want to
352     inject comments when some debugging option is on.
354[Collect instead of print warnings in 'warnUnnecessarySourceImports'.
355Thomas Schilling <[email protected]>**20081127102534]
356[Force recompilation of BCOs when they were compiled in HscNothing mode.
357Thomas Schilling <[email protected]>**20081126183402
359 Previously, loading a set of modules in HscNothing mode and then
360 switching to HscInterpreted could lead to crashes since modules
361 compiled with HscNothing were thought to be valid bytecode objects.
363 This patch forces recompilation in these cases, hence switching between
364 HscNothing and HscInterpreted should be safe now.
366[Documentation only: Add module description for HscMain.
367Thomas Schilling <[email protected]>**20081126134344]
368[Include GHCi files in ctags/etags.
369Thomas Schilling <[email protected]>**20081126122801]
370[drop some debugging traces and use only one flag for new codegen
371[email protected]**20081126180808]
372[one more missing patch from new codegen path
373[email protected]**20081126165742]
374[Fix Trac #2817 (TH syntax -> HsSyn conversion)
375[email protected]**20081126154022]
376[Fix Trac #2756: CorePrep strictness bug
377[email protected]**20081126143448]
378[Format output for :t more nicely
379[email protected]**20081126134814]
380[Fix Trac #2766: printing operator type variables
381[email protected]**20081126132202]
382[Fix build following codegen patch
383[email protected]**20081126125526]
384[Removed warnings, made Haddock happy, added examples in documentation
385[email protected]**20081017170707
386 The interesting examples talk about our story with heap checks in
387 case alternatives and our story with the case scrutinee as a Boolean.
389[Fixed linear regalloc bug, dropped some tracing code
390[email protected]**20081016104218
391 o The linear-scan register allocator sometimes allocated a block
392   before allocating one of its predecessors, which could lead
393   to inconsistent allocations. Now, we allocate a block only
394   if a predecessor has set the "incoming" assignments for the block
395   (or if it's the procedure's entry block).
396 o Also commented out some tracing code on the new codegen path.
398[Keep update frames live even in functions that never return
399[email protected]**20081014165437
400 An unusual case, but without it:
401 (a) we had an assertion failure
402 (b) we can overwrite the caller's infotable, which might cause
403     the garbage collector to collect live data.
404 Better to keep the update frame live at all call sites,
405 not just at returns.
407[Removed space and time inefficiency in procpoint splitting
408[email protected]**20081014160354
409 I was adding extra jumps to every procpoint, even when the split-off graph
410 referred to only some of the procpoints. No effect on correctness,
411 but a big effect on space/time efficiency when there are lots of procpoints...
413[Clarify the SRT building process
414[email protected]**20081014140202
415 Before: building a closure that would build an SRT given the top-level
416 SRT. It was somewhat difficult to understand the control flow, and it
417 may have had held onto some data structures long after they should be dead.
418 Now, I just bundle the info we need about CAFs along with the procedure
419 and directly call a new top-level function to build the SRTs later.
421[Don't adjust hp up when the case scrutinee won't allocate
422[email protected]**20081014112618
424 If the case scrutinee can't allocate, we don't need to do a heap
425 check in the case alternatives. (A previous patch got that right.)
426 In that case, we had better not adjust the heap pointer to recover
427 unused stack space before evaluating the scrutinee -- because we
428 aren't going to reallocate for the case alternative.
430[Floating infotables were reversed in C back end
431[email protected]**20081013152718]
432[forgot a few files
433[email protected]**20081013134251]
434[Big collection of patches for the new codegen branch.
435[email protected]**20081013132556
436 o Fixed bug that emitted the copy-in code for closure entry
437   in the wrong place -- at the initialization of the closure.
438 o Refactored some of the closure entry code.
439 o Added code to check that no LocalRegs are live-in to a procedure
440    -- trip up some buggy programs earlier
441 o Fixed environment bindings for thunks
442    -- we weren't (re)binding the free variables in a thunk
443 o Fixed a bug in proc-point splitting that dropped some updates
444   to the entry block in a procedure.
445 o Fixed improper calls to code that generates CmmLit's for strings
446 o New invariant on cg_loc in CgIdInfo: the expression is always tagged
447 o Code to load free vars on entry to a thunk was (wrongly) placed before
448   the heap check.
449 o Some of the StgCmm code was redundantly passing around Id's
450   along with CgIdInfo's; no more.
451 o Initialize the LocalReg's that point to a closure before allocating and
452   initializing the closure itself -- otherwise, we have problems with
453   recursive closure bindings
454 o BlockEnv and BlockSet types are now abstract.
455 o Update frames:
456   - push arguments in Old call area
457   - keep track of the return sp in the FCode monad
458   - keep the return sp in every call, tail call, and return
459       (because it might be different at different call sites,
460        e.g. tail calls to the gc after a heap check are performed
461             before pushing the update frame)
462   - set the sp appropriately on returns and tail calls
463 o Reduce call, tail call, and return to a single LastCall node
464 o Added slow entry code, using different calling conventions on entry and tail call
465 o More fixes to the calling convention code.
466   The tricky stuff is all about the closure environment: it must be passed in R1,
467   but in non-closures, there is no such argument, so we can't treat all arguments
468   the same way: the closure environment is special. Maybe the right step forward
469   would be to define a different calling convention for closure arguments.
470 o Let-no-escapes need to be emitted out-of-line -- otherwise, we drop code.
471 o Respect RTS requirement of word alignment for pointers
472   My stack allocation can pack sub-word values into a single word on the stack,
473   but it wasn't requiring word-alignment for pointers. It does now,
474   by word-aligning both pointer registers and call areas.
475 o CmmLint was over-aggresively ruling out non-word-aligned memory references,
476   which may be kosher now that we can spill small values into a single word.
477 o Wrong label order on a conditional branch when compiling switches.
478 o void args weren't dropped in many cases.
479   To help prevent this kind of mistake, I defined a NonVoid wrapper,
480   which I'm applying only to Id's for now, although there are probably
481   other good candidates.
482 o A little code refactoring: separate modules for procpoint analysis splitting,
483   stack layout, and building infotables.
484 o Stack limit check: insert along with the heap limit check, using a symbolic
485   constant (a special CmmLit), then replace it when the stack layout is known.
486 o Removed last node: MidAddToContext
487 o Adding block id as a literal: means that the lowering of the calling conventions
488   no longer has to produce labels early, which was inhibiting common-block elimination.
489   Will also make it easier for the non-procpoint-splitting path.
490 o Info tables: don't try to describe the update frame!
491 o Over aggressive use of NonVoid!!!!
492   Don't drop the non-void args before setting the type of the closure!!!
493 o Sanity checking:
494   Added a pass to stub dead dead slots on the stack
495   (only ~10 lines with the dataflow framework)
496 o More sanity checking:
497   Check that incoming pointer arguments are non-stubbed.
498   Note: these checks are still subject to dead-code removal, but they should
499   still be quite helpful.
500 o Better sanity checking: why stop at function arguments?
501   Instead, in mkAssign, check that _any_ assignment to a pointer type is non-null
502   -- the sooner the crash, the easier it is to debug.
503   Still need to add the debugging flag to turn these checks on explicitly.
504 o Fixed yet another calling convention bug.
505   This time, the calls to the GC were wrong. I've added a new convention
506   for GC calls and invoked it where appropriate.
507   We should really straighten out the calling convention stuff:
508     some of the code (and documentation) is spread across the compiler,
509     and there's some magical use of the node register that should really
510     be handled (not avoided) by calling conventions.
511 o Switch bug: the arms in mkCmmLitSwitch weren't returning to a single join point.
512 o Environment shadowing problem in Stg->Cmm:
513   When a closure f is bound at the top-level, we should not bind f to the
514   node register on entry to the closure.
515   Why? Because if the body of f contains a let-bound closure g that refers
516   to f, we want to make sure that it refers to the static closure for f.
517   Normally, this would all be fine, because when we compile a closure,
518   we rebind free variables in the environment. But f doesn't look like
519   a free variable because it's a static value. So, the binding for f
520   remains in the environment when we compile g, inconveniently referring
521   to the wrong thing.
522   Now, I bind the variable in the local environment only if the closure is not
523   bound at the top level. It's still okay to make assumptions about the
524   node holding the closure environment; we just won't find the binding
525   in the environment, so code that names the closure will now directly
526   get the label of the static closure, not the node register holding a
527   pointer to the static closure.
528 o Don't generate bogus Cmm code containing SRTs during the STG -> Cmm pass!
529   The tables made reference to some labels that don't exist when we compute and
530   generate the tables in the back end.
531 o Safe foreign calls need some special treatment (at least until we have the integrated
532   codegen). In particular:
533   o they need info tables
534   o they are not procpoints -- the successor had better be in the same procedure
535   o we cannot (yet) implement the calling conventions early, which means we have
536     to carry the calling-conv info all the way to the end
537 o We weren't following the old convention when registering a module.
538   Now, we use update frames to push any new modules that have to be registered
539   and enter the youngest one on the stack.
540   We also use the update frame machinery to specify that the return should pop
541   the return address off the stack.
542 o At each safe foreign call, an infotable must be at the bottom of the stack,
543   and the TSO->sp must point to it.
544 o More problems with void args in a direct call to a function:
545   We were checking the args (minus voids) to check whether the call was saturated,
546   which caused problems when the function really wasn't saturated because it
547   took an extra void argument.
548 o Forgot to distinguish integer != from floating != during Stg->Cmm
549 o Updating slotEnv and areaMap to include safe foreign calls
550   The dataflow analyses that produce the slotEnv and areaMap give
551   results for each basic block, but we also need the results for
552   a safe foreign call, which is a middle node.
553   After running the dataflow analysis, we have another pass that
554   updates the results to includ any safe foreign calls.
555 o Added a static flag for the debugging technique that inserts
556   instructions to stub dead slots on the stack and crashes when
557   a stubbed value is loaded into a pointer-typed LocalReg.
558 o C back end expects to see return continuations before their call sites.
559   Sorted the flowgraphs appropriately after splitting.
560 o PrimOp calling conventions are special -- unlimited registers, no stack
561   Yet another calling convention...
562 o More void value problems: if the RHS of a case arm is a void-typed variable,
563   don't try to return it.
564 o When calling some primOp, they may allocate memory; if so, we need to
565   do a heap check when we return from the call.
568[Merging in the new codegen branch
569[email protected]**20080814124027
570 This merge does not turn on the new codegen (which only compiles
571 a select few programs at this point),
572 but it does introduce some changes to the old code generator.
574 The high bits:
575 1. The Rep Swamp patch is finally here.
576    The highlight is that the representation of types at the
577    machine level has changed.
578    Consequently, this patch contains updates across several back ends.
579 2. The new Stg -> Cmm path is here, although it appears to have a
580    fair number of bugs lurking.
581 3. Many improvements along the CmmCPSZ path, including:
582    o stack layout
583    o some code for infotables, half of which is right and half wrong
584    o proc-point splitting
586[Major clean-up of HscMain.
587Thomas Schilling <[email protected]>**20081125153201
589 This patch entails a major restructuring of HscMain and a small bugfix
590 to MkIface (which required the restructuring in HscMain).
592 In MkIface:
594   - mkIface* no longer outputs orphan warnings directly and also no
595     longer quits GHC when -Werror is set.  Instead, errors are
596     reported using the common IO (Messages, Maybe result) scheme.
598 In HscMain:
600   - Get rid of the 'Comp' monad.  This monad was mostly GhcMonad + two
601     reader arguments, a ModSummary for the currently compiled module
602     and a possible old interface.  The latter actually lead to a small
603     space-leak since only its hash was needed (to check whether the
604     newly-generated interface file was the same as the original one).
606     Functions originally of type 'Comp' now only take the arguments
607     that they actually need.  This leads to slighly longer argument
608     lists in some places, however, it is now much easier to see what
609     is actually going on.
611   - Get rid of 'myParseModule'.  Rename 'parseFile' to 'hscParse'.
613   - Join 'deSugarModule' and 'hscDesugar' (keeping the latter).
615   - Rename 'typecheck{Rename}Module{'}' to 'hscTypecheck{Rename}'.
616     One variant keeps the renamed syntax, the other doesn't.
618   - Parameterise 'HscStatus', so that 'InteractiveStatus' is just a
619     different parameterisation of 'HscStatus'.
621   - 'hscCompile{OneShot,Batch,Nothing,Interactive}' are now
622     implemented using a (local) typeclass called 'HsCompiler'.  The
623     idea is to make the common structure more obvious.  Using this
624     typeclass we now have two functions 'genericHscCompile' (original
625     'hscCompiler') and 'genericHscRecompile' (original 'genComp')
626     describing the default pipeline.  The methods of the typeclass
627     describe a sort of "hook" interface (in OO-terms this would be
628     called the "template method" pattern).
630     One problem with this approach is that we parameterise over the
631     /result/ type which, in fact, is not actually different for
632     "nothing" and "batch" mode.  To avoid functional dependencies or
633     associated types, we use type tags to make them artificially
634     different and parameterise the type class over the result type.
635     A perhaps better approach might be to use records instead.
637   - Drop some redundant 'HscEnv' arguments.  These were likely
638     different from what 'getSession' would return because during
639     compilation we temporarily set the module's DynFlags as well as a
640     few other fields.  We now use the 'withTempSession' combinator to
641     temporarily change the 'HscEnv' and automatically restore the
642     original session after the enclosed action has returned (even in
643     case of exceptions).
645   - Rename 'hscCompile' to 'hscGenHardCode' (since that is what it
646     does).
648 Calls in 'GHC' and 'DriverPipeline' accordingly needed small
649 adaptions.
651[Fix Trac #2799: TcType.isOverloadedTy
652[email protected]**20081125110540
654 A missing case (for equality predicates) in isOverloadedTy make
655 bindInstsOfLocalFuns/Pats do the wrong thing.  Core Lint nailed it.
657 Merge to 6.10 branch.
660[Fix #2740: we were missing the free variables on some expressions
661Simon Marlow <[email protected]>**20081125103113
662 Particularly boolean expresions: the conditional of an 'if', and
663 guards, were missing their free variables.
665[Fix symbol macro names in Linker.c
666Thorkil Naur <[email protected]>**20081121160149]
667[Add a --machine-readable RTS flag
668Ian Lynagh <[email protected]>**20081123152127
669 Currently it only affects the -t flag output
671[Return errors instead of dying in myParseModule.
672Thomas Schilling <[email protected]>**20081122154151]
673[Comments/Haddockification only.
674Thomas Schilling <[email protected]>**20081122143018]
675[Report source span instead of just source location for unused names.
676Thomas Schilling <[email protected]>**20081122142641]
677[Change 'handleFlagWarnings' to throw exceptions instead of dying.
678Thomas Schilling <[email protected]>**20081122130658
680 It now uses the standard warning log and error reporting mechanism.
682[Document exported functions in main/HeaderInfo.
683Thomas Schilling <[email protected]>**20081121145307]
684[Remove warning supression klugde in main/HeaderInfo
685Thomas Schilling <[email protected]>**20081121144155]
686[Use mutator threads to do GC, instead of having a separate pool of GC threads
687Simon Marlow <[email protected]>**20081121151233
689 Previously, the GC had its own pool of threads to use as workers when
690 doing parallel GC.  There was a "leader", which was the mutator thread
691 that initiated the GC, and the other threads were taken from the pool.
693 This was simple and worked fine for sequential programs, where we did
694 most of the benchmarking for the parallel GC, but falls down for
695 parallel programs.  When we have N mutator threads and N cores, at GC
696 time we would have to stop N-1 mutator threads and start up N-1 GC
697 threads, and hope that the OS schedules them all onto separate cores.
698 It practice it doesn't, as you might expect.
700 Now we use the mutator threads to do GC.  This works quite nicely,
701 particularly for parallel programs, where each mutator thread scans
702 its own spark pool, which is probably in its cache anyway.
704 There are some flag changes:
706   -g<n> is removed (-g1 is still accepted for backwards compat).
707   There's no way to have a different number of GC threads than mutator
708   threads now.
710   -q1       Use one OS thread for GC (turns off parallel GC)
711   -qg<n>    Use parallel GC for generations >= <n> (default: 1)
713 Using parallel GC only for generations >=1 works well for sequential
714 programs.  Compiling an ordinary sequential program with -threaded and
715 running it with -N2 or more should help if you do a lot of GC.  I've
716 found that adding -qg0 (do parallel GC for generation 0 too) speeds up
717 some parallel programs, but slows down some sequential programs.
718 Being conservative, I left the threshold at 1.
720 ToDo: document the new options.
723[we shouldn't update topBound in discardSparks()
724Simon Marlow <[email protected]>**20081121113539]
725[Throw SourceErrors instead of ProgramErrors in main/HeaderInfo.
726Thomas Schilling <[email protected]>**20081121141339
728 Parse errors during dependency analysis or options parsing really
729 shouldn't kill GHC; this is particularly annoying for GHC API clients.
731[fix the build when !USE_MMAP
732Simon Marlow <[email protected]>**20081121085418]
733[round the size up to a page in mmapForLinker() instead of in the caller
734Simon Marlow <[email protected]>**20081120154014]
735[Fix a race in the deadlock-detection code
736Simon Marlow <[email protected]>**20081120112438
737 After a deadlock it was possible for the timer signal to remain off,
738 which meant that the next deadlock would not be detected, and the
739 system would hang.  Spotted by conc047(threaded2).
741[error message wibble
742Simon Marlow <[email protected]>**20081120084901]
743[Fix flag name -XDisambiguateRecordFields
744[email protected]**20081120123205]
745[Fix regTableToCapability() if gcc introduces padding
746Simon Marlow <[email protected]>**20081119162910
747 Also avoid padding if possible using __attribute__((packed))
748 Fixes the Windows build
750[Fix 32-bit breakage
751Simon Marlow <[email protected]>**20081119145429]
752[Small refactoring, and add comments
753Simon Marlow <[email protected]>**20081119143702
754 I discovered a new invariant while experimenting (blackholing is not
755 optional when using parallel GC), so documented it.
757[Fix some unsigned comparisions that should be signed
758Simon Marlow <[email protected]>**20081119143205
759 Fixes crashes when using reclaimSpark() (not used currently, but may
760 be in the future).
762[Remove incorrect assertions in steal()
763Simon Marlow <[email protected]>**20081119143043]
764[don't run sparks if there are other threads on this Capability
765Simon Marlow <[email protected]>**20081114121022]
766[Fix typo (HAVE_LIBGMP => HAVE_LIB_GMP); omit local gmp includes if HAVE_LIB_GMP
767Simon Marlow <[email protected]>**20081119131056
768 If we're using the system's installed GMP, we don't want to be picking
769 up the local gmp.h header file.
771 Fixes 2469(ghci) for me, because it turns out the system's GMP is more
772 up-to-date than GHC's version and has a fix for more recent versions
773 of gcc.  We also need to pull in a more recent GMP, but that's a
774 separte issue.
776[Fix some more shutdown races
777Simon Marlow <[email protected]>**20081119124848
778 There were races between workerTaskStop() and freeTaskManager(): we
779 need to be sure that all Tasks have exited properly before we start
780 tearing things down.  This isn't completely straighforward, see
781 comments for details.
783[Add help messages about --with-editline-(includes,libraries) to the ghc configure script.
784Judah Jacobson <[email protected]>**20081114183334]
785[Add optional eager black-holing, with new flag -feager-blackholing
786Simon Marlow <marlowsd@gmail.com>**20081118142442
788 Eager blackholing can improve parallel performance by reducing the
789 chances that two threads perform the same computation.  However, it
790 has a cost: one extra memory write per thunk entry. 
792 To get the best results, any code which may be executed in parallel
793 should be compiled with eager blackholing turned on.  But since
794 there's a cost for sequential code, we make it optional and turn it on
795 for the parallel package only.  It might be a good idea to compile
796 applications (or modules) with parallel code in with
797 -feager-blackholing.
799 ToDo: document -feager-blackholing.
801[Fix #2783: detect black-hole loops properly
802Simon Marlow <marlowsd@gmail.com>**20081117144515
803 At some point we regressed on detecting simple black-hole loops.  This
804 happened due to the introduction of duplicate-work detection for
805 parallelism: a black-hole loop looks very much like duplicate work,
806 except it's duplicate work being performed by the very same thread.
807 So we have to detect and handle this case.
809[Fix warning on Windows (use deleteThread() not deleteThread_())
810Simon Marlow <marlowsd@gmail.com>**20081117143047]
811[fix compile breakage on Windows
812Simon Marlow <marlowsd@gmail.com>**20081117142831]
813[Attempt to fix #2512 and #2063;  add +RTS -xm<address> -RTS option
814Simon Marlow <marlowsd@gmail.com>**20081117120556
815 On x86_64, the RTS needs to allocate memory in the low 2Gb of the
816 address space.  On Linux we can do this with MAP_32BIT, but sometimes
817 this doesn't work (#2512) and other OSs don't support it at all
818 (#2063).  So to work around this:
820   - Try MAP_32BIT first, if available.
822   - Otherwise, try allocating memory from a fixed address (by default
823     1Gb)
825   - We now provide an option to configure the address to allocate
826     from.  This allows a workaround on machines where the default
827     breaks, and also provides a way for people to test workarounds
828     that we can incorporate in future releases.
830[Another shutdown fix
831Simon Marlow <marlowsd@gmail.com>**20081117094350
832 If we encounter a runnable thread during shutdown, just kill it.  All
833 the threads are supposed to be dead at this stage, but this catches
834 threads that might have just returned from a foreign call, or were
835 finalizers created by the GC.
837 Fixes memo002(threaded1)
839[Correct an example in the users guide
840Ian Lynagh <igloo@earth.li>**20081116174938]
841[Fix gen_contents_index when not run inplace; trac #2764
842Ian Lynagh <igloo@earth.li>**20081116174122
843 Based on a patch from juhpetersen.
845[close the temporary Handle before removing the file
846Simon Marlow <marlowsd@gmail.com>**20081114130958]
847[refactor: move unlockClosure() into SMPClosureOps() where it should be
848Simon Marlow <marlowsd@gmail.com>**20081114095817]
849[Omit definitions of cas() and xchg() in .hc code
850Simon Marlow <marlowsd@gmail.com>**20081114095738
851 They cause compilation errors (correctly) with newer gccs
852 Shows up compiling the RTS via C, which happens on Windows
854[Don't put stdin into non-blocking mode (#2778, #2777)
855Simon Marlow <marlowsd@gmail.com>**20081114130546
856 This used to be necessary when our I/O library needed all FDs in
857 O_NONBLOCK mode, and readline used to put stdin back into blocking
858 mode.  Nowadays the I/O library can cope with FDs in blocking mode,
859 and #2778/#2777 show why this is important.
861[Rmoeve --enable-dotnet
862Simon Marlow <marlowsd@gmail.com>**20081114124929]
863[#2751: disourage --enable-shared in ./configure --help
864Simon Marlow <marlowsd@gmail.com>**20081114124748]
865[add a warning that --enable-shared is experimental
866Simon Marlow <marlowsd@gmail.com>**20081114104034]
867[lookupSymbol: revert to looking up both with and without the @N suffix
868Simon Marlow <marlowsd@gmail.com>**20081113122927]
869[#2768: fix compatibility problem with newer version of mingw
870Simon Marlow <marlowsd@gmail.com>**20081113114626]
871[notice ^C exceptions when waiting for I/O
872Simon Marlow <marlowsd@gmail.com>**20081113114342]
873[Fix a bug in the recompilation checking logic.
874Thomas Schilling <nominolo@googlemail.com>**20081113162653
876 Previously, using target HscNothing resulted in unnessesary
877 recompilation because 'upsweep_mod' treated HscInterface specially.
878 This patch changes relaxes this.
880 When running GHC with debug level 5, 'upsweep_mod' will now also be
881 more verbose about what it is doing.
883 There is (at least) one possible remaining problem, though: When using
884 target 'HscNothing' we generate a fake linkable to signal that we have
885 processed a module.  When switching to 'HscInterpreted' this may cause
886 objects to not be recompiled.  Switching from HscNothing to
887 HscInterpreted is therefore only safe if we unload everything first.
889[Fix another subtle shutdown deadlock
890Simon Marlow <marlowsd@gmail.com>**20081113160005
891 The problem occurred when a thread tries to GC during shutdown.  In
892 order to GC it has to acquire all the Capabilities in the system, but
893 during shutdown, some of the Capabilities have already been closed and
894 can never be acquired.
896[Fix an extremely subtle deadlock bug on x86_64
897Simon Marlow <marlowsd@gmail.com>**20081113155730
898 The recent_activity flag was an unsigned int, but we sometimes do a
899 64-bit xchg() on it, which overwrites the next word in memory.  This
900 happened to contain the sched_state flag, which is used to control the
901 orderly shutdown of the system.  If the xchg() happened during
902 shutdown, the scheduler would get confused and deadlock.  Don't you
903 just love C?
905[move an assertion
906Simon Marlow <marlowsd@gmail.com>**20081113154542]
907[Always zap the trailing @N from symbols when looking up in a DLL
908Simon Marlow <marlowsd@gmail.com>**20081112111518
910 Fixes win32002(ghci)
912 Previously we only did this for references from object files, but we
913 should do it for all symbols, including those that GHCi looks up due
914 to FFI calls from bytecode.
916[Only allocate a mark stack if we're actually doing marking
917Simon Marlow <marlowsd@gmail.com>**20081112112144
918 saves a bit of memory in major GCs
920[Fix parse error with older gccs (#2752)
921Simon Marlow <marlowsd@gmail.com>**20081111135344]
922[Fix to i386_insert_ffrees (#2724, #1944)
923Simon Marlow <marlowsd@gmail.com>**20081111125619
924 The i386 native code generator has to arrange that the FPU stack is
925 clear on exit from any function that uses the FPU.  Unfortunately it
926 was getting this wrong (and has been ever since this code was written,
927 I think): it was looking for basic blocks that used the FPU and adding
928 the code to clear the FPU stack on any non-local exit from the block.
929 In fact it should be doing this on a whole-function basis, rather than
930 individual basic blocks.
932[Fix bootstrap with 6.10.1 on Windows
933Simon Marlow <marlowsd@gmail.com>**20081110134318
934 ghc-pkg doesn't understand the old syntax any more, so 'ghc-pkg -l' fails
936[Perform case-insensitive matching of path components in getBaseDir on Windows (Fixes bug 2743)
937Neil Mitchell <ndmitchell@gmail.com>**20081105134315]
938[Documentation only.  Clarify that 'load*' may indeed throw SourceErrors.
939Thomas Schilling <nominolo@googlemail.com>**20081110175614
941 I don't think errors during dependency analysis should be passed to
942 the logger.
944[Fix documentation (to say the opposite).
945Thomas Schilling <nominolo@googlemail.com>**20081110153819]
946[Fix line numbers in TAGS files.
947Thomas Schilling <nominolo@googlemail.com>**20081110153621]
948[Documentation only.
949Thomas Schilling <nominolo@googlemail.com>**20081110153456]
950[Add 'packageDbModules' function to GHC API.
951Thomas Schilling <nominolo@googlemail.com>**20081110143510
953 This function returns a list of all modules available through the
954 package DB.
956 MERGE TO 6.10
958[We now require GHC 6.6, so we always have Applicative
959Ian Lynagh <igloo@earth.li>**20081108144723]
960[Remove a CPP test that's always true (__GLASGOW_HASKELL__ >= 605)
961Ian Lynagh <igloo@earth.li>**20081108144544]
962[Remove some dead code now that __GLASGOW_HASKELL__ >= 606
963Ian Lynagh <igloo@earth.li>**20081108144459]
964[Remove some flag duplication from a Makefile
965Ian Lynagh <igloo@earth.li>**20081108144412]
966[ghc_ge_605 is now always YES
967Ian Lynagh <igloo@earth.li>**20081108144328]
968[Remove the GHC 6.4 unicode compat stuff; we can now just use Data.Char
969Ian Lynagh <igloo@earth.li>**20081108143423]
970[Fix libffi bindist
971Clemens Fruhwirth <clemens@endorphin.org>**20081108094725]
972[Replace couple of fromJust with expectJust
973Clemens Fruhwirth <clemens@endorphin.org>**20081107160735]
974[Bugfix for patch "Do not filter the rts from linked libraries..." (#2745)
975Simon Marlow <marlowsd@gmail.com>**20081107092925
976 The sense of the #ifdef was wrong
978[fix via-C compilation: import ghczmprim_GHCziBool_False_closure
979Simon Marlow <marlowsd@gmail.com>**20081107090432]
980[disable instance MonadPlus CoreM for GHC <= 6.6
981Simon Marlow <marlowsd@gmail.com>**20081107085250]
982[re-instate counting of sparks converted
983Simon Marlow <marlowsd@gmail.com>**20081106160810
984 lost in patch "Run sparks in batches"
986[fix ASSERT_SPARK_POOL_INVARIANTS(): top>bottom is valid
987Simon Marlow <marlowsd@gmail.com>**20081106155826]
988[pruneSparkQueue(): fix bug when top>bottom
989Simon Marlow <marlowsd@gmail.com>**20081106155648]
990[don't yield if the system is shutting down
991Simon Marlow <marlowsd@gmail.com>**20081106155356]
992[leave out ATTRIBUTE_ALIGNED on Windows, it gives a warning
993Simon Marlow <marlowsd@gmail.com>**20081106132105]
994[Cope with ThreadRelocated when traversing the blocked_queue
995Simon Marlow <marlowsd@gmail.com>**20081106114045
996 Fixes "invalid what_next field" in ioref001 on Windows, and perhaps others
998[Remove dead code.
999Thomas Schilling <nominolo@googlemail.com>**20081031162036]
1000[Run sparks in batches, instead of creating a new thread for each one
1001Simon Marlow <marlowsd@gmail.com>**20081106113639
1002 Signficantly reduces the overhead for par, which means that we can
1003 make use of paralellism at a much finer granularity.
1005[allocateInGen(): increase alloc_blocks (#2747)
1006Simon Marlow <marlowsd@gmail.com>**20081106113714]
1007[disable MonadPlus instance that doesn't compile with 6.6
1008Simon Marlow <marlowsd@gmail.com>**20081106100411]
1009[don't yield the Capability if blackholes_need_checking
1010Simon Marlow <marlowsd@gmail.com>**20081105154928]
1011[deadlock fix: reset the flag *after* checking the blackhole queue
1012Simon Marlow <marlowsd@gmail.com>**20081105150542]
1013[retreat the top/bottom fields of the spark pool in pruneSparkPool()
1014Simon Marlow <marlowsd@gmail.com>**20081105150359]
1015[fix the :help docs for :set stop (#2737)
1016Simon Marlow <marlowsd@gmail.com>**20081104092929]
1017[bugfix: don't ingore the return value from rts_evalIO()
1018Simon Marlow <marlowsd@gmail.com>**20081104142147]
1019[Document the new SPARKS statistic, and xref from the parallelism section
1020Simon Marlow <marlowsd@gmail.com>**20081024120236]
1021[Move the freeing of Capabilities later in the shutdown sequence
1022Simon Marlow <marlowsd@gmail.com>**20081024104301
1023 Fixes a bug whereby the Capability has been freed but other
1024 Capabilities are still trying to steal sparks from its pool.
1026[Pad Capabilities and Tasks to 64 bytes
1027Simon Marlow <marlowsd@gmail.com>**20081023080749
1028 This is just good practice to avoid placing two structures heavily
1029 accessed by different CPUs on the same cache line
1031[Fix desugaring of record update (fixes Trac #2735)
1033[Refuse to register packages with unversioned dependencies; trac #1837
1034Ian Lynagh <igloo@earth.li>**20081031181746]
1035[We now require GHC 6.6 to build the HEAD (and thus 6.12)
1036Ian Lynagh <igloo@earth.li>**20081031171506]
1037[:set prompt now understand Haskell String syntax; trace #2652
1038Ian Lynagh <igloo@earth.li>**20081031145227]
1039[Comments only
1041[Quickfix for warning.
1042Thomas Schilling <nominolo@googlemail.com>**20081031113125]
1043[Export typeclasses for accessing compiler results.
1044Thomas Schilling <nominolo@googlemail.com>**20081028182310
1046 MERGE TO 6.10.
1048[Minor refactoring.
1049Thomas Schilling <nominolo@googlemail.com>**20081028182202]
1050[Include record fields in tags.
1051Thomas Schilling <nominolo@googlemail.com>**20081028180538]
1052[Fix imports
1054[Improve error reporting for non-rigid GADT matches
1057 Following suggestions from users, this patch improves the error message
1058 when a GADT match needs a rigid type:
1060  tcfail172.hs:19:10:
1061      GADT pattern match in non-rigid context for `Nil'
1062 -      Solution: add a type signature
1063 +      Probable solution: add a type signature for `is_normal'
1064      In the pattern: Nil
1065      In the definition of `is_normal': is_normal Nil = True
1067 Now GHC tries to tell you what to give a type signature *for*.
1068 Thanks to Daniel Gorin and others for the suggestions.
1071[Add (a) CoreM monad, (b) new Annotations feature
1074 This patch, written by Max Bolingbroke,  does two things
1076 1.  It adds a new CoreM monad (defined in simplCore/CoreMonad),
1077     which is used as the top-level monad for all the Core-to-Core
1078     transformations (starting at SimplCore).  It supports
1079        * I/O (for debug printing)
1080        * Unique supply
1081        * Statistics gathering
1082        * Access to the HscEnv, RuleBase, Annotations, Module
1083     The patch therefore refactors the top "skin" of every Core-to-Core
1084     pass, but does not change their functionality.
1086 2.  It adds a completely new facility to GHC: Core "annotations".
1087     The idea is that you can say
1088        {#- ANN foo (Just "Hello") #-}
1089     which adds the annotation (Just "Hello") to the top level function
1090     foo.  These annotations can be looked up in any Core-to-Core pass,
1091     and are persisted into interface files.  (Hence a Core-to-Core pass
1092     can also query the annotations of imported things.)  Furthermore,
1093     a Core-to-Core pass can add new annotations (eg strictness info)
1094     of its own, which can be queried by importing modules.
1096 The design of the annotation system is somewhat in flux.  It's
1097 designed to work with the (upcoming) dynamic plug-ins mechanism,
1098 but is meanwhile independently useful.
1100 Do not merge to 6.10! 
1103[Fix Trac #2674: in TH reject empty case expressions and function definitions
1105[Change naming conventions for compiler-generated dictionaries and type functions
1108 Up to now, the data constructor dictionary for class C as been called
1109 ":DC". But there is no reason for the colon to be at the front; indeed
1110 it confuses the (simple-minded) pretty-printer for types.  So this
1111 patch changes it to be "D:C".  This makes Core a lot easier to read.
1112 Having a colon in the middle ensures that it can't clash with a user-written
1113 data type.
1115 Similarly I changed
1117   T:C     Data type corresponding a class dictionary (was :TC)
1118   D:C     Data constructor for class dictionary (was :DC)
1120   NTCo:T   Coercion mapping from a newtype T to its representation type
1121                (was :CoT)
1123   TFCo:R   Coercion mapping from a data family to its respresentation type R
1124                (was :CoFR)
1126   Rn:T     The n'th respresentation data type for a data type T
1127                (was :RnT)
1130 Do not merge to 6.10.
1132 HEADS-UP: you'll need to recompile libraries from scratch. 
1134 ROMAN: you could do the same for OccName.mkVectTyConOcc etc, if you wanted.
1138[Fix tcrun031: yet more tidying up in TcDeriv
1140[Add Outputable instance for CoercionI
1142[Fix Trac #2720: inlining and casts
1145 The issue here is what happens when we have
1147        (f |> co) x
1149 where f is itself marked INLINE.  We want callSiteInline to "see"
1150 the fact that the function is applied, and hence have some incentive
1151 to inline.  I've done this by extending CoreUnfold.CallCtxt with
1152 ValAppCtxt.  I think that should catch this case without messing up
1153 any of the others.
1156[Clarify documentatoin
1158[Update library version numbers in the release notes
1159Ian Lynagh <igloo@earth.li>**20081023144018]
1160[various updates to the release notes
1161Simon Marlow <marlowsd@gmail.com>**20081007151647]
1162[Add library release notes
1163Ian Lynagh <igloo@earth.li>**20080920155722]
1164[Add release notes for the compiler
1165Ian Lynagh <igloo@earth.li>**20080920114857]
1166[Doc fix
1167Ian Lynagh <igloo@earth.li>**20081028150534]
1168[Rename some variables in docs
1169Ian Lynagh <igloo@earth.li>**20081028150447]
1170[Fix typos
1171Ian Lynagh <igloo@earth.li>**20081028144655]
1172[Mostly-fix Trac #2595: updates for existentials
1175 Ganesh wanted to update records that involve existentials.  That
1176 seems reasonable to me, and this patch covers existentials, GADTs,
1177 and data type families.
1179 The restriction is that
1180   The types of the updated fields may mention only the
1181   universally-quantified type variables of the data constructor
1183 This doesn't allow everything in #2595 (it allows 'g' but not 'f' in
1184 the ticket), but it gets a lot closer.
1186 Lots of the new lines are comments!
1189[Fix Trac #2723: keep track of record field names in the renamer
1192 The idea here is that with -XNamedFieldPuns and -XRecordWildCards we don't
1193 want to report shadowing errors for
1194        let fld = <blah> in C { .. }
1195 But to suppress such shadowing errors, the renamer needs to know that
1196 'fld' *is* a record selector.  Hence the new NameSet in
1197 TcRnFypes.RecFieldEnv
1200[Remove dead code
1202[Fix Trac #2713: refactor and tidy up renaming of fixity decls
1205 In fixing #2713, this patch also eliminates two almost-unused
1206 functions from RnEnv (lookupBndr and lookupBndr_maybe).  The
1207 net lines of code is prety much unchanged, but more of them
1208 are comments!
1211[Fix Trac #2701: make deriving check better for unlifted args
1214 Getting the automatic deriving mechanism to work really smoothly
1215 is surprisingly hard.  I keep finding myself in TcDeriv!
1217 Anyway, this is a nice clean fix to Trac #2701.
1220[Use pdflatex rather than latex for building
1221Ian Lynagh <igloo@earth.li>**20081024112400
1222 The Windows builder is having problems running ps2pdf, so this works
1223 aroudn the problem.
1225[Remove an unmatched } in core.tex
1226Ian Lynagh <igloo@earth.li>**20081024111750]
1227[Add a usepackage{url}
1228Ian Lynagh <igloo@earth.li>**20081024111458]
1229[Update ANNOUNCE
1230Ian Lynagh <igloo@earth.li>**20081022164423]
1231[Fix a bug in the new scheduler
1232Simon Marlow <marlowsd@gmail.com>**20081023155017
1233 If the current thread blocks, we should yield the Capability
1234 immediately, because the thread and hence possibly the current Task
1235 are now owned by someone else.  This worked in the old scheduler, but
1236 we moved where the yield happens in the new scheduler which broke it.
1238[add an assertion
1239Simon Marlow <marlowsd@gmail.com>**20081023154551]
1240[fix a warning
1241Simon Marlow <marlowsd@gmail.com>**20081023082213]
1242[traverse the spark pools only once during GC rather than twice
1243Simon Marlow <marlowsd@gmail.com>**20081022115233]
1244[Refactoring and reorganisation of the scheduler
1245Simon Marlow <marlowsd@gmail.com>**20081022092744
1247 Change the way we look for work in the scheduler.  Previously,
1248 checking to see whether there was anything to do was a
1249 non-side-effecting operation, but this has changed now that we do
1250 work-stealing.  This lead to a refactoring of the inner loop of the
1251 scheduler.
1253 Also, lots of cleanup in the new work-stealing code, but no functional
1254 changes.
1256 One new statistic is added to the +RTS -s output:
1258   SPARKS: 1430 (2 converted, 1427 pruned)
1260 lets you know something about the use of `par` in the program.
1262[Work stealing for sparks
1265    Spark stealing support for PARALLEL_HASKELL and THREADED_RTS versions of the RTS.
1267   Spark pools are per capability, separately allocated and held in the Capability
1268   structure. The implementation uses Double-Ended Queues (deque) and cas-protected
1269   access.
1271   The write end of the queue (position bottom) can only be used with
1272   mutual exclusion, i.e. by exactly one caller at a time.
1273   Multiple readers can steal()/findSpark() from the read end
1274   (position top), and are synchronised without a lock, based on a cas
1275   of the top position. One reader wins, the others return NULL for a
1276   failure.
1278   Work stealing is called when Capabilities find no other work (inside yieldCapability),
1279   and tries all capabilities 0..n-1 twice, unless a theft succeeds.
1281   Inside schedulePushWork, all considered cap.s (those which were idle and could
1282   be grabbed) are woken up. Future versions should wake up capabilities immediately when
1283   putting a new spark in the local pool, from newSpark().
1285 Patch has been re-recorded due to conflicting bugfixes in the sparks.c, also fixing a
1286 (strange) conflict in the scheduler.
1289[include an elapsed time table
1290Simon Marlow <marlowsd@gmail.com>**20081023080648]
1291[generate a valid summary for older GHC versions too
1292Simon Marlow <marlowsd@gmail.com>**20081023080629]
1293[Fix Trac #2714 (a minor wibble)
1296 In boxy_match (which is a pure function used by preSubType) we can
1297 encounter TyVars not just TcTyVars; this patch takes account of that.
1300[Reject programs with superclass equalities for now
1301Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20081021131721
1302 - The current implementation of type families cannot properly deal
1303   with superclass equalities.  Instead of making a half-hearted attempt at
1304   supporting them, which mostly ends in cryptic error message, rejecting
1305   right away with an appropriate message.
1307   MERGE TO 6.10
1309[Fix doc syntax
1310Ian Lynagh <igloo@earth.li>**20081021183317]
1311[Don't put the README file in the Windows installer; fixes trac #2698
1312Ian Lynagh <igloo@earth.li>**20081021162543
1313 The README file talks about getting and building the sources, which
1314 doesn't make sense for the installer.
1316[Comments and parens only
1318[Do proper cloning in worker/wrapper splitting
1321 See Note [Freshen type variables] in WwLib.  We need to clone type
1322 variables when building a worker/wrapper split, else we simply get
1323 bogus code, admittedly in rather obscure situations.  I can't quite
1324 remember what program showed this up, unfortunately, but there
1325 definitely *was* one!  (You get a Lint error.)
1328[Don't float an expression wrapped in a cast
1331 There is no point in floating out an expression wrapped in a coercion;
1332 If we do we'll transform 
1333        lvl = e |> co [_$_]
1334 to     
1335        lvl' = e; lvl = lvl' |> co
1336 and then inline lvl.  Better just to float out the payload (e).
1339[Fix Trac #2668, and refactor TcDeriv
1342 TcDeriv deals with both standalone and ordinary 'deriving';
1343 and with both data types and 'newtype deriving'.  The result
1344 is really rather compilcated and ad hoc.  Ryan discovered
1345 #2668; this patch fixes that bug, and makes the internal interfces
1346 #more uniform.  Specifically, the business of knocking off
1347 type arguments from the instance type until it matches the kind of the
1348 class, is now done by derivTyData, not mkNewTypeEqn, because the
1349 latter is shared with standalone derriving, whree the trimmed
1350 type application is what the user wrote.
1353[Spelling error in comment
1355[White space only
1357[Comments to explain strict overlap checking for type family instances
1359[Allow type families to use GADT syntax (and be GADTs)
1362 We've always intended to allow you to use GADT syntax for
1363 data families:
1364        data instance T [a] where
1365          T1 :: a -> T [a]
1366 and indeed to allow data instances to *be* GADTs
1367        data intsance T [a] where
1368          T1 :: Int -> T [Int]
1369          T2 :: a -> b -> T [(a,b)]
1371 This patch fixes the renamer and type checker to allow this.
1374[Improve crash message from applyTys and applyTypeToArgs
1376[Wibble to ungrammatical error message
1378[Comments only: replace ":=:" by "~" (notation for equality predicates)
1380[FIX #2693
1381Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20081021120107
1382 - As long as the first reduceContext in tcSimplifyRestricted potentially
1383   performs improvement, we need to zonk again before the second reduceContext.
1384   It would be better to prevent the improvement in the first place, but given
1385   the current situation zonking is definitely the right thing to do.
1387   MERGE TO 6.10
1389[Restore the terminal attributes even if ghci does not exit normally.
1390Judah Jacobson <judah.jacobson@gmail.com>**20081020164109]
1391[FIX #2688
1392Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20081021044213
1393 - Change in TcSimplify.reduceContext:
1395      We do *not* go around for new extra_eqs.  Morally, we should,
1396      but we can't without risking non-termination (see #2688).  By
1397      not going around, we miss some legal programs mixing FDs and
1398      TFs, but we never claimed to support such programs in the
1399      current implementation anyway.
1401   MERGE TO 6.10
1403[Move documentation within 80 column boundary.
1404Thomas Schilling <nominolo@googlemail.com>**20081014134016]
1405[Improve haddock documentation for 'GHC.topSortModuleGraph'.
1406Thomas Schilling <nominolo@googlemail.com>**20081014133833]
1407[Improve haddock documentation for HsExpr module.
1408Thomas Schilling <nominolo@googlemail.com>**20081014133740]
1409[Improve Haddock-markup for HsDecls module.
1410Thomas Schilling <nominolo@googlemail.com>**20081014133556]
1411[Run Haddock with compacting GC and show RTS statistics.
1412Thomas Schilling <nominolo@googlemail.com>**20081020111410]
1413[FIX (partially) #2703: bug in stack overflow handling when inside block
1414Simon Marlow <marlowsd@gmail.com>**20081020121103
1415 As a result of a previous ticket (#767) we disabled the generation of
1416 StackOverflow exceptions when inside a Control.Exception.block, on the
1417 grounds that StackOverflow is like an asynchronous exception.  Instead
1418 we just increase the stack size.  However, the stack size calculation
1419 was wrong, and ended up not increasing the size of the stack, with the
1420 result that the runtime just kept re-allocating the stack and filling
1421 up memory.
1423[Re-export Located(..) and related functions
1424Simon Marlow <marlowsd@gmail.com>**20081020102422
1425 So that clients don't need to import SrcLoc
1427[whitespace fix
1428Simon Marlow <marlowsd@gmail.com>**20081020101241]
1429[FIX #2691: Manually reset the terminal to its initial settings; works around a bug in libedit.
1430Judah Jacobson <judah.jacobson@gmail.com>**20081016024838]
1431[Eliminate duplicate flags in the tab completion of ghci's :set command.
1432Judah Jacobson <judah.jacobson@gmail.com>**20081016015721]
1433[Add dph haddock docs to the doc index
1434Ian Lynagh <igloo@earth.li>**20081019133208]
1435[Clean the bootstrapping extensible-exceptions package
1436Ian Lynagh <igloo@earth.li>**20081017195942]
1437[Fix trac #2687
1438Ian Lynagh <igloo@earth.li>**20081015163412
1439 OtherPunctuation, ConnectorPunctuation and DashPunctuation are now
1440 treated as symbols, rather than merely graphic characters.
1442[Fix trac #2680; avoid quadratic behaviour from (++)
1443Ian Lynagh <igloo@earth.li>**20081015163235]
1444[Fix the build when the bootstrapping compiler has a newer Cabal than us
1445Ian Lynagh <igloo@earth.li>**20081015144023
1446 We need to forcibly use the in-tree Cabal, or we get version mismatch errors
1448[Fix the name of prologue.txt when making bindists
1449Ian Lynagh <igloo@earth.li>**20081014114714]
1450[Comments only
1452[Fix Trac #2497; two separate typos in Lexer.x
1455 The patch to switch on lexing of 'forall' inside a RULES pragma
1456 wasn't working.  This fixes it so that it does.
1459[Update manual: tidy up instances, say more about type families in instance decls
1461[Make tags work on Unices, too.
1462Thomas Schilling <nominolo@googlemail.com>**20081014211236]
1463[Undefine __PIC__ before defining it to work around "multiple definitions of __PIC__" warnings
1464Clemens Fruhwirth <clemens@endorphin.org>**20081014143206]
1465[Add "dyn" to GhcRTSWays when compiling --enable-shared
1466Clemens Fruhwirth <clemens@endorphin.org>**20081014125123]
1467[Fill out the ghc package's cabal file
1468Ian Lynagh <igloo@earth.li>**20081013235817]
1469[Patching libffi so it can be built as DLL
1470Clemens Fruhwirth <clemens@endorphin.org>**20081014103459
1472 libffi-dllize-3.0.6.patch should be pushed upstream
1474[Add 'etags' makefile target.
1475Thomas Schilling <nominolo@googlemail.com>**20081013170927
1477 This only works with stage2 since `ghctags' is built against stage1
1478 but not against the bootstrapping compiler.  Also note that all of GHC
1479 must typecheck for this target to succeed.  Perhaps we should not
1480 overwrite the old TAGS file by default then.
1482[Use cabal information to get GHC's flags to `ghctags'.
1483Thomas Schilling <nominolo@googlemail.com>**20081013170658
1485 By giving the dist-directory to ghctags we can get all the GHC API
1486 flags we need in order to load the required modules.  The flag name
1487 could perhaps be improved, but apart from that it seems to work well.
1489[Version bump for libffi to 3.0.6
1490Clemens Fruhwirth <clemens@endorphin.org>**20081014081300]
1491[Encode shared/static configuration into stamps to do the right thing when rebuilding
1492Clemens Fruhwirth <clemens@endorphin.org>**20081013221530]
1493[Add a link to the GHC API docs from the library haddock index
1494Ian Lynagh <igloo@earth.li>**20081013195943]
1495[Link to the GHC API documentation from the main doc page
1496Ian Lynagh <igloo@earth.li>**20081013200927]
1497[Whitespace only in docs/index.html
1498Ian Lynagh <igloo@earth.li>**20081013200625]
1499[Tweak gen_contents_index
1500Ian Lynagh <igloo@earth.li>**20081013192548
1501 It now works again after it has been installed, as well as while it is
1502 in a source tree.
1503 After it's been installed it filters out the ghc package, as that
1504 currently swamps everything else in the index.
1506[Build fixes for DLLized rts
1507Clemens Fruhwirth <clemens@endorphin.org>**20081013201608]
1508[Do not filter the rts from linked libraries in linkDynLib as Windows does not allow unresolved symbols
1509Clemens Fruhwirth <clemens@endorphin.org>**20081013201426]
1510[Add HsFFI.o to INSTALL_LIBS
1511Clemens Fruhwirth <clemens@endorphin.org>**20081013200945]
1512[Rename symbol macros to a consistant naming scheme
1513Clemens Fruhwirth <clemens@endorphin.org>**20081013162433]
1514[Fix #2685: two Bool arguments to tidyTypeEnv were the wrong way around
1515Simon Marlow <marlowsd@gmail.com>**20081013121339
1516 So -XTemplateHaskell was behaving like -fomit-interface-file-pragmas,
1517 and vice versa.
1519[Simplify the "is $bindir in $PATH" test
1520Ian Lynagh <igloo@earth.li>**20081011191008]
1521[Correct the "is $bindir in $PATH" test
1522Ian Lynagh <igloo@earth.li>**20081011191030
1523 We were testing neq instead of eq
1525[Fix a typo which was causing ghci to quit on commands errors
1526pepe <mnislaih@gmail.com>**20081011114720]
1527[Drop libm from the linker dependencies for libffi
1528Clemens Fruhwirth <clemens@endorphin.org>**20081011074524]
1529[Do not generate haddock documentation when running install-docs in libffi
1530Clemens Fruhwirth <clemens@endorphin.org>**20081010192318]
1531[When waking up thread blocked on TVars, wake oldest first (#2319)
1532Josef Svenningsson <josef.svenningsson@gmail.com>**20081010150322
1533 StgTVarWatchQueue contains the threads blocked on a TVar in order
1534 youngest first. The list has to be traversed backwards to unpark the threads
1535 oldest first.
1537 This improves the fairness when using STM in some situations.
1539[add readTVarIO :: TVar a -> IO a
1540Simon Marlow <marlowsd@gmail.com>**20081010131545]
1541[fix #2636: throw missing module errors as SourceErrors, not ErrMsg
1542Simon Marlow <marlowsd@gmail.com>**20081010131535]
1543[atomicModifyIORef: use a local cas() instead of the global lock
1544Simon Marlow <simonmar@microsoft.com>**20081008154702
1545 This should improve scaling when using atomicModifyIORef
1547[Delay building libffi until package.conf is created and fix bindist
1548Clemens Fruhwirth <clemens@endorphin.org>**20081010073106]
1549[Install a versioned ghc-pkg script; fixes trac #2662
1550Ian Lynagh <igloo@earth.li>**20081009164946]
1551[Fix bindist creation: Only the main RTS was being put in the bindists
1552Ian Lynagh <igloo@earth.li>**20081009163451]
1553[pushAtom: add missing case for MachNullAddr (#2589)
1554Simon Marlow <marlowsd@gmail.com>**20081009091118]
1555[undo incorrect assertion, and fix comments
1556Simon Marlow <marlowsd@gmail.com>**20081009085118]
1557[remove old GRAN/PARALLEL_HASKELL code
1558Simon Marlow <marlowsd@gmail.com>**20081009085051]
1559[FIX #2639
1560Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20081009132328
1562   MERGE TO 6.10
1564[Cover PredTy case in Type.tyFamInsts
1565Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20081009061435
1567   MERGE TO 6.10
1569[Drop ghcconfig.h/RtsConfig.h from libffi's package.conf.in
1570Clemens Fruhwirth <clemens@endorphin.org>**20081009071342]
1571[Don't use sed's -i flag as Solaris doesn't know it in libffi/Makefile
1572Clemens Fruhwirth <clemens@endorphin.org>**20081008234455]
1573[Don't use /dev/null trick to create empty object files in libffi/Makefile
1574Clemens Fruhwirth <clemens@endorphin.org>**20081008232902]
1575[Turn libffi into a Haskell package
1576Clemens Fruhwirth <clemens@endorphin.org>**20081008170443]
1577[Make 'getModSummary' deterministic.
1578Thomas Schilling <nominolo@googlemail.com>**20081008144032]
1579[Add accessors to 'HsModule' and haddockify it.
1580Thomas Schilling <nominolo@googlemail.com>**20081007235656]
1581[fix syntax errors in src-dist publish rules
1582Simon Marlow <marlowsd@gmail.com>**20081008103432]
1583[add comments and an ASSERT_LOCK_HELD()
1584Simon Marlow <marlowsd@gmail.com>**20081008112627]
1585[Fix #2663: we had a hard-wired capabilities[0]
1586Simon Marlow <marlowsd@gmail.com>**20081008112609
1587 For some unknown reason in schedulePostRunThread() we were always
1588 passing capabilities[0] rather than the current Capability to
1589 throwToSingleThreaded().  This caused all kinds of weird failures and
1590 crashes in STM code when running on multiple processors.
1592[Fix #1955 for heap profiles generated by +RTS -hT
1593Simon Marlow <marlowsd@gmail.com>**20081003150745]
1594[add a section id for +RTS -hT
1595Simon Marlow <marlowsd@gmail.com>**20081007151007]
1596[update documentation for PostfixOperators
1597Simon Marlow <marlowsd@gmail.com>**20081007150957]
1598[fix markup
1599Simon Marlow <marlowsd@gmail.com>**20081007150943]
1600[Fix bug in DPH docs
1601Roman Leshchinskiy <rl@cse.unsw.edu.au>**20081008101618]
1602[Add short DPH section to users guide
1603Roman Leshchinskiy <rl@cse.unsw.edu.au>**20081008064754
1605 MERGE TO 6.10
1607[Users Guide: added type family documentation
1608Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20081008061927
1610   MERGE TO 6.10
1612[Track changes to package dph
1613Roman Leshchinskiy <rl@cse.unsw.edu.au>**20081008032859
1615 MERGE TO 6.10
1617[Build a profiled GHC API by default if p is in GhcLibWays
1618Ian Lynagh <igloo@earth.li>**20081007152318]
1619[Check whether mk/validate.mk defines anything after validating
1620Ian Lynagh <igloo@earth.li>**20081007144855]
1621[Remove #define _BSD_SOURCE from Stg.h
1622Ian Lynagh <igloo@earth.li>**20081006101959
1623 It's no longer needed, as base no longer #includes it
1625[Make ghctags compile again.
1626Thomas Schilling <nominolo@googlemail.com>**20081007135705]
1627[Revert AutoLinkPackages change for dynamic libraries. Cabal handles that now.
1628Clemens Fruhwirth <clemens@endorphin.org>**20081007100417]
1629[Change suffix for dyn. linked executables from _real to .dyn
1630Clemens Fruhwirth <clemens@endorphin.org>**20081007100750]
1631[Add accessors to 'Target' fields and haddockify.
1632Thomas Schilling <nominolo@googlemail.com>**20081006222940
1634 MERGE TO 6.10
1636[Make 'gblock' and 'gunblock' part of 'ExceptionMonad'.  This way the
1637Thomas Schilling <nominolo@googlemail.com>**20081006222831
1638 default implementations of 'gbracket' and 'gfinally' just work.
1640 MERGE TO 6.10
1642[Add Word8 support to vectoriser
1643Roman Leshchinskiy <rl@cse.unsw.edu.au>**20081007004416
1645 MERGE TO 6.10
1647[Fix generating OS X installers: Set COMMAND_MODE=unix2003
1648Ian Lynagh <igloo@earth.li>**20081005222715
1649 If we don't specify COMMAND_MODE=unix2003 then xcodebuild defaults
1650 to setting it to legacy, which means that ar builds archives
1651 without a table of contents. That makes the build fail later on.
1653[We need to set datadir = $(libdir) in bindists
1654Ian Lynagh <igloo@earth.li>**20081005143307
1655 We already do in the normal Makefiles.
1657 This is because GHC needs package.conf and unlit to be in the same place
1658 (and things like ghc-pkg need to agree on where package.conf is, so we
1659 just set it globally).
1661[prep-bin-dist-mingw complains if it finds a bad version of windres
1662Ian Lynagh <igloo@earth.li>**20081004175351]
1663[removed Data.Generics.Basics, added Data.Data
1664'Jose Pedro Magalhaes <jpm@cs.uu.nl>'**20081002082808]
1665[Fix a build problem with GHC 6.4.2
1666Ian Lynagh <igloo@earth.li>**20081003195700]
1667[No AutoLinkPackages for dynamic library linking
1668Clemens Fruhwirth <clemens@endorphin.org>**20081003185304]
1669[use ghcError for error in command line
1670Clemens Fruhwirth <clemens@endorphin.org>**20081001125648]
1671[Fix warnings
1673[Always use extensible exceptions in ghc-pkg, rather than using ifdefs
1674Ian Lynagh <igloo@earth.li>**20081003161247]
1675[Use a proper exception for IOEnvFailure, not just a UserError
1676Ian Lynagh <igloo@earth.li>**20081003160129]
1677[Use an extensible-exceptions package when bootstrapping
1678Ian Lynagh <igloo@earth.li>**20081003140216
1679 Ifdefs for whether we had extensible exceptions or not were spreading
1680 through GHC's source, and things would only have got worse for the next
1681 2-3 years, so instead we now use an implementation of extensible
1682 exceptions built on top of the old exception type.
1684[Expunge ThFake, cure Trac #2632
1687 This patch fixes a dirty hack (the fake ThFake module), which in turn
1688 was causing Trac #2632.
1690 The new scheme is that the top-level binders in a TH [d| ... |] decl splice
1691 get Internal names.  That breaks a previous invariant that things like
1692 TyCons always have External names, but these TyCons are never long-lived;
1693 they live only long enough to typecheck the TH quotation; the result is
1694 discarded.  So it seems cool.
1696 Nevertheless -- Template Haskell folk: please test your code.  The testsuite
1697 is OK but it's conceivable that I've broken something in TH.  Let's see.
1700[Make a debug check more refined
1702[Add ASSERTs to all calls of nameModule
1705 nameModule fails on an InternalName.  These ASSERTS tell you
1706 which call failed.
1709[Let parseModule take a ModSummary like checkAndLoadModule did.
1710Thomas Schilling <nominolo@googlemail.com>**20081002230412
1712 To get the ModSummary for a ModuleName getModSummary can be used.
1713 It's not called find* or lookup* because it assumes that the module is
1714 in the module graph and throws an exception if it cannot be found.
1715 Overall, I'm not quite sure about the usefulness of this function
1716 since the user has no control about which filetype to grab (hs or
1717 hs-boot).
1719[Remove some out-of-date entries from .darcs-boring
1720Ian Lynagh <igloo@earth.li>**20081002201519]
1721[TFs: Allow repeated variables in left-hand sides of instances
1722Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20081002134539
1724   MERGE TO 6.10
1726[Clean up some comments
1727Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20081002074642
1729   MERGE TO 6.10
1731[Make the new binder-swap stuff in OccurAnal work right for GlobalIds
1734 See Note [Binder swap on GlobalId scrutinees].  I hadn't got this
1735 right before, so repeated cases on imported Ids weren't getting optimised.
1739[Minor refactoring only
1741[Comments only
1743[Zap dead-ness info appropriately in SpecConstr
1746 SpecConstr can make pattern binders come alive, so we must remember
1747 to zap their dead-variable annotation.  See extendCaseBndrs.
1749 (This was triggering a Core Lint failure in DPH.)
1752[Suppress invalid Core Lint complaint about lack of constructors
1754[add some more GC roots (fixes conc048, and possibly some others)
1755Simon Marlow <marlowsd@gmail.com>**20081001164427]
1756[Document +RTS -hT
1757Simon Marlow <marlowsd@gmail.com>**20081001163222
1758 We forgot to document this in GHC 6.8
1760[fix new-qualified-operators link
1761Simon Marlow <marlowsd@gmail.com>**20081001163105]
1762[Proper error message for unsupported pattern signatures
1763Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20081001144339
1764 - Pattern signatures must be identical to the type expected for the pattern;
1765   see Note [Pattern coercions]
1766 - We now signal an appropriate error if an equality coercion would be needed
1767   (instead of just generating Core that doesn't typecheck)
1769   MERGE TO 6.10
1771[Prevent excessive inlining with DPH
1772Roman Leshchinskiy <rl@cse.unsw.edu.au>**20081002012055
1774 This adds a new flag -finline-if-enough-args which disables inlining for
1775 partially applied functions. It is automatically set by -Odph. This is a
1776 temporary hack and should remain undocumented.
1778 MERGE TO 6.10
1781[On Windows, check that we have a good version of windres when configuring
1782Ian Lynagh <igloo@earth.li>**20081001171133]
1783[Call $(PERL) rather than perl when making the manpage
1784Ian Lynagh <igloo@earth.li>**20080930155054]
1785[don't install the installPackage program
1786Ian Lynagh <igloo@earth.li>**20080930145714]
1787[Fix #2637: conc032(threaded2) failure
1788Simon Marlow <marlowsd@gmail.com>**20081001135549
1789 There was a race condition whereby a thread doing throwTo could be
1790 blocked on a thread that had finished, and the GC would detect this
1791 as a deadlock rather than raising the pending exception.  We can't
1792 close the race, but we can make the right thing happen when the GC
1793 runs later.
1795[Remove outdated link to OGI webpage
1796Simon Marlow <marlowsd@gmail.com>**20080930150912]
1797[TFs: Fixed InstContextNorm (and simplification of IPs)
1798Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20081001131303
1800   MERGE TO 6.10
1802[TcSimplify.reduceImplication: clean up
1803Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20081001091315
1804 - This cleans up some of the mess in reduceImplication and documents the
1805   precondition on the form of wanted equalities properly.
1806 - I also made the back off test a bit smarter by allowing to back off in the
1807   presence of wanted equalities as long as none of them got solved in the
1808   attempt.  (That should save generating some superfluous bindings.)
1810   MERGE TO 6.10
1812[Make sure to zonk the kind of coercion variables
1813Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20081001053243
1815   MERGE TO 6.10
1817[Remover PROT_EXEC flag from mmap()
1818Simon Marlow <marlowsd@gmail.com>**20080930141842
1819 Needed for #738 fix
1821[Fix #2410: carefully generate unique names for CAF CCs
1822Simon Marlow <marlowsd@gmail.com>**20080930141812]
1823[fix #2594: we were erroneously applying masks, as the reporter suggested
1824Simon Marlow <marlowsd@gmail.com>**20080930115611
1825 My guess is that this is left over from when we represented Int8 and
1826 friends as zero-extended rather than sign-extended.  It's amazing it hasn't
1827 been noticed earlier.
1829[Unconditionalize definition of DYNAMIC_* so that libffi.so/.dll is removed even when BuildSharedLibs is reset to NO
1830Clemens Fruhwirth <clemens@endorphin.org>**20080930085449]
1831[Type families: need to instantiate flexible skolems before other flexibles
1832Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20080930053559
1834 MERGE TO 6.10
1836[Fix warnings
1837Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20080929142227]
1838[Type families: consider subst rules both way
1839Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20080929141040
1840 - applySubstFam, applySubstVarVar & applySubstVarFam need to return their
1841   second argument -to be put into the todo list- if the rule would be
1842   applicable if the equalities would be supplied in the opposite order.
1844 MERGE TO 6.10
1846[Clean up a bit and improve an error message
1848[Don't capture error calls in tryUser
1851 A previous patch slightly changed the semantics of tryUser.
1852 This patch restores the original behaviour
1853 (as expected in :print)
1856[tweaks to this section of the docs
1857Simon Marlow <simonmar@microsoft.com>**20080927141834]
1858[Add -outputdir flag (#2295)
1859Simon Marlow <simonmar@microsoft.com>**20080927141822]
1860[oops, forgot to add -XNewQualifiedOperators to the flags table
1861Simon Marlow <simonmar@microsoft.com>**20080923140449]
1862[Fix making OS X installers from source tarballs
1863Ian Lynagh <igloo@earth.li>**20080927150507
1864 I'm not sure why it works in the HEAD, but when making an installer
1865 from the 6.10.1 beta configure hangs when doing the CHECK_HIST_ERRORS
1866 test (during rl_initialize, I believe). Giving make /dev/null as stdin
1867 fixes it.
1869[Make the matching of the filename ghc.exe case insensitive, fixes bug #2603
1870Neil Mitchell <ndmitchell@gmail.com>**20080916160311]
1871[Fix #2411: missing case for CATCH_STM_FRAME in raiseAsync()
1872Simon Marlow <simonmar@microsoft.com>**20080926232806]
1873[Fix parsing of -ignore-package flag.
1874Bertram Felgenhauer <int-e@gmx.de>**20080925053820]
1875[Add an example of how to use SCCs to the user guide
1876Ian Lynagh <igloo@earth.li>**20080926203832]
1877[Add some description of the +RTS -t/-s/-S output
1878Ian Lynagh <igloo@earth.li>**20080926200203]
1879[Remove a redundant options pragma
1880Ian Lynagh <igloo@earth.li>**20080926152731]
1881[Split ShowVersion etc off into a different type to DoInteractive etc
1882Ian Lynagh <igloo@earth.li>**20080926140539
1883 This fixes trac #1348 (ghci --help gave ghc's help), and also tidies
1884 things up a bit. Things would be even tidier if the usage.txt files were
1885 put into a .hs file, so that ShowUsage wouldn't need to be able to find
1886 the libdir.
1888[Pass SRC_HC_OPTS to GHC when building GHC's Main.hs
1889Ian Lynagh <igloo@earth.li>**20080926131609]
1890[Improve runghc docs; fixes trac #2477
1891Ian Lynagh <igloo@earth.li>**20080926124425]
1892[Type families: fixes in flattening & finalisation
1893Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20080925225324
1894 * Finalisation didn't do the right thing for equalities x ~ y, where
1895   x was instantiated, but not zonked and y flexible (need to do y := x)
1896 * During flattening we weren't careful enough when turning wanteds
1897   intermediates into locals
1899 Both bugs showed up in a small example of SPJ:
1901   linear :: HasTrie (Basis v) => (Basis v, v)
1902   linear =  basisValue
1904   class HasTrie a where
1906   type family Basis u :: *
1908   basisValue :: (Basis v,v)
1909   basisValue = error "urk"
1912[Fix the behaviour of flags like --help and --version; fixes trac #2620
1913Ian Lynagh <igloo@earth.li>**20080925165618
1914 They should override other mode flags, not conflict with them
1916[Follow the integer package changes
1917Ian Lynagh <igloo@earth.li>**20080925133855]
1918[Type families: fix decomposition problem
1919Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20080925084139
1920 * Fixes the problem reported in
1921   <http://www.haskell.org/pipermail/haskell-cafe/2008-July/044911.html>
1923[Don't exit ghci if :info is called on an undefined identifier.
1924Judah Jacobson <judah.jacobson@gmail.com>**20080924212422]
1925[Fix maintainer-clean
1926Ian Lynagh <igloo@earth.li>**20080924230553]
1927[Use -f when making the runhaskell symlink
1928Ian Lynagh <igloo@earth.li>**20080924124255
1929 Otherwise installation fails if runhaskell already exists.
1931[Use -perm -100 rather than -perm /a+x when looking for executable files
1932Ian Lynagh <igloo@earth.li>**20080924124137
1933 /a+x doesn't work on some Solaris and OS X machines. Spotted by
1934 Christian Maeder.
1936[Use $(FIND) rather than find, as the former may be gfind
1937Ian Lynagh <igloo@earth.li>**20080924123323]
1938[Look for gfind as well as find
1939Ian Lynagh <igloo@earth.li>**20080924123046]
1940[In configure, don't call FPTOOLS_HADDOCK
1941Ian Lynagh <igloo@earth.li>**20080924122558
1942 We now use the in-tree haddock, so we don't need to look for it.
1944[Use $(TAR) rather than tar
1945Ian Lynagh <igloo@earth.li>**20080924121759
1946 Fixes problems on Solaris, where we need to use gtar instead of tar
1948[Add $(strip) to a Makefile test
1949Ian Lynagh <igloo@earth.li>**20080924120940
1950 Fixes making bindists on solaris. Patch from Christian Maeder.
1952[Use test -f rather than test -e, for portability (Solaris)
1953Ian Lynagh <igloo@earth.li>**20080924120840]
1954[Remove some dependencies on bootstrapping.conf from libraries/Makefile
1955Ian Lynagh <igloo@earth.li>**20080923205755
1956 They were causing some unnecessary work:
1957 Running make in a built tree reregisters the GHC package in
1958 bootstrapping.conf, and the build system thought that this updated
1959 timestamp meant that the configure stamps were out of date. This is
1960 particularly bad for the libraries with configure scripts, as those
1961 take a while to run.
1963 The bootstrapping.conf is built in an earlier phase ("make boot") so
1964 one shouldn't rely on the dependencies anyway.
1966[Bump the version number to 6.11
1967Ian Lynagh <igloo@earth.li>**20080923165613]
1968[Generalise type of 'defaultErrorHandler' so it can be used inside a Ghc session.
1969Thomas Schilling <nominolo@googlemail.com>**20080921085647]
1970[Make "sh -e boot" work
1971Ian Lynagh <igloo@earth.li>**20080921111508]
1972[Use -f rather than -e for portability
1973Ian Lynagh <igloo@earth.li>**20080921111436]
1974[Add some special cases for putting dph in bindists
1975Ian Lynagh <igloo@earth.li>**20080921000406]
1976[Escape a hash in the Makefile (it was breaking source dist creation)
1977Ian Lynagh <igloo@earth.li>**20080920232945]
1978[Disallow package flags in OPTIONS_GHC pragmas (#2499)
1979Simon Marlow <simonmar@microsoft.com>**20080923173904]
1980[#2566: emit a warning for 'ghc -c foo.bar'
1981Simon Marlow <simonmar@microsoft.com>**20080923144956
1983 $ ghc -c foo.bar
1984 Warning: the following files would be used as linker inputs, but linking is not being done: foo.bar
1985 ghc: no input files
1986 Usage: For basic information, try the `--help' option.
1988[Fix to new executable allocation code (fixed print002 etc.)
1989Simon Marlow <simonmar@microsoft.com>**20080922210915
1990 The problem here is caused by the fact that info tables include a
1991 relative offset to the string naming the constructor.  Executable
1992 memory now resides at two places in the address space: one for writing
1993 and one for executing.  In the info tables generated by GHCi, we were
1994 calculating the offset relative to the writable instance, rather than
1995 the executable instance, which meant that the GHCi debugger couldn't
1996 find the names for constructors it found in the heap.
1998[clean sm/Evac_thr.c and sm/Scav_thr.c
1999Simon Marlow <simonmar@microsoft.com>**20080922152827]
2000[add -XNewQualifiedOperators (Haskell' qualified operator syntax)
2001Simon Marlow <simonmar@microsoft.com>**20080922152340]
2002[Fix Trac #2597 (first bug): correct type checking for empty list
2005 The GHC front end never generates (ExplicitList []), but TH can.
2006 This patch makes the typechecker robust to such programs.
2009[Fix Trac #2597 (second bug): complain about an empty DoE block
2012 When converting an empty do-block from TH syntax to HsSyn,
2013 complain rather than crashing.
2016[Update dependencies
2017Ian Lynagh <igloo@earth.li>**20080920183534]
2018[Fix building with GHC 6.6
2019Ian Lynagh <igloo@earth.li>**20080920162918]
2020[Remove fno-method-sharing from the list of static flags
2021Ian Lynagh <igloo@earth.li>**20080920010635
2022 It is now a dynamic flag
2024[Tidy up the treatment of dead binders
2027 This patch does a lot of tidying up of the way that dead variables are
2028 handled in Core.  Just the sort of thing to do on an aeroplane.
2030 * The tricky "binder-swap" optimisation is moved from the Simplifier
2031   to the Occurrence Analyser.  See Note [Binder swap] in OccurAnal.
2032   This is really a nice change.  It should reduce the number of
2033   simplifier iteratoins (slightly perhaps).  And it means that
2034   we can be much less pessimistic about zapping occurrence info
2035   on binders in a case expression. 
2037 * For example:
2038        case x of y { (a,b) -> e }
2039   Previously, each time around, even if y,a,b were all dead, the
2040   Simplifier would pessimistically zap their OccInfo, so that we
2041   can't see they are dead any more.  As a result virtually no
2042   case expression ended up with dead binders.  This wasn't Bad
2043   in itself, but it always felt wrong.
2045 * I added a check to CoreLint to check that a dead binder really
2046   isn't used.  That showed up a couple of bugs in CSE. (Only in
2047   this sense -- they didn't really matter.)
2049 * I've changed the PprCore printer to print "_" for a dead variable.
2050   (Use -dppr-debug to see it again.)  This reduces clutter quite a
2051   bit, and of course it's much more useful with the above change.
2053 * Another benefit of the binder-swap change is that I could get rid of
2054   the Simplifier hack (working, but hacky) in which the InScopeSet was
2055   used to map a variable to a *different* variable. That allowed me
2056   to remove VarEnv.modifyInScopeSet, and to simplify lookupInScopeSet
2057   so that it doesn't look for a fixpoint.  This fixes no bugs, but
2058   is a useful cleanup.
2060 * Roman pointed out that Id.mkWildId is jolly dangerous, because
2061   of its fixed unique.  So I've
2063      - localied it to MkCore, where it is private (not exported)
2065      - renamed it to 'mkWildBinder' to stress that you should only
2066        use it at binding sites, unless you really know what you are
2067        doing
2069      - provided a function MkCore.mkWildCase that emodies the most
2070        common use of mkWildId, and use that elsewhere
2072    So things are much better
2074 * A knock-on change is that I found a common pattern of localising
2075   a potentially global Id, and made a function for it: Id.localiseId
2078[Gix the ghcii script
2079Ian Lynagh <igloo@earth.li>**20080919174651
2080 The ghc executable name doesn't have a version number on Windows, so
2081 don't put one in the script.
2083[Create runhaskell as well as runghc
2084Ian Lynagh <igloo@earth.li>**20080919153010]
2085[On Linux use libffi for allocating executable memory (fixed #738)
2086Simon Marlow <marlowsd@gmail.com>**20080919134602]
2087[Move the context_switch flag into the Capability
2088Simon Marlow <marlowsd@gmail.com>**20080919102601
2089 Fixes a long-standing bug that could in some cases cause sub-optimal
2090 scheduling behaviour.
2092[Fix building the extralibs tarball
2093Ian Lynagh <igloo@earth.li>**20080919133555
2094 We now need to dig the appropriate lines out of packages, rather than
2095 just catting libraries/extra-packages, in order to find out what the
2096 extralibs are.
2098[Install libffi when installing frmo a bindist
2099Ian Lynagh <igloo@earth.li>**20080919130332]
2100[Fix how we put libffi into bindists
2101Ian Lynagh <igloo@earth.li>**20080919125528]
2102[TAG 6.10 branch has been forked
2103Ian Lynagh <igloo@earth.li>**20080919123437]
2104[Don't require Parser.y in a source dist
2105Ian Lynagh <igloo@earth.li>**20080919115831]
2106[Add HpcParser.hs to source dists
2107Ian Lynagh <igloo@earth.li>**20080919115816]
2108[Fix the list of generated files that need to go into the source dists
2109Ian Lynagh <igloo@earth.li>**20080919112522]
2110[Improve documentation of overlapping instances
2112[Put generated files in source dists
2113Ian Lynagh <igloo@earth.li>**20080918194424
2114 We don't want to require that users building source dists have alex/happy
2116[Add libraries/syb to .darcs-boring
2117Ian Lynagh <igloo@earth.li>**20080918190116]
2118[Fix a couple of issues with :print
2121       - Ticket #1995: Unsoundness with newtypes
2122       - Ticket #2475: "Can't unify" error when stopped at an exception
2124       In addition this patch adds the following:
2126       - Unfailingness: RTTI cannot panic anymore.
2127         In case of failure, it recovers gracefully by returning the "I know nothing" type
2128       - A -ddump-rtti flag
2132pepe <mnislaih@gmail.com>**20080418172303]
2133[RichTokenStream support
2134Chaddai Fouche <chaddai.fouche@gmail.com>**20080918165256
2136 This patch adds support for raw token streams, that contain more
2137 information than normal token streams (they contains comments at
2138 least). The "lexTokenStream" function brings this support to the
2139 Lexer module. In addition to that, functions have been added to
2140 the GHC module to make easier to recover of the token stream of
2141 a module ("getTokenStream").
2143 Building on that, I added what could be called "rich token
2144 stream": token stream to which have been added the source string
2145 corresponding to each token, the function addSourceToToken takes
2146 a StringBuffer and a starting SrcLoc and a token stream and build
2147 this rich token stream. getRichTokenStream is a convenience
2148 function to get a module rich token stream. "showRichTokenStream"
2149 use the SrcLoc information in such a token stream to get a string
2150 similar to the original source (except unsignificant
2151 whitespaces). Thus "putStrLn . showRichTokenStream =<<
2152 getRichTokenStream s mod" should print a valid module source, the
2153 interesting part being to modify the token stream between the get
2154 and the show of course.
2156[When passing gcc -B, also tell it where the mingw include directory is
2157Ian Lynagh <igloo@earth.li>**20080918143312]
2158[Don't put the mingw directory in RTS's package.conf
2159Ian Lynagh <igloo@earth.li>**20080918143118]
2160[Be more forceful when cleaning in compiler/ and ghc/
2161Ian Lynagh <igloo@earth.li>**20080918134443
2162 Now that the Cabal file is generated by configure, it would be nice
2163 if clean worked even if the cabal file is missing. So now we just rm -rf
2164 the dist directory.
2166[Generate ghc.cabal and ghc-bin.cabal with configure
2167Ian Lynagh <igloo@earth.li>**20080918133636
2168 This allows us to put the proper version number into them
2170[Make the ghci scripts point to the versioned GHC program, not just "ghc"
2171Ian Lynagh <igloo@earth.li>**20080918122516]
2172[Fix Trac #1470: improve handling of recursive instances (needed for SYB3)
2175 This bug has been hanging around for a long time, as you'll see by its
2176 number. The fix implements a feature that is really needed by SYB3, to
2177 allow an instance to (rather indirectly) refer to itself.  The trickiness
2178 comes when solving the superclass constraints.
2180 The whoel issue is explained in Note [Recursive instances and superclases]
2181 in TcSimplify.
2183 In cracking this one I found I could remove the WantSCs argument to the
2184 ReduceMe flag, which is a worthwhile simplification.  Good!
2187[Comments only
2189[Replace ASSERT with WARN, and explain why
2192 The DPH library tripped an ASSERT.  The code is actually OK, but it's
2193 badly-optimised so I changed it to WARN.  The issue here is explained
2194 in ClosureInfo, Note [Unsafe coerce complications].
2197[Add a missing "prime" (env' --> env'') thereby fixing a tripping WARN.  Hurrah!
2199[Fix nasty infelicity: do not short-cut empty substitution in the simplifier
2202 I was perplexed about why an arity-related WARN was tripping. It took
2203 me _day_ (sigh) to find that it was because SimplEnv.substExpr was taking
2204 a short cut when the substitution was empty, thereby not subsituting for
2205 Ids in scope, which must be done (CoreSubst Note [Extending the Subst]).
2207 The fix is a matter of deleting the "optimisation".  Same with
2208 CoreSubst.substSpec, although I don't know if that actually caused a
2209 probem.
2212[Avoid arity reduction when doing eta-reduce
2215 We like things with high arity, so when doing eta reduction
2216 it's probably a good idea to avoid reducing arity.
2219[Add extra WARN test
2222 This warning tests that the arity of a function does not decrease.
2223 And that it's at least as great as the strictness signature.
2225 Failing this test isn't a disater, but it's distinctly odd and
2226 usually indicates that not enough information is getting propagated
2227 around, and hence you may get more simplifier iterations.
2230[Comments only
2232[Re-adjust interaction between -ddump flags and force-recompilation
2235 If you say -ddump-xx we effectively add -fforce-recomp, so that you
2236 see your dump output.  But this works badly in --make mode, because
2237 you get the ddump output for every module, which is probably not what
2238 you want.  This patch forces recompilation with -ddump-X only in one-shot
2239 mode. 
2241 Of course, this only affects people using -ddump options.
2244[Add Outputable GhcMode instance
2246[Improve error reporting for 'deriving' (Trac #2604)
2248[Add link to GADT paper re rigid types
2250[Fix MacOS X build: don't believe __GNUC_GNU_INLINE__ on MacOS X
2251Simon Marlow <marlowsd@gmail.com>**20080918112856]
2252[require Alex version 2.1.0
2253Simon Marlow <marlowsd@gmail.com>**20080918112812
2254 Having 2.0.1 causes some unicode tests to fail
2256[Type families: fixes in the new solver
2257Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20080918100934]
2258[ext-core library: Parser fixes; make it build with the HEAD
2259Tim Chevalier <chevalier@alum.wellesley.edu>**20080918090349
2261 In the ext-core parser I guess I never tested:
2262 * existential type variable bindings in case alts
2263 * empty data declarations
2265 That'll learn me!
2267[Wibble ghc-pkg imports to fix building on Windows
2268Ian Lynagh <igloo@earth.li>**20080917210813]
2269[ghc-pkg needs to make package.conf with sensible permissions
2270Ian Lynagh <igloo@earth.li>**20080917192155
2271 It was calling openTempFile which uses a 600 permissions mask.
2273[Change 'loadWithCompiler' callback argument to just print warnings.
2274Thomas Schilling <nominolo@googlemail.com>**20080917102925
2275 Rename function accordingly.
2277 The callback wasn't very flexible to begin with.  There's pretty much
2278 no way around to calling 'compile' inside that callback since
2279 'upsweep' depends on certain side effects of compile.  It therefore
2280 makes more sense to restrict the callback to its intended use only,
2281 namely to log warnings and errors.
2283[Fix: GhcStage2HcOpts were being added to stage 3 too
2284Simon Marlow <marlowsd@gmail.com>**20080917085917]
2285[Type families: unify with family apps in checking mode
2286Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20080917062548]
2287[Type families: bug fixes
2288Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20080916151254]
2289[Keep sysnonyms folded in equalities if possible
2290Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20080916075700]
2291[Type families: apply flattening coercions in the right order
2292Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20080916055136]
2293[TcTyFuns: tidy warning
2294Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20080915031423]
2295[Signature for Inst.isValidWantedEqInst
2296Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20080915030118]
2297[Remember if RewriteInst is swapped & bug fixes
2298Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20080914163639]
2299[Type families: fixed all non-termination in the testsuite
2300Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20080914120638]
2301[Type families: completed the new equality solver
2302Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20080913133631
2303 - Implements normalisation of class constraints containing synonym family
2304   applications or skolems refined by local equalities.
2305 - Clean up of TcSimplify.reduceContext by using the new equality solver.
2306 - Removed all the now unused code of the old algorithm.
2307 - This completes the implementation of the new algorithm, but it is largely
2308   untested => many regressions.
2310[Use the new -optdep flag replacements when building with >= GHC 6.9
2311Ian Lynagh <igloo@earth.li>**20080916220057
2312 Fix building the HEAD with itself
2314[Use "exec" when running ghc in the wrapper
2315Ian Lynagh <igloo@earth.li>**20080915100217]
2316[Add "#!/bin/sh" to runghc.wrapper
2317Ian Lynagh <igloo@earth.li>**20080914153507]
2318[Add a "#!/bin/sh" to ghc.wrapper
2319Ian Lynagh <igloo@earth.li>**20080914153344]
2320[Fixing directory creation to not create "" directories inside hpc report (harmless but needless)
2322[Fix Trac #2052 Allowing hpc to understand hsc files.
2324[Fix Trac #2311: creates subdirs for package coverage information
2326[FIX #2469: sort out our static/extern inline story
2327Simon Marlow <marlowsd@gmail.com>**20080916132222
2328 gcc has changed the meaning of "extern inline" when certain flags are
2329 on (e.g. --std=gnu99), and this broke our use of it in the header
2330 files.
2332[Fix a warning
2333Simon Marlow <marlowsd@gmail.com>**20080916130922]
2334[Stop using mremap() to allocate space for trampolines
2335Simon Marlow <marlowsd@gmail.com>**20080915145924
2337 This was causing problems because sometimes mremap() moved the memory
2338 we had allocated from the low 2Gb to above the 2Gb boundary, causing
2339 some linkages to fail.  There's no MAP_32BIT flag to mremap().
2341 So now we just use mmap(MAP_ANON|MAP_32BIT) to allocated space for the
2342 trampolines.  People without MAP_32BIT (eg. *BSD) will still have to
2343 do something else here, such as allocating memory from a fixed
2344 address; so I've made it slightly easier for those guys, but there's
2345 still work to do (#2063).
2347 One solution (that Simon PJ is advocating) is to turn on -fPIC by
2348 default on x86-64.  This is a good solution as it removes the need for
2349 MAP_32BIT, but doesn't work with -fvia-C, so probably this is for
2350 later.
2352[add $(GhcStage[123]HcOpts)
2353Simon Marlow <marlowsd@gmail.com>**20080912155549]
2354[Improve handling of -fdph-* flags
2355Roman Leshchinskiy <rl@cse.unsw.edu.au>**20080916034746]
2356[Add -fdph-this
2357Roman Leshchinskiy <rl@cse.unsw.edu.au>**20080916033710]
2358[Remove last traces of package ndp
2359Roman Leshchinskiy <rl@cse.unsw.edu.au>**20080916033428]
2360[Clean up vectorisation error messages
2361Roman Leshchinskiy <rl@cse.unsw.edu.au>**20080916013236]
2362[Fix vectoriser bug
2363Roman Leshchinskiy <rl@cse.unsw.edu.au>**20080915042823
2365 We were using mkWildId in situations where it cause disastrous shadowing
2367[Track changes to dph
2368Roman Leshchinskiy <rl@cse.unsw.edu.au>**20080912114028]
2369[Change desugaring of PArr literals
2370Roman Leshchinskiy <rl@cse.unsw.edu.au>**20080912015609]
2371[Expose the dph packages automatically if -dph-* is set
2372Roman Leshchinskiy <rl@cse.unsw.edu.au>**20080912004403]
2373[Don't panic on non-vectorisable expressions
2374Roman Leshchinskiy <rl@cse.unsw.edu.au>**20080911054333]
2375[-Odph implies -fno-spec-constr-count
2376Roman Leshchinskiy <rl@cse.unsw.edu.au>**20080910045339]
2377[Improve warning for SpecConstr
2379[White space only
2381[Minor refactoring to get rid of Type.splitNewTyConApp
2383[Refactor the desugaring of RULE lhss a bit
2386 This is just a tidy-up.  Previously we were calling occurAnalyse
2387 twice on each LHS which was silly and a bit unclean too. 
2389 This patch should have no overall effect, though.
2392[Do not use the Static Arg Transformation by default with -O2
2395 Max has some more heuristics to add, and is meanwhile worried
2396 that having SAT on by default will make some highly-tuned array
2397 programs worse.  So it's off by default. 
2399 Use -fstatic-argument-transformation to switch it on.
2402[Comments, and a couple of asserts, only
2404[Fix Trac #2587: take account of type lets
2407 GHC allows a non-recursive let for type varaibles
2408        let a = TYPE ty in ...
2409 But the free-variable finder had not caught up with this
2410 fact. This patch catches up.
2413[Don't try to float type-lets
2416 A type let shouldn't really occur in SetLevels, but if it does,
2417 this patch makes sure it is left alone.
2420[add refs and fix a bug (noted by Peter Gammie) in docs of arrow notation
2421Ross Paterson <ross@soi.city.ac.uk>**20080915104757]
2422[Generalise type of 'withExtendedLinkEnv'.
2423Thomas Schilling <nominolo@googlemail.com>**20080915085738]
2424[Use 'GhcMonad' in ghci/InteractiveUI.
2425Thomas Schilling <nominolo@googlemail.com>**20080915085633]
2426[Use 'GhcMonad' in ghci/GhciTags.
2427Thomas Schilling <nominolo@googlemail.com>**20080915084922]
2428[Use 'GhcMonad' in ghci/Debugger.
2429Thomas Schilling <nominolo@googlemail.com>**20080915084738]
2430[Use 'GhcMonad' in ghci/GhciMonad.
2431Thomas Schilling <nominolo@googlemail.com>**20080915084646]
2432[Use 'GhcMonad' in ghc/Main.
2433Thomas Schilling <nominolo@googlemail.com>**20080914232957]
2434[Require PatternSignatures for bootstrapping compiler.
2435Thomas Schilling <nominolo@googlemail.com>**20080914232642]
2436[Use 'GhcMonad' in InteractiveEval.
2437Thomas Schilling <nominolo@googlemail.com>**20080914232454]
2438[Use 'GhcMonad' in GHC and split up checkModule into phases.
2439Thomas Schilling <nominolo@googlemail.com>**20080914232044
2441 I'm not sure I covered all the ways of throwing errors in the code.
2442 Some functions throw ProgramErrors, some error messages.  It's still
2443 quite a mess, but we're getting closer.  The missing cases are mostly
2444 errors that cannot be fixed by the API client either or are a result
2445 of wrong usage, so are in any case fatal.
2447 One function, 'getModuleInfo', still returns a 'Maybe', but the
2448 documentation suggests it should always succeed.  So I may change that
2449 soon.
2451 The spit-up of of 'checkModule' has pros and cons.  The various forms
2452 of 'checkModule*' now become:
2454  checkAndLoadModule ms False ~~>
2455     loadModule =<< typecheckModule =<< parseModule (ms_mod_name ms)
2457  checkAndLoadModule ms True ~~>
2458    loadModule =<< desugarModule =<< typecheckModule =<< parseModule (ms_mod_name ms)
2460  checkModule mn False ~~>
2461    typecheckModule =<< parseModule mn
2463  checkModule mn True ~~>
2464    desugarModule =<< typecheckModule =<< parseModule mn
2466 The old APIs cannot easily be provided, since the result type would be
2467 different depending on the second argument.  However, a more
2468 convenient API can be modelled on top of these four functions
2469 ({parse,typecheck,desugar,load}Module).
2471[Use 'GhcMonad' in DriverPipeline.  Also haddockify a bit while we're at it.
2472Thomas Schilling <nominolo@googlemail.com>**20080914220628]
2473[Use 'GhcMonad' in HscMain.
2474Thomas Schilling <nominolo@googlemail.com>**20080914213655]
2475[Use 'GhcMonad' in DriverMkDepend.
2476Thomas Schilling <nominolo@googlemail.com>**20080914212113]
2477[Haddockify DynFlags (partial).
2478Thomas Schilling <nominolo@googlemail.com>**20080914211718]
2479[Haddockify 'IE'.
2480Thomas Schilling <nominolo@googlemail.com>**20080914210016]
2481[Provide accessors for 'ImportDecl'.
2482Thomas Schilling <nominolo@googlemail.com>**20080914205811]
2483[Start haddockifying 'HsBindLR'.
2484Thomas Schilling <nominolo@googlemail.com>**20080914205629]
2485[Document 'parseStaticFlags'.
2486Thomas Schilling <nominolo@googlemail.com>**20080914205316]
2487[Introduce 'GhcMonad' class and two default implementations 'Ghc' and 'GhcT'.
2488Thomas Schilling <nominolo@googlemail.com>**20080914204930
2490 This monad will be required by most public API calls.
2492[Give the "Failing due to -Werror" message a name.
2493Thomas Schilling <nominolo@googlemail.com>**20080914173904]
2494[Make typechecker top-level functions also return messages instead of
2495Thomas Schilling <nominolo@googlemail.com>**20080914173228
2496 printing them.
2498[Reflect changes of desugarer error reporting in VectMonad.
2499Thomas Schilling <nominolo@googlemail.com>**20080914172711]
2500[Generalise 'handleGhcException' to work with any 'ExceptionMonad'.
2501Thomas Schilling <nominolo@googlemail.com>**20080914172404]
2502[Introduce an 'ExceptionMonad' class.
2503Thomas Schilling <nominolo@googlemail.com>**20080914172154
2505 This monad provides variants of 'catch', 'bracket', and 'finally', so
2506 exceptions can be handled in monads that wrap IO.  The latter two
2507 methods need to be part of the class definition, because GHC uses
2508 'block' and 'unblock' which are used in the definition of those two
2509 methods for the IO monad.  A perhaps better class interface would
2510 consist of 'gcatch', 'gblock', and 'gunblock' and let the latter two
2511 default to 'id' like is done for non-GHC implementations of 'bracket'
2512 and 'finally'.
2514[Provide default MonadIO instance for IO.
2515Thomas Schilling <nominolo@googlemail.com>**20080914164245]
2516[Return instead of print warnings and errors in desugarer.
2517Thomas Schilling <nominolo@googlemail.com>**20080914163641]
2518[Return parser errors and warnings instead of dying.
2519Thomas Schilling <nominolo@googlemail.com>**20080914162644]
2520[Add aliases for bags of warnings and errors.
2521Thomas Schilling <nominolo@googlemail.com>**20080914160337]
2522[Slightly more helpful panic message in DynFlags
2523Tim Chevalier <chevalier@alum.wellesley.edu>**20080915080650]
2524[Comments only: ".core" => ".hcr"
2525Tim Chevalier <chevalier@alum.wellesley.edu>**20080914203645]
2526[We need to tell ghc-pkg to --force if we've only built a profiling library
2527Ian Lynagh <igloo@earth.li>**20080913153142]
2528[If we're profiling GHC, don't bother building the GHC package the vanilla way
2529Ian Lynagh <igloo@earth.li>**20080913144820]
2530[Remove the duplicate show rule in libraries/Makefile
2531Ian Lynagh <igloo@earth.li>**20080913144413]
2532[Move the "show" target from target.mk to boilerplate.mk
2533Ian Lynagh <igloo@earth.li>**20080913141312
2534 target.mk isn't included everywhere, but show is always handy
2536[Change how we detect if we are using the bootstrapping compiler or not
2537Ian Lynagh <igloo@earth.li>**20080913104658
2538 I think looking for $(GHC_COMPILER_DIR_ABS) was failing on the Windows
2539 buildbot due to different path separators. Now we just look for
2540 "inplace".
2542[wibble the distrib Makefile
2543Ian Lynagh <igloo@earth.li>**20080912135932
2544 We now need to install driver after ghc
2546[Reinstate the driver/ghc directory, to create a versioned GHC program
2547Ian Lynagh <igloo@earth.li>**20080912113619
2548 e.g. $(bindir)/ghc-6.9.20080911
2550[If USE_NEW_MKDEPEND_FLAGS is YES then don't use the deprecated -optdep flags
2551Ian Lynagh <igloo@earth.li>**20080912110316]
2552[Use --force-local when calling tar in bindisttest/
2553Ian Lynagh <igloo@earth.li>**20080912012855
2554 Otherwise it thinks that c:/foo is a remote file
2556[Fix #2586, bug in THUNK_SELECTORs (again)
2557Simon Marlow <marlowsd@gmail.com>**20080912130404
2558 This time, we had forgetten the write barrier in one place.
2560[TAG 2008-09-12 2
2561Ian Lynagh <igloo@earth.li>**20080912132848]
2562Patch bundle hash: