Ticket #2910: 2910.patch

File 2910.patch, 133.0 KB (added by int-e, 9 years ago)

Fix another race between throwTo and finishing threads - version 2, which makes sure that holding the TSO lock actually prevents the race.

1Tue Jan  6 22:18:36 CET 2009  Bertram Felgenhauer <int-e@gmx.de>
2  * Fix a race between throwTo and awakenBlockedExceptionQueue.
3  This hopefully fixes #2910 completely.
6New patches:
8[Fix a race between throwTo and awakenBlockedExceptionQueue.
9Bertram Felgenhauer <int-e@gmx.de>**20090106211836
10 This hopefully fixes #2910 completely.
11] {
12hunk ./rts/RaiseAsync.c 267
13                target = target->_link;
14                goto retry;
15            }
16+           // The thread may also have finished in the meantime.
17+           if (target->what_next == ThreadKilled
18+               || target->what_next == ThreadComplete) {
19+               unlockTSO(target);
20+               return THROWTO_SUCCESS;
21+           }
22            blockedThrowTo(cap,source,target);
23            *out = target;
24            return THROWTO_BLOCKED;
25hunk ./rts/RaiseAsync.c 555
26 void
27 awakenBlockedExceptionQueue (Capability *cap, StgTSO *tso)
28 {
29+    lockTSO(tso);
30+    // Taking the tso lock before the following check assures that we
31+    // wait for any throwTo that may just be adding a new thread to the
32+    // queue. This is essential, because we may not get another chance
33+    // to wake up that thread.
34     if (tso->blocked_exceptions != END_TSO_QUEUE) {
35hunk ./rts/RaiseAsync.c 561
36-       lockTSO(tso);
37        awakenBlockedQueue(cap, tso->blocked_exceptions);
38        tso->blocked_exceptions = END_TSO_QUEUE;
39hunk ./rts/RaiseAsync.c 563
40-       unlockTSO(tso);
41     }
42hunk ./rts/RaiseAsync.c 564
43+    unlockTSO(tso);
44 }   
46 static void
51[wake up the blocked exception queue on ThreadFinished; fixes #2910
52Simon Marlow <marlowsd@gmail.com>**20090106153254]
53[bump GHC's max stack size to 512M
54Simon Marlow <marlowsd@gmail.com>**20081219112211
55 To accomodate compiling very long static lists (#2002)
57[ext-core: change .cabal file so we can build with either GHC 6.8 or 6.10
58Tim Chevalier <chevalier@alum.wellesley.edu>**20090105192757]
59[ext-core: fix some Prep bugs
60Tim Chevalier <chevalier@alum.wellesley.edu>**20090105192734]
61[ext-core: use shorter names when combining modules
62Tim Chevalier <chevalier@alum.wellesley.edu>**20090105192645]
63[ext-core: twiddle primitive things
64Tim Chevalier <chevalier@alum.wellesley.edu>**20090105192434]
65[Don't pin a register for gc_thread on SPARC.
68 This makes the build work again.
70[Require HsColour by default
71Ian Lynagh <igloo@earth.li>**20090104214647
72 This should stop us ending up without HsColour'ed sources on some
73 platforms.
75 We also now tell Cabal where to find HsColour, rather than it finding
76 it itself.
78[Fix build
79Ian Lynagh <igloo@earth.li>**20090104211810]
80[Add GHCi completions to :set and :show
81Ori Avtalion <ori@avtalion.name>**20081209194210]
82[Fix sync-all: Check for --complete/partial before --<anything>
83Ian Lynagh <igloo@earth.li>**20090104184652
84 Patch from megacz in trac #2857
86[Remove time from extralibs at request of maintainer
87Ian Lynagh <igloo@earth.li>**20090104115509]
88[validate fix: InteractiveEval no longer needs to import  IdInfo
89Ian Lynagh <igloo@earth.li>**20090103154754]
90[Fix validate: strs is no longer used in IfaceSyn
91Ian Lynagh <igloo@earth.li>**20090103153624]
92[Remove trailing whitespace from HaddockUtils
93Ian Lynagh <igloo@earth.li>**20081229191727]
94[Fix warnings in HaddockUtils
95Ian Lynagh <igloo@earth.li>**20081229191657]
96[Remove dead code from HaddockUtils
97Ian Lynagh <igloo@earth.li>**20081229191430]
98[Make record selectors into ordinary functions
101 This biggish patch addresses Trac #2670.  The main effect is to make
102 record selectors into ordinary functions, whose unfoldings appear in
103 interface files, in contrast to their previous existence as magic
104 "implicit Ids".  This means that the usual machinery of optimisation,
105 analysis, and inlining applies to them, which was failing before when
106 the selector was somewhat complicated.  (Which it can be when
107 strictness annotations, unboxing annotations, and GADTs are involved.)
109 The change involves the following points
111 * Changes in Var.lhs to the representation of Var.  Now a LocalId can
112   have an IdDetails as well as a GlobalId.  In particular, the
113   information that an Id is a record selector is kept in the
114   IdDetails.  While compiling the current module, the record selector
115   *must* be a LocalId, so that it participates properly in compilation
116   (free variables etc).
118   This led me to change the (hidden) representation of Var, so that there
119   is now only one constructor for Id, not two.
121 * The IdDetails is persisted into interface files, so that an
122   importing module can see which Ids are records selectors.
124 * In TcTyClDecls, we generate the record-selector bindings in renamed,
125   but not typechecked form.  In this way, we can get the typechecker
126   to add all the types and so on, which is jolly helpful especially
127   when GADTs or type families are involved.  Just like derived
128   instance declarations.
130   This is the big new chunk of 180 lines of code (much of which is
131   commentary).  A call to the same function, mkAuxBinds, is needed in
132   TcInstDcls for associated types.
134 * The typechecker therefore has to pin the correct IdDetails on to
135   the record selector, when it typechecks it.  There was a neat way
136   to do this, by adding a new sort of signature to HsBinds.Sig, namely
137   IdSig.  This contains an Id (with the correct Name, Type, and IdDetails);
138   the type checker uses it as the binder for the final binding.  This
139   worked out rather easily.
141 * Record selectors are no longer "implicit ids", which entails changes to
142      IfaceSyn.ifaceDeclSubBndrs
143      HscTypes.implicitTyThings
144      TidyPgm.getImplicitBinds
145   (These three functions must agree.)
147 * MkId.mkRecordSelectorId is deleted entirely, some 300+ lines (incl
148   comments) of very error prone code.  Happy days.
150 * A TyCon no longer contains the list of record selectors:
151   algTcSelIds is gone
153 The renamer is unaffected, including the way that import and export of
154 record selectors is handled.
156 Other small things
158 * IfaceSyn.ifaceDeclSubBndrs had a fragile test for whether a data
159   constructor had a wrapper.  I've replaced that with an explicit flag
160   in the interface file. More robust I hope.
162 * I renamed isIdVar to isId, which touched a few otherwise-unrelated files.
166[Fix Trac #2721: reject newtype deriving if the class has associated types
168[-XImpredicativeTypes implies -XRankNTypes, and improve error msg in TcMType
171 If you are going for impredicative types you almost certainly want RankN
172 too. The change to TcMType improves the error when you say
173      T (forall a. blah)
174 where T is a type synonym.  This doesn't necessarily need impredicativity,
175 if you have LiberalTypeSynonyms.
178[Fix Trac #2856: make deriving work for type families
181 Darn, but TcDeriv is complicated, when type families get in on
182 the act!  This patch makes GeneralisedNewtypeDeriving work
183 properly for type families.  I think.
185 In order to do so, I found that GeneralisedNewtypeDeriving can
186 work for recursive newtypes too -- and since families are conservatively
187 marked recursive, that's a crucial part of the fix, and useful too.
188 See Note [Recursive newtypes] in TcDeriv.
191[White space and spelling in comments
193[Remove -XImpredicativeTypes from -fglasgow-exts
196 See Trac #2846: impredicative types are far from stable, so
197 -fglasgow-exts should not imply them.  Maybe we should merge
198 this into 6.10?
201[Improve error reporting for 'deriving'
204 a) Improve the extra suggested fix when there's a "no instance"
205    error in a deriving clause.
207 b) Improve error location recording in tcInstDecl2
209 Many of the changes in tcInstDecl2 are simple reformatting.
213[Improve error message in deriving (fix Trac #2851)
215[Avoid nasty name clash with associated data types (fixes Trac #2888)
218 The main bug was in TcHsType; see Note [Avoid name clashes for
219 associated data types].  However I did a bit of re-factoring while
220 I was abouut it.
222 I'm still a but unhappy with the use of TyCon.setTyConArgPoss; it'd
223 be better to construct the TyCon correctly in the first place.  But
224 that means passing an extra parameter to tcTyDecl1... maybe we should
225 do this.
229[Refactor RnEnv to fix Trac #2901
232 This tidy-up fixes Trac #2901, and eliminates 20 lines of code.
233 Mainly this is done by making a version of lookupGlobalOccRn that
234 returns (Maybe Name); this replaces lookupSrcOccRn but does more.
237[Add quotes to error message
239[Tidy up treatment of big lambda (fixes Trac #2898)
242 There was a leftover big lambda in the CorePrep'd code, which confused
243 the bytecode generator.  Actually big lambdas are harmless.  This patch
244 refactors ByteCodeGen so that it systemantically used 'bcView' to eliminate
245 junk.  I did a little clean up in CorePrep too.
247 See comments in Trac #2898.
250[Fix warnings in ByteCodeAsm
251Ian Lynagh <igloo@earth.li>**20081229174726]
252[Fix warnings in ByteCodeInstr
253Ian Lynagh <igloo@earth.li>**20081229173331]
254[Fix warnings in Rules
255Ian Lynagh <igloo@earth.li>**20081229171832]
256[Fix warnings in StgCmmForeign
257Ian Lynagh <igloo@earth.li>**20081229165957]
258[Fix warnings in CgCallConv
259Ian Lynagh <igloo@earth.li>**20081229165402]
260[Fix warnings in SMRep
261Ian Lynagh <igloo@earth.li>**20081229164959]
262[Fix warnings in ClosureInfo
263Ian Lynagh <igloo@earth.li>**20081229164618]
264[Fix warnings in CgTicky
265Ian Lynagh <igloo@earth.li>**20081229153416]
266[Fix warnings in CgCon
267Ian Lynagh <igloo@earth.li>**20081229151733]
268[Fix warnings in WorkWrap
269Ian Lynagh <igloo@earth.li>**20081229150406]
270[Fix warnings in NCGMonad
271Ian Lynagh <igloo@earth.li>**20081229145627]
272[Fix warnings in CmmInfo
273Ian Lynagh <igloo@earth.li>**20081229145307]
274[Fix warnings in CmmCPSGen
275Ian Lynagh <igloo@earth.li>**20081229145119]
276[Fix warnings in CmmProcPoint
277Ian Lynagh <igloo@earth.li>**20081229144214]
278[Fix warnings in CmmCallConv
279Ian Lynagh <igloo@earth.li>**20081229141924]
280[Fix warnings in CmmLive
281Ian Lynagh <igloo@earth.li>**20081229141035]
282[Fix warnings in CmmCPS
283Ian Lynagh <igloo@earth.li>**20081229133158]
284[Fix warnings in CmmUtils
285Ian Lynagh <igloo@earth.li>**20081229132637]
286[Comment out dead function breakProc
287Ian Lynagh <igloo@earth.li>**20081229115647]
288[Fix warnings in CmmBrokenBlock
289Ian Lynagh <igloo@earth.li>**20081229115527]
290[Comments only.  Haddockify parts of TcRnTypes.
291Thomas Schilling <nominolo@googlemail.com>**20081211154657]
292[Comments only.  Fix typo.
293Thomas Schilling <nominolo@googlemail.com>**20081211153104]
294[Include PprTyThings in tags file.
295Thomas Schilling <nominolo@googlemail.com>**20081211153005]
296[Use DynFlags to work out if we are doing ticky ticky profiling
297Ian Lynagh <igloo@earth.li>**20081218161928
298 We used to use StaticFlags
300[Fix warnings in CgExpr
301Ian Lynagh <igloo@earth.li>**20081217201152]
302[Fix warnings in CgBindery
303Ian Lynagh <igloo@earth.li>**20081217194607]
304[Fix warnings in CgStackery
305Ian Lynagh <igloo@earth.li>**20081217191713]
306[Fix warnings in CgCase
307Ian Lynagh <igloo@earth.li>**20081217190848]
308[Remove some dead code from CgCase
309Ian Lynagh <igloo@earth.li>**20081217184755]
310[Fix warnings in StgCmmProf
311Ian Lynagh <igloo@earth.li>**20081217182236]
312[Fix warnings in CgProf
313Ian Lynagh <igloo@earth.li>**20081217181711]
314[Fix warnings in CgInfoTbls
315Ian Lynagh <igloo@earth.li>**20081217180144]
316[Remove dead function srtLabelAndLength from CgInfoTbls
317Ian Lynagh <igloo@earth.li>**20081217180044]
318[Fix warnings in CgHeapery
319Ian Lynagh <igloo@earth.li>**20081217175726]
320[Fix warnings in CgTailCall
321Ian Lynagh <igloo@earth.li>**20081217175040]
322[Remove a little dead code from CgTailCall
323Ian Lynagh <igloo@earth.li>**20081217174947]
324[Fix warnings in CodeGen
325Ian Lynagh <igloo@earth.li>**20081217165904]
326[Fix warnings in StgCmmTicky
327Ian Lynagh <igloo@earth.li>**20081217165433]
328[Remove dead code from CgUtils
329Ian Lynagh <igloo@earth.li>**20081217163920]
330[Fix warnings in CgPrimOp
331Ian Lynagh <igloo@earth.li>**20081217163912]
332[Fix warnings in CgMonad
333Ian Lynagh <igloo@earth.li>**20081217163903]
334[Fix warnings in CgClosure
335Ian Lynagh <igloo@earth.li>**20081217163850]
336[Fix warnings in CgForeignCall
337Ian Lynagh <igloo@earth.li>**20081215222515]
338[Remove some redundant code
339Ian Lynagh <igloo@earth.li>**20081215194047
340 We were looking at opt_DoTickyProfiling, and if it was set claling ifTicky
341 which looks at opt_DoTickyProfiling itself.
343[Fix warnings in CgLetNoEscape
344Ian Lynagh <igloo@earth.li>**20081215173752]
345[Workaround for #2262, from Barney Stratford
346Simon Marlow <marlowsd@gmail.com>**20081216124706
347 See http://www.haskell.org/pipermail/glasgow-haskell-users/2008-December/016333.html
349[UNDO: Add -fpass-case-bndr-to-join-points
350Simon Marlow <marlowsd@gmail.com>**20081216114235
352 rolling back:
354 Fri Dec  5 10:51:59 GMT 2008  simonpj@microsoft.com
355   * Add -fpass-case-bndr-to-join-points
357   See Note [Passing the case binder to join points] in Simplify.lhs
358   The default now is *not* to pass the case binder.  There are some
359   nofib results with the above note; the effect is almost always
360   negligible.
362   I don't expect this flag to be used by users (hence no docs). It's just
363   there to let me try the performance effects of switching on and off.
366     M ./compiler/main/StaticFlagParser.hs +1
367     M ./compiler/main/StaticFlags.hs +4
368     M ./compiler/simplCore/Simplify.lhs -14 +73
370[Rollback INLINE patches
371Simon Marlow <marlowsd@gmail.com>**20081216103556
373 rolling back:
375 Fri Dec  5 16:54:00 GMT 2008  simonpj@microsoft.com
376   * Completely new treatment of INLINE pragmas (big patch)
378   This is a major patch, which changes the way INLINE pragmas work.
379   Although lots of files are touched, the net is only +21 lines of
380   code -- and I bet that most of those are comments!
382   HEADS UP: interface file format has changed, so you'll need to
383   recompile everything.
385   There is not much effect on overall performance for nofib,
386   probably because those programs don't make heavy use of INLINE pragmas.
388           Program           Size    Allocs   Runtime   Elapsed
389               Min         -11.3%     -6.9%     -9.2%     -8.2%
390               Max          -0.1%     +4.6%     +7.5%     +8.9%
391    Geometric Mean          -2.2%     -0.2%     -1.0%     -0.8%
393   (The +4.6% for on allocs is cichelli; see other patch relating to
394   -fpass-case-bndr-to-join-points.)
396   The old INLINE system
397   ~~~~~~~~~~~~~~~~~~~~~
398   The old system worked like this. A function with an INLINE pragam
399   got a right-hand side which looked like
400        f = __inline_me__ (\xy. e)
401   The __inline_me__ part was an InlineNote, and was treated specially
402   in various ways.  Notably, the simplifier didn't inline inside an
403   __inline_me__ note. 
405   As a result, the code for f itself was pretty crappy. That matters
406   if you say (map f xs), because then you execute the code for f,
407   rather than inlining a copy at the call site.
409   The new story: InlineRules
410   ~~~~~~~~~~~~~~~~~~~~~~~~~~
411   The new system removes the InlineMe Note altogether.  Instead there
412   is a new constructor InlineRule in CoreSyn.Unfolding.  This is a
413   bit like a RULE, in that it remembers the template to be inlined inside
414   the InlineRule.  No simplification or inlining is done on an InlineRule,
415   just like RULEs. 
417   An Id can have an InlineRule *or* a CoreUnfolding (since these are two
418   constructors from Unfolding). The simplifier treats them differently:
420     - An InlineRule is has the substitution applied (like RULES) but
421       is otherwise left undisturbed.
423     - A CoreUnfolding is updated with the new RHS of the definition,
424       on each iteration of the simplifier.
426   An InlineRule fires regardless of size, but *only* when the function
427   is applied to enough arguments.  The "arity" of the rule is specified
428   (by the programmer) as the number of args on the LHS of the "=".  So
429   it makes a difference whether you say
430        {-# INLINE f #-}
431        f x = \y -> e     or     f x y = e
432   This is one of the big new features that InlineRule gives us, and it
433   is one that Roman really wanted.
435   In contrast, a CoreUnfolding can fire when it is applied to fewer
436   args than than the function has lambdas, provided the result is small
437   enough.
440   Consequential stuff
441   ~~~~~~~~~~~~~~~~~~~
442   * A 'wrapper' no longer has a WrapperInfo in the IdInfo.  Instead,
443     the InlineRule has a field identifying wrappers.
445   * Of course, IfaceSyn and interface serialisation changes appropriately.
447   * Making implication constraints inline nicely was a bit fiddly. In
448     the end I added a var_inline field to HsBInd.VarBind, which is why
449     this patch affects the type checker slightly
451   * I made some changes to the way in which eta expansion happens in
452     CorePrep, mainly to ensure that *arguments* that become let-bound
453     are also eta-expanded.  I'm still not too happy with the clarity
454     and robustness fo the result.
456   * We now complain if the programmer gives an INLINE pragma for
457     a recursive function (prevsiously we just ignored it).  Reason for
458     change: we don't want an InlineRule on a LoopBreaker, because then
459     we'd have to check for loop-breaker-hood at occurrence sites (which
460     isn't currenlty done).  Some tests need changing as a result.
462   This patch has been in my tree for quite a while, so there are
463   probably some other minor changes.
466     M ./compiler/basicTypes/Id.lhs -11
467     M ./compiler/basicTypes/IdInfo.lhs -82
468     M ./compiler/basicTypes/MkId.lhs -2 +2
469     M ./compiler/coreSyn/CoreFVs.lhs -2 +25
470     M ./compiler/coreSyn/CoreLint.lhs -5 +1
471     M ./compiler/coreSyn/CorePrep.lhs -59 +53
472     M ./compiler/coreSyn/CoreSubst.lhs -22 +31
473     M ./compiler/coreSyn/CoreSyn.lhs -66 +92
474     M ./compiler/coreSyn/CoreUnfold.lhs -112 +112
475     M ./compiler/coreSyn/CoreUtils.lhs -185 +184
476     M ./compiler/coreSyn/MkExternalCore.lhs -1
477     M ./compiler/coreSyn/PprCore.lhs -4 +40
478     M ./compiler/deSugar/DsBinds.lhs -70 +118
479     M ./compiler/deSugar/DsForeign.lhs -2 +4
480     M ./compiler/deSugar/DsMeta.hs -4 +3
481     M ./compiler/hsSyn/HsBinds.lhs -3 +3
482     M ./compiler/hsSyn/HsUtils.lhs -2 +7
483     M ./compiler/iface/BinIface.hs -11 +25
484     M ./compiler/iface/IfaceSyn.lhs -13 +21
485     M ./compiler/iface/MkIface.lhs -24 +19
486     M ./compiler/iface/TcIface.lhs -29 +23
487     M ./compiler/main/TidyPgm.lhs -55 +49
488     M ./compiler/parser/ParserCore.y -5 +6
489     M ./compiler/simplCore/CSE.lhs -2 +1
490     M ./compiler/simplCore/FloatIn.lhs -6 +1
491     M ./compiler/simplCore/FloatOut.lhs -23
492     M ./compiler/simplCore/OccurAnal.lhs -36 +5
493     M ./compiler/simplCore/SetLevels.lhs -59 +54
494     M ./compiler/simplCore/SimplCore.lhs -48 +52
495     M ./compiler/simplCore/SimplEnv.lhs -26 +22
496     M ./compiler/simplCore/SimplUtils.lhs -28 +4
497     M ./compiler/simplCore/Simplify.lhs -91 +109
498     M ./compiler/specialise/Specialise.lhs -15 +18
499     M ./compiler/stranal/WorkWrap.lhs -14 +11
500     M ./compiler/stranal/WwLib.lhs -2 +2
501     M ./compiler/typecheck/Inst.lhs -1 +3
502     M ./compiler/typecheck/TcBinds.lhs -17 +27
503     M ./compiler/typecheck/TcClassDcl.lhs -1 +2
504     M ./compiler/typecheck/TcExpr.lhs -4 +6
505     M ./compiler/typecheck/TcForeign.lhs -1 +1
506     M ./compiler/typecheck/TcGenDeriv.lhs -14 +13
507     M ./compiler/typecheck/TcHsSyn.lhs -3 +2
508     M ./compiler/typecheck/TcInstDcls.lhs -5 +4
509     M ./compiler/typecheck/TcRnDriver.lhs -2 +11
510     M ./compiler/typecheck/TcSimplify.lhs -10 +17
511     M ./compiler/vectorise/VectType.hs +7
513 Mon Dec  8 12:43:10 GMT 2008  simonpj@microsoft.com
514   * White space only
516     M ./compiler/simplCore/Simplify.lhs -2
518 Mon Dec  8 12:48:40 GMT 2008  simonpj@microsoft.com
519   * Move simpleOptExpr from CoreUnfold to CoreSubst
521     M ./compiler/coreSyn/CoreSubst.lhs -1 +87
522     M ./compiler/coreSyn/CoreUnfold.lhs -72 +1
524 Mon Dec  8 17:30:18 GMT 2008  simonpj@microsoft.com
525   * Use CoreSubst.simpleOptExpr in place of the ad-hoc simpleSubst (reduces code too)
527     M ./compiler/deSugar/DsBinds.lhs -50 +16
529 Tue Dec  9 17:03:02 GMT 2008  simonpj@microsoft.com
530   * Fix Trac #2861: bogus eta expansion
532   Urghlhl!  I "tided up" the treatment of the "state hack" in CoreUtils, but
533   missed an unexpected interaction with the way that a bottoming function
534   simply swallows excess arguments.  There's a long
535        Note [State hack and bottoming functions]
536   to explain (which accounts for most of the new lines of code).
539     M ./compiler/coreSyn/CoreUtils.lhs -16 +53
541 Mon Dec 15 10:02:21 GMT 2008  Simon Marlow <marlowsd@gmail.com>
542   * Revert CorePrep part of "Completely new treatment of INLINE pragmas..."
544   The original patch said:
546   * I made some changes to the way in which eta expansion happens in
547     CorePrep, mainly to ensure that *arguments* that become let-bound
548     are also eta-expanded.  I'm still not too happy with the clarity
549     and robustness fo the result.
551   Unfortunately this change apparently broke some invariants that were
552   relied on elsewhere, and in particular lead to panics when compiling
553   with profiling on.
555   Will re-investigate in the new year.
557     M ./compiler/coreSyn/CorePrep.lhs -53 +58
558     M ./configure.ac -1 +1
560 Mon Dec 15 12:28:51 GMT 2008  Simon Marlow <marlowsd@gmail.com>
561   * revert accidental change to configure.ac
563     M ./configure.ac -1 +1
565[revert accidental change to configure.ac
566Simon Marlow <marlowsd@gmail.com>**20081215122851]
567[Revert CorePrep part of "Completely new treatment of INLINE pragmas..."
568Simon Marlow <marlowsd@gmail.com>**20081215100221
570 The original patch said:
572 * I made some changes to the way in which eta expansion happens in
573   CorePrep, mainly to ensure that *arguments* that become let-bound
574   are also eta-expanded.  I'm still not too happy with the clarity
575   and robustness fo the result.
577 Unfortunately this change apparently broke some invariants that were
578 relied on elsewhere, and in particular lead to panics when compiling
579 with profiling on.
581 Will re-investigate in the new year.
583[wake up other Capabilities even when there is only one spark (see #2868)
584Simon Marlow <marlowsd@gmail.com>**20081210164644]
585[Document new GC options -q1 and -qg<n>
586Simon Marlow <marlowsd@gmail.com>**20081210164557]
587[SysTools no longer needs -fno-cse
588Ian Lynagh <igloo@earth.li>**20081211182327]
589[Make the lists of files and directories to be cleaned-up non-global
590Ian Lynagh <igloo@earth.li>**20081211180739
591 They still need to be stored in IORefs, as the exception handler needs
592 to know what they all are.
594[The default cleanup handler should /always/ delete the temp files
595Ian Lynagh <igloo@earth.li>**20081211170006
596 Not only if there has been an exception. It worked for GHC anyway,
597 as it was getting an ExitSuccess exception, but GHC API clients
598 shouldn't be required to do that.
600[Fix user guide typesetting
601Ian Lynagh <igloo@earth.li>**20081210165434]
602[FIX #1364: added support for C finalizers that run as soon as the value is not longer reachable.
603Simon Marlow <marlowsd@gmail.com>**20081210150425
605 Patch originally by Ivan Tomac <tomac@pacific.net.au>, amended by
606 Simon Marlow:
608   - mkWeakFinalizer# commoned up with mkWeakFinalizerEnv#
609   - GC parameters to ALLOC_PRIM fixed
611[On FreeBSD, try MAP_FIXED if ordinary mmap() fails to give us suitable memory
612Simon Marlow <marlowsd@gmail.com>**20081210115751
613 This appears to be necessary on FreeBSD.  It might be necessary on
614 other OSs too, but I'm being cautious because using MAP_FIXED can lead
615 to crashes by overwriting existing mappings, and we have no (easy) way
616 to prevent that.
618[Document hs_init() infelicity (#2863)
619Simon Marlow <marlowsd@gmail.com>**20081209164322]
620[Improve documentation for data family instances (cf Trac #1968)
623 The HEAD allows GADT syntax for data/newtype family instances.
624 (GHC 6.10 does not seem to.)
627[Make some profiling flags dynamic
628Ian Lynagh <igloo@earth.li>**20081209230157
629 In particular:
630     -fauto-sccs-on-all-toplevs          -auto-all   -no-auto-all
631     -fauto-sccs-on-exported-toplevs     -auto       -no-auto
632     -fauto-sccs-on-individual-cafs      -caf-all    -no-caf-all
634[Fix warnings in StgCmmGran
635Ian Lynagh <igloo@earth.li>**20081209222413]
636[Add OPTIONS_CATCH,DERIVE,YHC to those that GHC knows about; trac #2847
637Ian Lynagh <igloo@earth.li>**20081209191724]
638[Fix warnings in CgHpc
639Ian Lynagh <igloo@earth.li>**20081209191713]
640[Parse pragma names better; trac #2847
641Ian Lynagh <igloo@earth.li>**20081209190318
642 We require that pragma names are not followed by pragma character,
643 defined as
644     isAlphaNum c || c == '_'
646[Fix warnings in CgParallel
647Ian Lynagh <igloo@earth.li>**20081209184402]
648[Fix warnings in StgCmmHpc
649Ian Lynagh <igloo@earth.li>**20081209184004]
650[Remove an unnecessary -w flag
651Ian Lynagh <igloo@earth.li>**20081209183812]
652[Fix Trac #2861: bogus eta expansion
655 Urghlhl!  I "tided up" the treatment of the "state hack" in CoreUtils, but
656 missed an unexpected interaction with the way that a bottoming function
657 simply swallows excess arguments.  There's a long
658      Note [State hack and bottoming functions]
659 to explain (which accounts for most of the new lines of code).
662[Fix #2592: do an orderly shutdown when the heap is exhausted
663Simon Marlow <marlowsd@gmail.com>**20081209105919
664 Really we should be raising an exception in this case, but that's
665 tricky (see comments).  At least now we shut down the runtime
666 correctly rather than just exiting.
668[Fix #2848: avoid overflow during time calculation
669Simon Marlow <marlowsd@gmail.com>**20081209105600]
670[Fix #2838: we should narrow a CmmInt before converting to ImmInteger
671Simon Marlow <marlowsd@gmail.com>**20081209105515]
672[fix an assertion failure in prof/threaded/debug mode
673Simon Marlow <marlowsd@gmail.com>**20081204101201]
674[Inject implicit bindings after CoreTidy, not before Simplify
677 Originally I inject the "implicit bindings" (record selectors, class
678 method selectors, data con wrappers...) after CoreTidy.  However, in a
679 misguided attempt to fix Trac #2070, I moved the injection point to
680 before the Simplifier, so that record selectors would be optimised by
681 the simplifier.
683 This was misguided because record selectors (indeed all implicit bindings)
684 are GlobalIds, whose IdInfo is meant to be frozen.  But the Simplifier,
685 and other Core-to-Core optimisations, merrily change the IdInfo.  That
686 ultimately made Trac #2844 happen, where a record selector got arity 2,
687 but the GlobalId (which importing scopes re-construct from the class decl
688 rather than reading from the interface file) has arity 1.
690 So this patch moves the injection back to CoreTidy. Happily #2070 should
691 still be OK because we now use CoreSubst.simpleOptExpr on the unfoldings
692 for implict things, which gets rid of the most gratuitous infelicities.
694 Still, there's a strong case for stoppping record selectors from being
695 GlobalIds, and treating them much more like dict-funs.  I'm thinking
696 about that.  Meanwhile, #2844 is ok now.
699[Add assertion for arity match (checks Trac #2844)
702 The exported arity of a function must match the arity for the
703 STG function.  Trac #2844 was a pretty obscure manifestation of
704 the failure of this invariant. This patch doesn't cure the bug;
705 rather it adds an assertion to CoreToStg to check the invariant
706 so we should get an earlier and less obscure warning if this
707 fails in future.
710[Use CoreSubst.simpleOptExpr in place of the ad-hoc simpleSubst (reduces code too)
712[Move simpleOptExpr from CoreUnfold to CoreSubst
714[White space only
716[Comments only
718[Completely new treatment of INLINE pragmas (big patch)
721 This is a major patch, which changes the way INLINE pragmas work.
722 Although lots of files are touched, the net is only +21 lines of
723 code -- and I bet that most of those are comments!
725 HEADS UP: interface file format has changed, so you'll need to
726 recompile everything.
728 There is not much effect on overall performance for nofib,
729 probably because those programs don't make heavy use of INLINE pragmas.
731         Program           Size    Allocs   Runtime   Elapsed
732             Min         -11.3%     -6.9%     -9.2%     -8.2%
733             Max          -0.1%     +4.6%     +7.5%     +8.9%
734  Geometric Mean          -2.2%     -0.2%     -1.0%     -0.8%
736 (The +4.6% for on allocs is cichelli; see other patch relating to
737 -fpass-case-bndr-to-join-points.)
739 The old INLINE system
740 ~~~~~~~~~~~~~~~~~~~~~
741 The old system worked like this. A function with an INLINE pragam
742 got a right-hand side which looked like
743      f = __inline_me__ (\xy. e)
744 The __inline_me__ part was an InlineNote, and was treated specially
745 in various ways.  Notably, the simplifier didn't inline inside an
746 __inline_me__ note. 
748 As a result, the code for f itself was pretty crappy. That matters
749 if you say (map f xs), because then you execute the code for f,
750 rather than inlining a copy at the call site.
752 The new story: InlineRules
753 ~~~~~~~~~~~~~~~~~~~~~~~~~~
754 The new system removes the InlineMe Note altogether.  Instead there
755 is a new constructor InlineRule in CoreSyn.Unfolding.  This is a
756 bit like a RULE, in that it remembers the template to be inlined inside
757 the InlineRule.  No simplification or inlining is done on an InlineRule,
758 just like RULEs. 
760 An Id can have an InlineRule *or* a CoreUnfolding (since these are two
761 constructors from Unfolding). The simplifier treats them differently:
763   - An InlineRule is has the substitution applied (like RULES) but
764     is otherwise left undisturbed.
766   - A CoreUnfolding is updated with the new RHS of the definition,
767     on each iteration of the simplifier.
769 An InlineRule fires regardless of size, but *only* when the function
770 is applied to enough arguments.  The "arity" of the rule is specified
771 (by the programmer) as the number of args on the LHS of the "=".  So
772 it makes a difference whether you say
773        {-# INLINE f #-}
774        f x = \y -> e     or     f x y = e
775 This is one of the big new features that InlineRule gives us, and it
776 is one that Roman really wanted.
778 In contrast, a CoreUnfolding can fire when it is applied to fewer
779 args than than the function has lambdas, provided the result is small
780 enough.
783 Consequential stuff
784 ~~~~~~~~~~~~~~~~~~~
785 * A 'wrapper' no longer has a WrapperInfo in the IdInfo.  Instead,
786   the InlineRule has a field identifying wrappers.
788 * Of course, IfaceSyn and interface serialisation changes appropriately.
790 * Making implication constraints inline nicely was a bit fiddly. In
791   the end I added a var_inline field to HsBInd.VarBind, which is why
792   this patch affects the type checker slightly
794 * I made some changes to the way in which eta expansion happens in
795   CorePrep, mainly to ensure that *arguments* that become let-bound
796   are also eta-expanded.  I'm still not too happy with the clarity
797   and robustness fo the result.
799 * We now complain if the programmer gives an INLINE pragma for
800   a recursive function (prevsiously we just ignored it).  Reason for
801   change: we don't want an InlineRule on a LoopBreaker, because then
802   we'd have to check for loop-breaker-hood at occurrence sites (which
803   isn't currenlty done).  Some tests need changing as a result.
805 This patch has been in my tree for quite a while, so there are
806 probably some other minor changes.
809[Add -fpass-case-bndr-to-join-points
812 See Note [Passing the case binder to join points] in Simplify.lhs
813 The default now is *not* to pass the case binder.  There are some
814 nofib results with the above note; the effect is almost always
815 negligible.
817 I don't expect this flag to be used by users (hence no docs). It's just
818 there to let me try the performance effects of switching on and off.
821[Add static flag -fsimple-list-literals
824 The new static flag -fsimple-list-literals makes ExplicitList literals
825 be desugared in the straightforward way, rather than using 'build' as
826 now.  See SLPJ comments with Note [Desugaring explicit lists].
828 I don't expect this flag to be used by users (hence no docs). It's just
829 there to let me try the performance effects of switching on and off.
832[Comments only in OccurAnal
834[Comments only
836[Layout only
838[Comments only (Note [Entering error thunks])
840[Make CoreToStg a little more robust to eta expansion
842[Add no-op case for addIdSpecialisations (very minor optimisation)
844[Trim redundant import
846[Make CoreTidy retain deadness info (better -ddump-simpl)
849 GHC now retains more robust information about dead variables; but
850 CoreTidy was throwing it away.  This patch makes CoreTidy retain it,
851 which gives better output for -ddump-simpl.
853 New opportunity: shrink interface files by using wildcards for dead variables.
857[Remove INLINE pragmas on recursive functions
860 INLINE pragmas on recursive functions are ignored; and this
861 is checked in my upcoming patch for inlinings.
864[Comments only (on Activation)
866[We need to tell cabal-bin which version of Cabal to use
867Ian Lynagh <igloo@earth.li>**20081203123208
868 Otherwise, if the bootstrapping compiler has a newer version, we get
869 a mismatch between the version used to compile ghc-prim's Setup.hs and
870 the version that installPackage uses.
872[Document 'loadModule'.
873Thomas Schilling <nominolo@googlemail.com>**20081202154800]
874[Add 'needsTemplateHaskell' utility function and document why one might
875Thomas Schilling <nominolo@googlemail.com>**20081202152358
876 want to use it.
878[Documentation only.
879Thomas Schilling <nominolo@googlemail.com>**20081202150158]
880[Export 'succeeded' and 'failed' helper functions.
881Thomas Schilling <nominolo@googlemail.com>**20081202144451]
882[Put full ImportDecls in ModSummary instead of just ModuleNames
883Simon Marlow <marlowsd@gmail.com>**20081202133736
884 ... and use it to make ghc -M generate correct cross-package
885 dependencies when using package-qualified imports (needed for the new
886 build system).  Since we're already parsing the ImportDecl from the
887 source file, there seems no good reason not to keep it in the
888 ModSummary, it might be useful for other things too.
890[ghc -M: need to add a dep on Prelude unless -fno-implicit-prelude is on
891Simon Marlow <marlowsd@gmail.com>**20081128165707]
892[make -include-pkg-deps work (not sure when this got lost)
893Simon Marlow <marlowsd@gmail.com>**20081128135746]
894[Fix more problems caused by padding in the Capability structure
895Simon Marlow <marlowsd@gmail.com>**20081202120735
896 Fixes crashes on Windows and Sparc
898[add missing case to Ord GlobalReg (EagerBlackhole == EagerBlackhole)
899Simon Marlow <marlowsd@gmail.com>**20081128130106]
900[Better error message for fundep conflict
902[Fix typo in quasi-quote documentation's sample.
903shelarcy <shelarcy@gmail.com>**20081129024344]
904[Remove the v_Split_info global variable and use a field of dflags instead
905Ian Lynagh <igloo@earth.li>**20081130152403]
906[Document the --machine-readable RTS flag
907Ian Lynagh <igloo@earth.li>**20081130152311]
908[Let 'loadModule' generate proper code depending on the 'hscTarget'.
909Thomas Schilling <nominolo@googlemail.com>**20081128164412
911 With this change it should be possible to perform something similar to
912 'load' by traversing the module graph in dependency order and calling
913 '{parse,typecheck,load}Module' on each.  Of course, if you want smart
914 recompilation checking you should still use 'load'.
916[Expose a separate 'hscBackend' phase for 'HsCompiler' and change
917Thomas Schilling <nominolo@googlemail.com>**20081128163746
918 parameter to 'InteractiveStatus' to a 'Maybe'.
920[Whoops, *don't* reset the complete session in 'withLocalCallbacks'.
921Thomas Schilling <nominolo@googlemail.com>**20081128150727]
922[Use a record instead of a typeclass for 'HsCompiler'.  This is mostly
923Thomas Schilling <nominolo@googlemail.com>**20081128121947
924 equivalent to a typeclass implementation that uses a functional
925 dependency from the target mode to the result type.
927[Remove dead code
928Ian Lynagh <igloo@earth.li>**20081128193831]
929[Update docs not to talk about deprecated -optdep-* flags; fixes trac #2773
930Ian Lynagh <igloo@earth.li>**20081128193633]
931[Use relative URLs in the GHC API haddock docs; fixes #2755
932Ian Lynagh <igloo@earth.li>**20081128184511]
933[Teach runghc about --help; fixes trac #2757
934Ian Lynagh <igloo@earth.li>**20081128191706]
935[Use a per-session data structure for callbacks.  Make 'WarnErrLogger'
936Thomas Schilling <nominolo@googlemail.com>**20081128103628
937 part of it.
939 Part of the GHC API essentially represents a compilation framework.
940 The difference of a *framework* as opposed to a *library* is that the
941 overall structure of the functionality is pre-defined but certain
942 details can be customised via callbacks.  (Also known as the Hollywood
943 Principle: "Don't call us, we'll call you.")
945 This patch introduces a per-session data structure that contains all
946 the callbacks instead of adding lots of small function arguments
947 whenever we want to give the user more control over certain parts of
948 the API.  This should also help with future changes: Adding a new
949 callback doesn't break old code since code that doesn't know about the
950 new callback will use the (hopefully sane) default implementation.
952 Overall, however, we should try and keep the number of callbacks small
953 and well-defined (and provide useful defaults) and use simple library
954 routines for the rest.
956[Improve error message for #2739 (but no fix).
957Thomas Schilling <nominolo@googlemail.com>**20081127135725
959 This patch changes 'loadModule' to define a fake linkable.  The
960 previous implementation of providing no linkable at all violated a
961 pre-condition in the ByteCode linker.  This doesn't fix #2739, but it
962 improves the error message a bit.
964[Remove the packing I added recently to the Capability structure
965Simon Marlow <marlowsd@gmail.com>**20081128105046
966 The problem is that the packing caused some unaligned loads, which
967 lead to bus errors on Sparc (and reduced performance elsewhere,
968 presumably).
970[don't emit CmmComments for now
971Simon Marlow <marlowsd@gmail.com>**20081127090145
972   - if the string contains */, we need to fix it (demonstrated by
973     building Cabal with -fvia-C)
974   - the strings can get quite large, so we probably only want to
975     inject comments when some debugging option is on.
977[Collect instead of print warnings in 'warnUnnecessarySourceImports'.
978Thomas Schilling <nominolo@googlemail.com>**20081127102534]
979[Force recompilation of BCOs when they were compiled in HscNothing mode.
980Thomas Schilling <nominolo@googlemail.com>**20081126183402
982 Previously, loading a set of modules in HscNothing mode and then
983 switching to HscInterpreted could lead to crashes since modules
984 compiled with HscNothing were thought to be valid bytecode objects.
986 This patch forces recompilation in these cases, hence switching between
987 HscNothing and HscInterpreted should be safe now.
989[Documentation only: Add module description for HscMain.
990Thomas Schilling <nominolo@googlemail.com>**20081126134344]
991[Include GHCi files in ctags/etags.
992Thomas Schilling <nominolo@googlemail.com>**20081126122801]
993[drop some debugging traces and use only one flag for new codegen
995[one more missing patch from new codegen path
997[Fix Trac #2817 (TH syntax -> HsSyn conversion)
999[Fix Trac #2756: CorePrep strictness bug
1001[Format output for :t more nicely
1003[Fix Trac #2766: printing operator type variables
1005[Fix build following codegen patch
1007[Removed warnings, made Haddock happy, added examples in documentation
1009 The interesting examples talk about our story with heap checks in
1010 case alternatives and our story with the case scrutinee as a Boolean.
1012[Fixed linear regalloc bug, dropped some tracing code
1014 o The linear-scan register allocator sometimes allocated a block
1015   before allocating one of its predecessors, which could lead
1016   to inconsistent allocations. Now, we allocate a block only
1017   if a predecessor has set the "incoming" assignments for the block
1018   (or if it's the procedure's entry block).
1019 o Also commented out some tracing code on the new codegen path.
1021[Keep update frames live even in functions that never return
1023 An unusual case, but without it:
1024 (a) we had an assertion failure
1025 (b) we can overwrite the caller's infotable, which might cause
1026     the garbage collector to collect live data.
1027 Better to keep the update frame live at all call sites,
1028 not just at returns.
1030[Removed space and time inefficiency in procpoint splitting
1032 I was adding extra jumps to every procpoint, even when the split-off graph
1033 referred to only some of the procpoints. No effect on correctness,
1034 but a big effect on space/time efficiency when there are lots of procpoints...
1036[Clarify the SRT building process
1038 Before: building a closure that would build an SRT given the top-level
1039 SRT. It was somewhat difficult to understand the control flow, and it
1040 may have had held onto some data structures long after they should be dead.
1041 Now, I just bundle the info we need about CAFs along with the procedure
1042 and directly call a new top-level function to build the SRTs later.
1044[Don't adjust hp up when the case scrutinee won't allocate
1047 If the case scrutinee can't allocate, we don't need to do a heap
1048 check in the case alternatives. (A previous patch got that right.)
1049 In that case, we had better not adjust the heap pointer to recover
1050 unused stack space before evaluating the scrutinee -- because we
1051 aren't going to reallocate for the case alternative.
1053[Floating infotables were reversed in C back end
1055[forgot a few files
1057[Big collection of patches for the new codegen branch.
1059 o Fixed bug that emitted the copy-in code for closure entry
1060   in the wrong place -- at the initialization of the closure.
1061 o Refactored some of the closure entry code.
1062 o Added code to check that no LocalRegs are live-in to a procedure
1063    -- trip up some buggy programs earlier
1064 o Fixed environment bindings for thunks
1065    -- we weren't (re)binding the free variables in a thunk
1066 o Fixed a bug in proc-point splitting that dropped some updates
1067   to the entry block in a procedure.
1068 o Fixed improper calls to code that generates CmmLit's for strings
1069 o New invariant on cg_loc in CgIdInfo: the expression is always tagged
1070 o Code to load free vars on entry to a thunk was (wrongly) placed before
1071   the heap check.
1072 o Some of the StgCmm code was redundantly passing around Id's
1073   along with CgIdInfo's; no more.
1074 o Initialize the LocalReg's that point to a closure before allocating and
1075   initializing the closure itself -- otherwise, we have problems with
1076   recursive closure bindings
1077 o BlockEnv and BlockSet types are now abstract.
1078 o Update frames:
1079   - push arguments in Old call area
1080   - keep track of the return sp in the FCode monad
1081   - keep the return sp in every call, tail call, and return
1082       (because it might be different at different call sites,
1083        e.g. tail calls to the gc after a heap check are performed
1084             before pushing the update frame)
1085   - set the sp appropriately on returns and tail calls
1086 o Reduce call, tail call, and return to a single LastCall node
1087 o Added slow entry code, using different calling conventions on entry and tail call
1088 o More fixes to the calling convention code.
1089   The tricky stuff is all about the closure environment: it must be passed in R1,
1090   but in non-closures, there is no such argument, so we can't treat all arguments
1091   the same way: the closure environment is special. Maybe the right step forward
1092   would be to define a different calling convention for closure arguments.
1093 o Let-no-escapes need to be emitted out-of-line -- otherwise, we drop code.
1094 o Respect RTS requirement of word alignment for pointers
1095   My stack allocation can pack sub-word values into a single word on the stack,
1096   but it wasn't requiring word-alignment for pointers. It does now,
1097   by word-aligning both pointer registers and call areas.
1098 o CmmLint was over-aggresively ruling out non-word-aligned memory references,
1099   which may be kosher now that we can spill small values into a single word.
1100 o Wrong label order on a conditional branch when compiling switches.
1101 o void args weren't dropped in many cases.
1102   To help prevent this kind of mistake, I defined a NonVoid wrapper,
1103   which I'm applying only to Id's for now, although there are probably
1104   other good candidates.
1105 o A little code refactoring: separate modules for procpoint analysis splitting,
1106   stack layout, and building infotables.
1107 o Stack limit check: insert along with the heap limit check, using a symbolic
1108   constant (a special CmmLit), then replace it when the stack layout is known.
1109 o Removed last node: MidAddToContext
1110 o Adding block id as a literal: means that the lowering of the calling conventions
1111   no longer has to produce labels early, which was inhibiting common-block elimination.
1112   Will also make it easier for the non-procpoint-splitting path.
1113 o Info tables: don't try to describe the update frame!
1114 o Over aggressive use of NonVoid!!!!
1115   Don't drop the non-void args before setting the type of the closure!!!
1116 o Sanity checking:
1117   Added a pass to stub dead dead slots on the stack
1118   (only ~10 lines with the dataflow framework)
1119 o More sanity checking:
1120   Check that incoming pointer arguments are non-stubbed.
1121   Note: these checks are still subject to dead-code removal, but they should
1122   still be quite helpful.
1123 o Better sanity checking: why stop at function arguments?
1124   Instead, in mkAssign, check that _any_ assignment to a pointer type is non-null
1125   -- the sooner the crash, the easier it is to debug.
1126   Still need to add the debugging flag to turn these checks on explicitly.
1127 o Fixed yet another calling convention bug.
1128   This time, the calls to the GC were wrong. I've added a new convention
1129   for GC calls and invoked it where appropriate.
1130   We should really straighten out the calling convention stuff:
1131     some of the code (and documentation) is spread across the compiler,
1132     and there's some magical use of the node register that should really
1133     be handled (not avoided) by calling conventions.
1134 o Switch bug: the arms in mkCmmLitSwitch weren't returning to a single join point.
1135 o Environment shadowing problem in Stg->Cmm:
1136   When a closure f is bound at the top-level, we should not bind f to the
1137   node register on entry to the closure.
1138   Why? Because if the body of f contains a let-bound closure g that refers
1139   to f, we want to make sure that it refers to the static closure for f.
1140   Normally, this would all be fine, because when we compile a closure,
1141   we rebind free variables in the environment. But f doesn't look like
1142   a free variable because it's a static value. So, the binding for f
1143   remains in the environment when we compile g, inconveniently referring
1144   to the wrong thing.
1145   Now, I bind the variable in the local environment only if the closure is not
1146   bound at the top level. It's still okay to make assumptions about the
1147   node holding the closure environment; we just won't find the binding
1148   in the environment, so code that names the closure will now directly
1149   get the label of the static closure, not the node register holding a
1150   pointer to the static closure.
1151 o Don't generate bogus Cmm code containing SRTs during the STG -> Cmm pass!
1152   The tables made reference to some labels that don't exist when we compute and
1153   generate the tables in the back end.
1154 o Safe foreign calls need some special treatment (at least until we have the integrated
1155   codegen). In particular:
1156   o they need info tables
1157   o they are not procpoints -- the successor had better be in the same procedure
1158   o we cannot (yet) implement the calling conventions early, which means we have
1159     to carry the calling-conv info all the way to the end
1160 o We weren't following the old convention when registering a module.
1161   Now, we use update frames to push any new modules that have to be registered
1162   and enter the youngest one on the stack.
1163   We also use the update frame machinery to specify that the return should pop
1164   the return address off the stack.
1165 o At each safe foreign call, an infotable must be at the bottom of the stack,
1166   and the TSO->sp must point to it.
1167 o More problems with void args in a direct call to a function:
1168   We were checking the args (minus voids) to check whether the call was saturated,
1169   which caused problems when the function really wasn't saturated because it
1170   took an extra void argument.
1171 o Forgot to distinguish integer != from floating != during Stg->Cmm
1172 o Updating slotEnv and areaMap to include safe foreign calls
1173   The dataflow analyses that produce the slotEnv and areaMap give
1174   results for each basic block, but we also need the results for
1175   a safe foreign call, which is a middle node.
1176   After running the dataflow analysis, we have another pass that
1177   updates the results to includ any safe foreign calls.
1178 o Added a static flag for the debugging technique that inserts
1179   instructions to stub dead slots on the stack and crashes when
1180   a stubbed value is loaded into a pointer-typed LocalReg.
1181 o C back end expects to see return continuations before their call sites.
1182   Sorted the flowgraphs appropriately after splitting.
1183 o PrimOp calling conventions are special -- unlimited registers, no stack
1184   Yet another calling convention...
1185 o More void value problems: if the RHS of a case arm is a void-typed variable,
1186   don't try to return it.
1187 o When calling some primOp, they may allocate memory; if so, we need to
1188   do a heap check when we return from the call.
1191[Merging in the new codegen branch
1193 This merge does not turn on the new codegen (which only compiles
1194 a select few programs at this point),
1195 but it does introduce some changes to the old code generator.
1197 The high bits:
1198 1. The Rep Swamp patch is finally here.
1199    The highlight is that the representation of types at the
1200    machine level has changed.
1201    Consequently, this patch contains updates across several back ends.
1202 2. The new Stg -> Cmm path is here, although it appears to have a
1203    fair number of bugs lurking.
1204 3. Many improvements along the CmmCPSZ path, including:
1205    o stack layout
1206    o some code for infotables, half of which is right and half wrong
1207    o proc-point splitting
1209[Major clean-up of HscMain.
1210Thomas Schilling <nominolo@googlemail.com>**20081125153201
1212 This patch entails a major restructuring of HscMain and a small bugfix
1213 to MkIface (which required the restructuring in HscMain).
1215 In MkIface:
1217   - mkIface* no longer outputs orphan warnings directly and also no
1218     longer quits GHC when -Werror is set.  Instead, errors are
1219     reported using the common IO (Messages, Maybe result) scheme.
1221 In HscMain:
1223   - Get rid of the 'Comp' monad.  This monad was mostly GhcMonad + two
1224     reader arguments, a ModSummary for the currently compiled module
1225     and a possible old interface.  The latter actually lead to a small
1226     space-leak since only its hash was needed (to check whether the
1227     newly-generated interface file was the same as the original one).
1229     Functions originally of type 'Comp' now only take the arguments
1230     that they actually need.  This leads to slighly longer argument
1231     lists in some places, however, it is now much easier to see what
1232     is actually going on.
1234   - Get rid of 'myParseModule'.  Rename 'parseFile' to 'hscParse'.
1236   - Join 'deSugarModule' and 'hscDesugar' (keeping the latter).
1238   - Rename 'typecheck{Rename}Module{'}' to 'hscTypecheck{Rename}'.
1239     One variant keeps the renamed syntax, the other doesn't.
1241   - Parameterise 'HscStatus', so that 'InteractiveStatus' is just a
1242     different parameterisation of 'HscStatus'.
1244   - 'hscCompile{OneShot,Batch,Nothing,Interactive}' are now
1245     implemented using a (local) typeclass called 'HsCompiler'.  The
1246     idea is to make the common structure more obvious.  Using this
1247     typeclass we now have two functions 'genericHscCompile' (original
1248     'hscCompiler') and 'genericHscRecompile' (original 'genComp')
1249     describing the default pipeline.  The methods of the typeclass
1250     describe a sort of "hook" interface (in OO-terms this would be
1251     called the "template method" pattern).
1253     One problem with this approach is that we parameterise over the
1254     /result/ type which, in fact, is not actually different for
1255     "nothing" and "batch" mode.  To avoid functional dependencies or
1256     associated types, we use type tags to make them artificially
1257     different and parameterise the type class over the result type.
1258     A perhaps better approach might be to use records instead.
1260   - Drop some redundant 'HscEnv' arguments.  These were likely
1261     different from what 'getSession' would return because during
1262     compilation we temporarily set the module's DynFlags as well as a
1263     few other fields.  We now use the 'withTempSession' combinator to
1264     temporarily change the 'HscEnv' and automatically restore the
1265     original session after the enclosed action has returned (even in
1266     case of exceptions).
1268   - Rename 'hscCompile' to 'hscGenHardCode' (since that is what it
1269     does).
1271 Calls in 'GHC' and 'DriverPipeline' accordingly needed small
1272 adaptions.
1274[Fix Trac #2799: TcType.isOverloadedTy
1277 A missing case (for equality predicates) in isOverloadedTy make
1278 bindInstsOfLocalFuns/Pats do the wrong thing.  Core Lint nailed it.
1280 Merge to 6.10 branch.
1283[Fix #2740: we were missing the free variables on some expressions
1284Simon Marlow <marlowsd@gmail.com>**20081125103113
1285 Particularly boolean expresions: the conditional of an 'if', and
1286 guards, were missing their free variables.
1288[Fix symbol macro names in Linker.c
1289Thorkil Naur <naur@post11.tele.dk>**20081121160149]
1290[Add a --machine-readable RTS flag
1291Ian Lynagh <igloo@earth.li>**20081123152127
1292 Currently it only affects the -t flag output
1294[Return errors instead of dying in myParseModule.
1295Thomas Schilling <nominolo@googlemail.com>**20081122154151]
1296[Comments/Haddockification only.
1297Thomas Schilling <nominolo@googlemail.com>**20081122143018]
1298[Report source span instead of just source location for unused names.
1299Thomas Schilling <nominolo@googlemail.com>**20081122142641]
1300[Change 'handleFlagWarnings' to throw exceptions instead of dying.
1301Thomas Schilling <nominolo@googlemail.com>**20081122130658
1303 It now uses the standard warning log and error reporting mechanism.
1305[Document exported functions in main/HeaderInfo.
1306Thomas Schilling <nominolo@googlemail.com>**20081121145307]
1307[Remove warning supression klugde in main/HeaderInfo
1308Thomas Schilling <nominolo@googlemail.com>**20081121144155]
1309[Use mutator threads to do GC, instead of having a separate pool of GC threads
1310Simon Marlow <marlowsd@gmail.com>**20081121151233
1312 Previously, the GC had its own pool of threads to use as workers when
1313 doing parallel GC.  There was a "leader", which was the mutator thread
1314 that initiated the GC, and the other threads were taken from the pool.
1316 This was simple and worked fine for sequential programs, where we did
1317 most of the benchmarking for the parallel GC, but falls down for
1318 parallel programs.  When we have N mutator threads and N cores, at GC
1319 time we would have to stop N-1 mutator threads and start up N-1 GC
1320 threads, and hope that the OS schedules them all onto separate cores.
1321 It practice it doesn't, as you might expect.
1323 Now we use the mutator threads to do GC.  This works quite nicely,
1324 particularly for parallel programs, where each mutator thread scans
1325 its own spark pool, which is probably in its cache anyway.
1327 There are some flag changes:
1329   -g<n> is removed (-g1 is still accepted for backwards compat).
1330   There's no way to have a different number of GC threads than mutator
1331   threads now.
1333   -q1       Use one OS thread for GC (turns off parallel GC)
1334   -qg<n>    Use parallel GC for generations >= <n> (default: 1)
1336 Using parallel GC only for generations >=1 works well for sequential
1337 programs.  Compiling an ordinary sequential program with -threaded and
1338 running it with -N2 or more should help if you do a lot of GC.  I've
1339 found that adding -qg0 (do parallel GC for generation 0 too) speeds up
1340 some parallel programs, but slows down some sequential programs.
1341 Being conservative, I left the threshold at 1.
1343 ToDo: document the new options.
1346[we shouldn't update topBound in discardSparks()
1347Simon Marlow <marlowsd@gmail.com>**20081121113539]
1348[Throw SourceErrors instead of ProgramErrors in main/HeaderInfo.
1349Thomas Schilling <nominolo@googlemail.com>**20081121141339
1351 Parse errors during dependency analysis or options parsing really
1352 shouldn't kill GHC; this is particularly annoying for GHC API clients.
1354[fix the build when !USE_MMAP
1355Simon Marlow <marlowsd@gmail.com>**20081121085418]
1356[round the size up to a page in mmapForLinker() instead of in the caller
1357Simon Marlow <marlowsd@gmail.com>**20081120154014]
1358[Fix a race in the deadlock-detection code
1359Simon Marlow <marlowsd@gmail.com>**20081120112438
1360 After a deadlock it was possible for the timer signal to remain off,
1361 which meant that the next deadlock would not be detected, and the
1362 system would hang.  Spotted by conc047(threaded2).
1364[error message wibble
1365Simon Marlow <marlowsd@gmail.com>**20081120084901]
1366[Fix flag name -XDisambiguateRecordFields
1368[Fix regTableToCapability() if gcc introduces padding
1369Simon Marlow <marlowsd@gmail.com>**20081119162910
1370 Also avoid padding if possible using __attribute__((packed))
1371 Fixes the Windows build
1373[Fix 32-bit breakage
1374Simon Marlow <marlowsd@gmail.com>**20081119145429]
1375[Small refactoring, and add comments
1376Simon Marlow <marlowsd@gmail.com>**20081119143702
1377 I discovered a new invariant while experimenting (blackholing is not
1378 optional when using parallel GC), so documented it.
1380[Fix some unsigned comparisions that should be signed
1381Simon Marlow <marlowsd@gmail.com>**20081119143205
1382 Fixes crashes when using reclaimSpark() (not used currently, but may
1383 be in the future).
1385[Remove incorrect assertions in steal()
1386Simon Marlow <marlowsd@gmail.com>**20081119143043]
1387[don't run sparks if there are other threads on this Capability
1388Simon Marlow <marlowsd@gmail.com>**20081114121022]
1389[Fix typo (HAVE_LIBGMP => HAVE_LIB_GMP); omit local gmp includes if HAVE_LIB_GMP
1390Simon Marlow <marlowsd@gmail.com>**20081119131056
1391 If we're using the system's installed GMP, we don't want to be picking
1392 up the local gmp.h header file.
1394 Fixes 2469(ghci) for me, because it turns out the system's GMP is more
1395 up-to-date than GHC's version and has a fix for more recent versions
1396 of gcc.  We also need to pull in a more recent GMP, but that's a
1397 separte issue.
1399[Fix some more shutdown races
1400Simon Marlow <marlowsd@gmail.com>**20081119124848
1401 There were races between workerTaskStop() and freeTaskManager(): we
1402 need to be sure that all Tasks have exited properly before we start
1403 tearing things down.  This isn't completely straighforward, see
1404 comments for details.
1406[Add help messages about --with-editline-(includes,libraries) to the ghc configure script.
1407Judah Jacobson <judah.jacobson@gmail.com>**20081114183334]
1408[Add optional eager black-holing, with new flag -feager-blackholing
1409Simon Marlow <marlowsd@gmail.com>**20081118142442
1411 Eager blackholing can improve parallel performance by reducing the
1412 chances that two threads perform the same computation.  However, it
1413 has a cost: one extra memory write per thunk entry. 
1415 To get the best results, any code which may be executed in parallel
1416 should be compiled with eager blackholing turned on.  But since
1417 there's a cost for sequential code, we make it optional and turn it on
1418 for the parallel package only.  It might be a good idea to compile
1419 applications (or modules) with parallel code in with
1420 -feager-blackholing.
1422 ToDo: document -feager-blackholing.
1424[Fix #2783: detect black-hole loops properly
1425Simon Marlow <marlowsd@gmail.com>**20081117144515
1426 At some point we regressed on detecting simple black-hole loops.  This
1427 happened due to the introduction of duplicate-work detection for
1428 parallelism: a black-hole loop looks very much like duplicate work,
1429 except it's duplicate work being performed by the very same thread.
1430 So we have to detect and handle this case.
1432[Fix warning on Windows (use deleteThread() not deleteThread_())
1433Simon Marlow <marlowsd@gmail.com>**20081117143047]
1434[fix compile breakage on Windows
1435Simon Marlow <marlowsd@gmail.com>**20081117142831]
1436[Attempt to fix #2512 and #2063;  add +RTS -xm<address> -RTS option
1437Simon Marlow <marlowsd@gmail.com>**20081117120556
1438 On x86_64, the RTS needs to allocate memory in the low 2Gb of the
1439 address space.  On Linux we can do this with MAP_32BIT, but sometimes
1440 this doesn't work (#2512) and other OSs don't support it at all
1441 (#2063).  So to work around this:
1443   - Try MAP_32BIT first, if available.
1445   - Otherwise, try allocating memory from a fixed address (by default
1446     1Gb)
1448   - We now provide an option to configure the address to allocate
1449     from.  This allows a workaround on machines where the default
1450     breaks, and also provides a way for people to test workarounds
1451     that we can incorporate in future releases.
1453[Another shutdown fix
1454Simon Marlow <marlowsd@gmail.com>**20081117094350
1455 If we encounter a runnable thread during shutdown, just kill it.  All
1456 the threads are supposed to be dead at this stage, but this catches
1457 threads that might have just returned from a foreign call, or were
1458 finalizers created by the GC.
1460 Fixes memo002(threaded1)
1462[Correct an example in the users guide
1463Ian Lynagh <igloo@earth.li>**20081116174938]
1464[Fix gen_contents_index when not run inplace; trac #2764
1465Ian Lynagh <igloo@earth.li>**20081116174122
1466 Based on a patch from juhpetersen.
1468[close the temporary Handle before removing the file
1469Simon Marlow <marlowsd@gmail.com>**20081114130958]
1470[refactor: move unlockClosure() into SMPClosureOps() where it should be
1471Simon Marlow <marlowsd@gmail.com>**20081114095817]
1472[Omit definitions of cas() and xchg() in .hc code
1473Simon Marlow <marlowsd@gmail.com>**20081114095738
1474 They cause compilation errors (correctly) with newer gccs
1475 Shows up compiling the RTS via C, which happens on Windows
1477[Don't put stdin into non-blocking mode (#2778, #2777)
1478Simon Marlow <marlowsd@gmail.com>**20081114130546
1479 This used to be necessary when our I/O library needed all FDs in
1480 O_NONBLOCK mode, and readline used to put stdin back into blocking
1481 mode.  Nowadays the I/O library can cope with FDs in blocking mode,
1482 and #2778/#2777 show why this is important.
1484[Rmoeve --enable-dotnet
1485Simon Marlow <marlowsd@gmail.com>**20081114124929]
1486[#2751: disourage --enable-shared in ./configure --help
1487Simon Marlow <marlowsd@gmail.com>**20081114124748]
1488[add a warning that --enable-shared is experimental
1489Simon Marlow <marlowsd@gmail.com>**20081114104034]
1490[lookupSymbol: revert to looking up both with and without the @N suffix
1491Simon Marlow <marlowsd@gmail.com>**20081113122927]
1492[#2768: fix compatibility problem with newer version of mingw
1493Simon Marlow <marlowsd@gmail.com>**20081113114626]
1494[notice ^C exceptions when waiting for I/O
1495Simon Marlow <marlowsd@gmail.com>**20081113114342]
1496[Fix a bug in the recompilation checking logic.
1497Thomas Schilling <nominolo@googlemail.com>**20081113162653
1499 Previously, using target HscNothing resulted in unnessesary
1500 recompilation because 'upsweep_mod' treated HscInterface specially.
1501 This patch changes relaxes this.
1503 When running GHC with debug level 5, 'upsweep_mod' will now also be
1504 more verbose about what it is doing.
1506 There is (at least) one possible remaining problem, though: When using
1507 target 'HscNothing' we generate a fake linkable to signal that we have
1508 processed a module.  When switching to 'HscInterpreted' this may cause
1509 objects to not be recompiled.  Switching from HscNothing to
1510 HscInterpreted is therefore only safe if we unload everything first.
1512[Fix another subtle shutdown deadlock
1513Simon Marlow <marlowsd@gmail.com>**20081113160005
1514 The problem occurred when a thread tries to GC during shutdown.  In
1515 order to GC it has to acquire all the Capabilities in the system, but
1516 during shutdown, some of the Capabilities have already been closed and
1517 can never be acquired.
1519[Fix an extremely subtle deadlock bug on x86_64
1520Simon Marlow <marlowsd@gmail.com>**20081113155730
1521 The recent_activity flag was an unsigned int, but we sometimes do a
1522 64-bit xchg() on it, which overwrites the next word in memory.  This
1523 happened to contain the sched_state flag, which is used to control the
1524 orderly shutdown of the system.  If the xchg() happened during
1525 shutdown, the scheduler would get confused and deadlock.  Don't you
1526 just love C?
1528[move an assertion
1529Simon Marlow <marlowsd@gmail.com>**20081113154542]
1530[Always zap the trailing @N from symbols when looking up in a DLL
1531Simon Marlow <marlowsd@gmail.com>**20081112111518
1533 Fixes win32002(ghci)
1535 Previously we only did this for references from object files, but we
1536 should do it for all symbols, including those that GHCi looks up due
1537 to FFI calls from bytecode.
1539[Only allocate a mark stack if we're actually doing marking
1540Simon Marlow <marlowsd@gmail.com>**20081112112144
1541 saves a bit of memory in major GCs
1543[Fix parse error with older gccs (#2752)
1544Simon Marlow <marlowsd@gmail.com>**20081111135344]
1545[Fix to i386_insert_ffrees (#2724, #1944)
1546Simon Marlow <marlowsd@gmail.com>**20081111125619
1547 The i386 native code generator has to arrange that the FPU stack is
1548 clear on exit from any function that uses the FPU.  Unfortunately it
1549 was getting this wrong (and has been ever since this code was written,
1550 I think): it was looking for basic blocks that used the FPU and adding
1551 the code to clear the FPU stack on any non-local exit from the block.
1552 In fact it should be doing this on a whole-function basis, rather than
1553 individual basic blocks.
1555[Fix bootstrap with 6.10.1 on Windows
1556Simon Marlow <marlowsd@gmail.com>**20081110134318
1557 ghc-pkg doesn't understand the old syntax any more, so 'ghc-pkg -l' fails
1559[Perform case-insensitive matching of path components in getBaseDir on Windows (Fixes bug 2743)
1560Neil Mitchell <ndmitchell@gmail.com>**20081105134315]
1561[Documentation only.  Clarify that 'load*' may indeed throw SourceErrors.
1562Thomas Schilling <nominolo@googlemail.com>**20081110175614
1564 I don't think errors during dependency analysis should be passed to
1565 the logger.
1567[Fix documentation (to say the opposite).
1568Thomas Schilling <nominolo@googlemail.com>**20081110153819]
1569[Fix line numbers in TAGS files.
1570Thomas Schilling <nominolo@googlemail.com>**20081110153621]
1571[Documentation only.
1572Thomas Schilling <nominolo@googlemail.com>**20081110153456]
1573[Add 'packageDbModules' function to GHC API.
1574Thomas Schilling <nominolo@googlemail.com>**20081110143510
1576 This function returns a list of all modules available through the
1577 package DB.
1579 MERGE TO 6.10
1581[We now require GHC 6.6, so we always have Applicative
1582Ian Lynagh <igloo@earth.li>**20081108144723]
1583[Remove a CPP test that's always true (__GLASGOW_HASKELL__ >= 605)
1584Ian Lynagh <igloo@earth.li>**20081108144544]
1585[Remove some dead code now that __GLASGOW_HASKELL__ >= 606
1586Ian Lynagh <igloo@earth.li>**20081108144459]
1587[Remove some flag duplication from a Makefile
1588Ian Lynagh <igloo@earth.li>**20081108144412]
1589[ghc_ge_605 is now always YES
1590Ian Lynagh <igloo@earth.li>**20081108144328]
1591[Remove the GHC 6.4 unicode compat stuff; we can now just use Data.Char
1592Ian Lynagh <igloo@earth.li>**20081108143423]
1593[Fix libffi bindist
1594Clemens Fruhwirth <clemens@endorphin.org>**20081108094725]
1595[Replace couple of fromJust with expectJust
1596Clemens Fruhwirth <clemens@endorphin.org>**20081107160735]
1597[Bugfix for patch "Do not filter the rts from linked libraries..." (#2745)
1598Simon Marlow <marlowsd@gmail.com>**20081107092925
1599 The sense of the #ifdef was wrong
1601[fix via-C compilation: import ghczmprim_GHCziBool_False_closure
1602Simon Marlow <marlowsd@gmail.com>**20081107090432]
1603[disable instance MonadPlus CoreM for GHC <= 6.6
1604Simon Marlow <marlowsd@gmail.com>**20081107085250]
1605[re-instate counting of sparks converted
1606Simon Marlow <marlowsd@gmail.com>**20081106160810
1607 lost in patch "Run sparks in batches"
1609[fix ASSERT_SPARK_POOL_INVARIANTS(): top>bottom is valid
1610Simon Marlow <marlowsd@gmail.com>**20081106155826]
1611[pruneSparkQueue(): fix bug when top>bottom
1612Simon Marlow <marlowsd@gmail.com>**20081106155648]
1613[don't yield if the system is shutting down
1614Simon Marlow <marlowsd@gmail.com>**20081106155356]
1615[leave out ATTRIBUTE_ALIGNED on Windows, it gives a warning
1616Simon Marlow <marlowsd@gmail.com>**20081106132105]
1617[Cope with ThreadRelocated when traversing the blocked_queue
1618Simon Marlow <marlowsd@gmail.com>**20081106114045
1619 Fixes "invalid what_next field" in ioref001 on Windows, and perhaps others
1621[Remove dead code.
1622Thomas Schilling <nominolo@googlemail.com>**20081031162036]
1623[Run sparks in batches, instead of creating a new thread for each one
1624Simon Marlow <marlowsd@gmail.com>**20081106113639
1625 Signficantly reduces the overhead for par, which means that we can
1626 make use of paralellism at a much finer granularity.
1628[allocateInGen(): increase alloc_blocks (#2747)
1629Simon Marlow <marlowsd@gmail.com>**20081106113714]
1630[disable MonadPlus instance that doesn't compile with 6.6
1631Simon Marlow <marlowsd@gmail.com>**20081106100411]
1632[don't yield the Capability if blackholes_need_checking
1633Simon Marlow <marlowsd@gmail.com>**20081105154928]
1634[deadlock fix: reset the flag *after* checking the blackhole queue
1635Simon Marlow <marlowsd@gmail.com>**20081105150542]
1636[retreat the top/bottom fields of the spark pool in pruneSparkPool()
1637Simon Marlow <marlowsd@gmail.com>**20081105150359]
1638[fix the :help docs for :set stop (#2737)
1639Simon Marlow <marlowsd@gmail.com>**20081104092929]
1640[bugfix: don't ingore the return value from rts_evalIO()
1641Simon Marlow <marlowsd@gmail.com>**20081104142147]
1642[Document the new SPARKS statistic, and xref from the parallelism section
1643Simon Marlow <marlowsd@gmail.com>**20081024120236]
1644[Move the freeing of Capabilities later in the shutdown sequence
1645Simon Marlow <marlowsd@gmail.com>**20081024104301
1646 Fixes a bug whereby the Capability has been freed but other
1647 Capabilities are still trying to steal sparks from its pool.
1649[Pad Capabilities and Tasks to 64 bytes
1650Simon Marlow <marlowsd@gmail.com>**20081023080749
1651 This is just good practice to avoid placing two structures heavily
1652 accessed by different CPUs on the same cache line
1654[Fix desugaring of record update (fixes Trac #2735)
1656[Refuse to register packages with unversioned dependencies; trac #1837
1657Ian Lynagh <igloo@earth.li>**20081031181746]
1658[We now require GHC 6.6 to build the HEAD (and thus 6.12)
1659Ian Lynagh <igloo@earth.li>**20081031171506]
1660[:set prompt now understand Haskell String syntax; trace #2652
1661Ian Lynagh <igloo@earth.li>**20081031145227]
1662[Comments only
1664[Quickfix for warning.
1665Thomas Schilling <nominolo@googlemail.com>**20081031113125]
1666[Export typeclasses for accessing compiler results.
1667Thomas Schilling <nominolo@googlemail.com>**20081028182310
1669 MERGE TO 6.10.
1671[Minor refactoring.
1672Thomas Schilling <nominolo@googlemail.com>**20081028182202]
1673[Include record fields in tags.
1674Thomas Schilling <nominolo@googlemail.com>**20081028180538]
1675[Fix imports
1677[Improve error reporting for non-rigid GADT matches
1680 Following suggestions from users, this patch improves the error message
1681 when a GADT match needs a rigid type:
1683  tcfail172.hs:19:10:
1684      GADT pattern match in non-rigid context for `Nil'
1685 -      Solution: add a type signature
1686 +      Probable solution: add a type signature for `is_normal'
1687      In the pattern: Nil
1688      In the definition of `is_normal': is_normal Nil = True
1690 Now GHC tries to tell you what to give a type signature *for*.
1691 Thanks to Daniel Gorin and others for the suggestions.
1694[Add (a) CoreM monad, (b) new Annotations feature
1697 This patch, written by Max Bolingbroke,  does two things
1699 1.  It adds a new CoreM monad (defined in simplCore/CoreMonad),
1700     which is used as the top-level monad for all the Core-to-Core
1701     transformations (starting at SimplCore).  It supports
1702        * I/O (for debug printing)
1703        * Unique supply
1704        * Statistics gathering
1705        * Access to the HscEnv, RuleBase, Annotations, Module
1706     The patch therefore refactors the top "skin" of every Core-to-Core
1707     pass, but does not change their functionality.
1709 2.  It adds a completely new facility to GHC: Core "annotations".
1710     The idea is that you can say
1711        {#- ANN foo (Just "Hello") #-}
1712     which adds the annotation (Just "Hello") to the top level function
1713     foo.  These annotations can be looked up in any Core-to-Core pass,
1714     and are persisted into interface files.  (Hence a Core-to-Core pass
1715     can also query the annotations of imported things.)  Furthermore,
1716     a Core-to-Core pass can add new annotations (eg strictness info)
1717     of its own, which can be queried by importing modules.
1719 The design of the annotation system is somewhat in flux.  It's
1720 designed to work with the (upcoming) dynamic plug-ins mechanism,
1721 but is meanwhile independently useful.
1723 Do not merge to 6.10! 
1726[Fix Trac #2674: in TH reject empty case expressions and function definitions
1728[Change naming conventions for compiler-generated dictionaries and type functions
1731 Up to now, the data constructor dictionary for class C as been called
1732 ":DC". But there is no reason for the colon to be at the front; indeed
1733 it confuses the (simple-minded) pretty-printer for types.  So this
1734 patch changes it to be "D:C".  This makes Core a lot easier to read.
1735 Having a colon in the middle ensures that it can't clash with a user-written
1736 data type.
1738 Similarly I changed
1740   T:C     Data type corresponding a class dictionary (was :TC)
1741   D:C     Data constructor for class dictionary (was :DC)
1743   NTCo:T   Coercion mapping from a newtype T to its representation type
1744                (was :CoT)
1746   TFCo:R   Coercion mapping from a data family to its respresentation type R
1747                (was :CoFR)
1749   Rn:T     The n'th respresentation data type for a data type T
1750                (was :RnT)
1753 Do not merge to 6.10.
1755 HEADS-UP: you'll need to recompile libraries from scratch. 
1757 ROMAN: you could do the same for OccName.mkVectTyConOcc etc, if you wanted.
1761[Fix tcrun031: yet more tidying up in TcDeriv
1763[Add Outputable instance for CoercionI
1765[Fix Trac #2720: inlining and casts
1768 The issue here is what happens when we have
1770        (f |> co) x
1772 where f is itself marked INLINE.  We want callSiteInline to "see"
1773 the fact that the function is applied, and hence have some incentive
1774 to inline.  I've done this by extending CoreUnfold.CallCtxt with
1775 ValAppCtxt.  I think that should catch this case without messing up
1776 any of the others.
1779[Clarify documentatoin
1781[Update library version numbers in the release notes
1782Ian Lynagh <igloo@earth.li>**20081023144018]
1783[various updates to the release notes
1784Simon Marlow <marlowsd@gmail.com>**20081007151647]
1785[Add library release notes
1786Ian Lynagh <igloo@earth.li>**20080920155722]
1787[Add release notes for the compiler
1788Ian Lynagh <igloo@earth.li>**20080920114857]
1789[Doc fix
1790Ian Lynagh <igloo@earth.li>**20081028150534]
1791[Rename some variables in docs
1792Ian Lynagh <igloo@earth.li>**20081028150447]
1793[Fix typos
1794Ian Lynagh <igloo@earth.li>**20081028144655]
1795[Mostly-fix Trac #2595: updates for existentials
1798 Ganesh wanted to update records that involve existentials.  That
1799 seems reasonable to me, and this patch covers existentials, GADTs,
1800 and data type families.
1802 The restriction is that
1803   The types of the updated fields may mention only the
1804   universally-quantified type variables of the data constructor
1806 This doesn't allow everything in #2595 (it allows 'g' but not 'f' in
1807 the ticket), but it gets a lot closer.
1809 Lots of the new lines are comments!
1812[Fix Trac #2723: keep track of record field names in the renamer
1815 The idea here is that with -XNamedFieldPuns and -XRecordWildCards we don't
1816 want to report shadowing errors for
1817        let fld = <blah> in C { .. }
1818 But to suppress such shadowing errors, the renamer needs to know that
1819 'fld' *is* a record selector.  Hence the new NameSet in
1820 TcRnFypes.RecFieldEnv
1823[Remove dead code
1825[Fix Trac #2713: refactor and tidy up renaming of fixity decls
1828 In fixing #2713, this patch also eliminates two almost-unused
1829 functions from RnEnv (lookupBndr and lookupBndr_maybe).  The
1830 net lines of code is prety much unchanged, but more of them
1831 are comments!
1834[Fix Trac #2701: make deriving check better for unlifted args
1837 Getting the automatic deriving mechanism to work really smoothly
1838 is surprisingly hard.  I keep finding myself in TcDeriv!
1840 Anyway, this is a nice clean fix to Trac #2701.
1843[Use pdflatex rather than latex for building
1844Ian Lynagh <igloo@earth.li>**20081024112400
1845 The Windows builder is having problems running ps2pdf, so this works
1846 aroudn the problem.
1848[Remove an unmatched } in core.tex
1849Ian Lynagh <igloo@earth.li>**20081024111750]
1850[Add a usepackage{url}
1851Ian Lynagh <igloo@earth.li>**20081024111458]
1852[Update ANNOUNCE
1853Ian Lynagh <igloo@earth.li>**20081022164423]
1854[Fix a bug in the new scheduler
1855Simon Marlow <marlowsd@gmail.com>**20081023155017
1856 If the current thread blocks, we should yield the Capability
1857 immediately, because the thread and hence possibly the current Task
1858 are now owned by someone else.  This worked in the old scheduler, but
1859 we moved where the yield happens in the new scheduler which broke it.
1861[add an assertion
1862Simon Marlow <marlowsd@gmail.com>**20081023154551]
1863[fix a warning
1864Simon Marlow <marlowsd@gmail.com>**20081023082213]
1865[traverse the spark pools only once during GC rather than twice
1866Simon Marlow <marlowsd@gmail.com>**20081022115233]
1867[Refactoring and reorganisation of the scheduler
1868Simon Marlow <marlowsd@gmail.com>**20081022092744
1870 Change the way we look for work in the scheduler.  Previously,
1871 checking to see whether there was anything to do was a
1872 non-side-effecting operation, but this has changed now that we do
1873 work-stealing.  This lead to a refactoring of the inner loop of the
1874 scheduler.
1876 Also, lots of cleanup in the new work-stealing code, but no functional
1877 changes.
1879 One new statistic is added to the +RTS -s output:
1881   SPARKS: 1430 (2 converted, 1427 pruned)
1883 lets you know something about the use of `par` in the program.
1885[Work stealing for sparks
1888    Spark stealing support for PARALLEL_HASKELL and THREADED_RTS versions of the RTS.
1890   Spark pools are per capability, separately allocated and held in the Capability
1891   structure. The implementation uses Double-Ended Queues (deque) and cas-protected
1892   access.
1894   The write end of the queue (position bottom) can only be used with
1895   mutual exclusion, i.e. by exactly one caller at a time.
1896   Multiple readers can steal()/findSpark() from the read end
1897   (position top), and are synchronised without a lock, based on a cas
1898   of the top position. One reader wins, the others return NULL for a
1899   failure.
1901   Work stealing is called when Capabilities find no other work (inside yieldCapability),
1902   and tries all capabilities 0..n-1 twice, unless a theft succeeds.
1904   Inside schedulePushWork, all considered cap.s (those which were idle and could
1905   be grabbed) are woken up. Future versions should wake up capabilities immediately when
1906   putting a new spark in the local pool, from newSpark().
1908 Patch has been re-recorded due to conflicting bugfixes in the sparks.c, also fixing a
1909 (strange) conflict in the scheduler.
1912[include an elapsed time table
1913Simon Marlow <marlowsd@gmail.com>**20081023080648]
1914[generate a valid summary for older GHC versions too
1915Simon Marlow <marlowsd@gmail.com>**20081023080629]
1916[Fix Trac #2714 (a minor wibble)
1919 In boxy_match (which is a pure function used by preSubType) we can
1920 encounter TyVars not just TcTyVars; this patch takes account of that.
1923[Reject programs with superclass equalities for now
1924Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20081021131721
1925 - The current implementation of type families cannot properly deal
1926   with superclass equalities.  Instead of making a half-hearted attempt at
1927   supporting them, which mostly ends in cryptic error message, rejecting
1928   right away with an appropriate message.
1930   MERGE TO 6.10
1932[Fix doc syntax
1933Ian Lynagh <igloo@earth.li>**20081021183317]
1934[Don't put the README file in the Windows installer; fixes trac #2698
1935Ian Lynagh <igloo@earth.li>**20081021162543
1936 The README file talks about getting and building the sources, which
1937 doesn't make sense for the installer.
1939[Comments and parens only
1941[Do proper cloning in worker/wrapper splitting
1944 See Note [Freshen type variables] in WwLib.  We need to clone type
1945 variables when building a worker/wrapper split, else we simply get
1946 bogus code, admittedly in rather obscure situations.  I can't quite
1947 remember what program showed this up, unfortunately, but there
1948 definitely *was* one!  (You get a Lint error.)
1951[Don't float an expression wrapped in a cast
1954 There is no point in floating out an expression wrapped in a coercion;
1955 If we do we'll transform 
1956        lvl = e |> co [_$_]
1957 to     
1958        lvl' = e; lvl = lvl' |> co
1959 and then inline lvl.  Better just to float out the payload (e).
1962[Fix Trac #2668, and refactor TcDeriv
1965 TcDeriv deals with both standalone and ordinary 'deriving';
1966 and with both data types and 'newtype deriving'.  The result
1967 is really rather compilcated and ad hoc.  Ryan discovered
1968 #2668; this patch fixes that bug, and makes the internal interfces
1969 #more uniform.  Specifically, the business of knocking off
1970 type arguments from the instance type until it matches the kind of the
1971 class, is now done by derivTyData, not mkNewTypeEqn, because the
1972 latter is shared with standalone derriving, whree the trimmed
1973 type application is what the user wrote.
1976[Spelling error in comment
1978[White space only
1980[Comments to explain strict overlap checking for type family instances
1982[Allow type families to use GADT syntax (and be GADTs)
1985 We've always intended to allow you to use GADT syntax for
1986 data families:
1987        data instance T [a] where
1988          T1 :: a -> T [a]
1989 and indeed to allow data instances to *be* GADTs
1990        data intsance T [a] where
1991          T1 :: Int -> T [Int]
1992          T2 :: a -> b -> T [(a,b)]
1994 This patch fixes the renamer and type checker to allow this.
1997[Improve crash message from applyTys and applyTypeToArgs
1999[Wibble to ungrammatical error message
2001[Comments only: replace ":=:" by "~" (notation for equality predicates)
2003[FIX #2693
2004Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20081021120107
2005 - As long as the first reduceContext in tcSimplifyRestricted potentially
2006   performs improvement, we need to zonk again before the second reduceContext.
2007   It would be better to prevent the improvement in the first place, but given
2008   the current situation zonking is definitely the right thing to do.
2010   MERGE TO 6.10
2012[Restore the terminal attributes even if ghci does not exit normally.
2013Judah Jacobson <judah.jacobson@gmail.com>**20081020164109]
2014[FIX #2688
2015Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20081021044213
2016 - Change in TcSimplify.reduceContext:
2018      We do *not* go around for new extra_eqs.  Morally, we should,
2019      but we can't without risking non-termination (see #2688).  By
2020      not going around, we miss some legal programs mixing FDs and
2021      TFs, but we never claimed to support such programs in the
2022      current implementation anyway.
2024   MERGE TO 6.10
2026[Move documentation within 80 column boundary.
2027Thomas Schilling <nominolo@googlemail.com>**20081014134016]
2028[Improve haddock documentation for 'GHC.topSortModuleGraph'.
2029Thomas Schilling <nominolo@googlemail.com>**20081014133833]
2030[Improve haddock documentation for HsExpr module.
2031Thomas Schilling <nominolo@googlemail.com>**20081014133740]
2032[Improve Haddock-markup for HsDecls module.
2033Thomas Schilling <nominolo@googlemail.com>**20081014133556]
2034[Run Haddock with compacting GC and show RTS statistics.
2035Thomas Schilling <nominolo@googlemail.com>**20081020111410]
2036[FIX (partially) #2703: bug in stack overflow handling when inside block
2037Simon Marlow <marlowsd@gmail.com>**20081020121103
2038 As a result of a previous ticket (#767) we disabled the generation of
2039 StackOverflow exceptions when inside a Control.Exception.block, on the
2040 grounds that StackOverflow is like an asynchronous exception.  Instead
2041 we just increase the stack size.  However, the stack size calculation
2042 was wrong, and ended up not increasing the size of the stack, with the
2043 result that the runtime just kept re-allocating the stack and filling
2044 up memory.
2046[Re-export Located(..) and related functions
2047Simon Marlow <marlowsd@gmail.com>**20081020102422
2048 So that clients don't need to import SrcLoc
2050[whitespace fix
2051Simon Marlow <marlowsd@gmail.com>**20081020101241]
2052[FIX #2691: Manually reset the terminal to its initial settings; works around a bug in libedit.
2053Judah Jacobson <judah.jacobson@gmail.com>**20081016024838]
2054[Eliminate duplicate flags in the tab completion of ghci's :set command.
2055Judah Jacobson <judah.jacobson@gmail.com>**20081016015721]
2056[Add dph haddock docs to the doc index
2057Ian Lynagh <igloo@earth.li>**20081019133208]
2058[Clean the bootstrapping extensible-exceptions package
2059Ian Lynagh <igloo@earth.li>**20081017195942]
2060[Fix trac #2687
2061Ian Lynagh <igloo@earth.li>**20081015163412
2062 OtherPunctuation, ConnectorPunctuation and DashPunctuation are now
2063 treated as symbols, rather than merely graphic characters.
2065[Fix trac #2680; avoid quadratic behaviour from (++)
2066Ian Lynagh <igloo@earth.li>**20081015163235]
2067[Fix the build when the bootstrapping compiler has a newer Cabal than us
2068Ian Lynagh <igloo@earth.li>**20081015144023
2069 We need to forcibly use the in-tree Cabal, or we get version mismatch errors
2071[Fix the name of prologue.txt when making bindists
2072Ian Lynagh <igloo@earth.li>**20081014114714]
2073[Comments only
2075[Fix Trac #2497; two separate typos in Lexer.x
2078 The patch to switch on lexing of 'forall' inside a RULES pragma
2079 wasn't working.  This fixes it so that it does.
2082[Update manual: tidy up instances, say more about type families in instance decls
2084[Make tags work on Unices, too.
2085Thomas Schilling <nominolo@googlemail.com>**20081014211236]
2086[Undefine __PIC__ before defining it to work around "multiple definitions of __PIC__" warnings
2087Clemens Fruhwirth <clemens@endorphin.org>**20081014143206]
2088[Add "dyn" to GhcRTSWays when compiling --enable-shared
2089Clemens Fruhwirth <clemens@endorphin.org>**20081014125123]
2090[Fill out the ghc package's cabal file
2091Ian Lynagh <igloo@earth.li>**20081013235817]
2092[Patching libffi so it can be built as DLL
2093Clemens Fruhwirth <clemens@endorphin.org>**20081014103459
2095 libffi-dllize-3.0.6.patch should be pushed upstream
2097[Add 'etags' makefile target.
2098Thomas Schilling <nominolo@googlemail.com>**20081013170927
2100 This only works with stage2 since `ghctags' is built against stage1
2101 but not against the bootstrapping compiler.  Also note that all of GHC
2102 must typecheck for this target to succeed.  Perhaps we should not
2103 overwrite the old TAGS file by default then.
2105[Use cabal information to get GHC's flags to `ghctags'.
2106Thomas Schilling <nominolo@googlemail.com>**20081013170658
2108 By giving the dist-directory to ghctags we can get all the GHC API
2109 flags we need in order to load the required modules.  The flag name
2110 could perhaps be improved, but apart from that it seems to work well.
2112[Version bump for libffi to 3.0.6
2113Clemens Fruhwirth <clemens@endorphin.org>**20081014081300]
2114[Encode shared/static configuration into stamps to do the right thing when rebuilding
2115Clemens Fruhwirth <clemens@endorphin.org>**20081013221530]
2116[Add a link to the GHC API docs from the library haddock index
2117Ian Lynagh <igloo@earth.li>**20081013195943]
2118[Link to the GHC API documentation from the main doc page
2119Ian Lynagh <igloo@earth.li>**20081013200927]
2120[Whitespace only in docs/index.html
2121Ian Lynagh <igloo@earth.li>**20081013200625]
2122[Tweak gen_contents_index
2123Ian Lynagh <igloo@earth.li>**20081013192548
2124 It now works again after it has been installed, as well as while it is
2125 in a source tree.
2126 After it's been installed it filters out the ghc package, as that
2127 currently swamps everything else in the index.
2129[Build fixes for DLLized rts
2130Clemens Fruhwirth <clemens@endorphin.org>**20081013201608]
2131[Do not filter the rts from linked libraries in linkDynLib as Windows does not allow unresolved symbols
2132Clemens Fruhwirth <clemens@endorphin.org>**20081013201426]
2133[Add HsFFI.o to INSTALL_LIBS
2134Clemens Fruhwirth <clemens@endorphin.org>**20081013200945]
2135[Rename symbol macros to a consistant naming scheme
2136Clemens Fruhwirth <clemens@endorphin.org>**20081013162433]
2137[Fix #2685: two Bool arguments to tidyTypeEnv were the wrong way around
2138Simon Marlow <marlowsd@gmail.com>**20081013121339
2139 So -XTemplateHaskell was behaving like -fomit-interface-file-pragmas,
2140 and vice versa.
2142[Simplify the "is $bindir in $PATH" test
2143Ian Lynagh <igloo@earth.li>**20081011191008]
2144[Correct the "is $bindir in $PATH" test
2145Ian Lynagh <igloo@earth.li>**20081011191030
2146 We were testing neq instead of eq
2148[Fix a typo which was causing ghci to quit on commands errors
2149pepe <mnislaih@gmail.com>**20081011114720]
2150[Drop libm from the linker dependencies for libffi
2151Clemens Fruhwirth <clemens@endorphin.org>**20081011074524]
2152[Do not generate haddock documentation when running install-docs in libffi
2153Clemens Fruhwirth <clemens@endorphin.org>**20081010192318]
2154[When waking up thread blocked on TVars, wake oldest first (#2319)
2155Josef Svenningsson <josef.svenningsson@gmail.com>**20081010150322
2156 StgTVarWatchQueue contains the threads blocked on a TVar in order
2157 youngest first. The list has to be traversed backwards to unpark the threads
2158 oldest first.
2160 This improves the fairness when using STM in some situations.
2162[add readTVarIO :: TVar a -> IO a
2163Simon Marlow <marlowsd@gmail.com>**20081010131545]
2164[fix #2636: throw missing module errors as SourceErrors, not ErrMsg
2165Simon Marlow <marlowsd@gmail.com>**20081010131535]
2166[atomicModifyIORef: use a local cas() instead of the global lock
2167Simon Marlow <simonmar@microsoft.com>**20081008154702
2168 This should improve scaling when using atomicModifyIORef
2170[Delay building libffi until package.conf is created and fix bindist
2171Clemens Fruhwirth <clemens@endorphin.org>**20081010073106]
2172[Install a versioned ghc-pkg script; fixes trac #2662
2173Ian Lynagh <igloo@earth.li>**20081009164946]
2174[Fix bindist creation: Only the main RTS was being put in the bindists
2175Ian Lynagh <igloo@earth.li>**20081009163451]
2176[pushAtom: add missing case for MachNullAddr (#2589)
2177Simon Marlow <marlowsd@gmail.com>**20081009091118]
2178[undo incorrect assertion, and fix comments
2179Simon Marlow <marlowsd@gmail.com>**20081009085118]
2180[remove old GRAN/PARALLEL_HASKELL code
2181Simon Marlow <marlowsd@gmail.com>**20081009085051]
2182[FIX #2639
2183Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20081009132328
2185   MERGE TO 6.10
2187[Cover PredTy case in Type.tyFamInsts
2188Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20081009061435
2190   MERGE TO 6.10
2192[Drop ghcconfig.h/RtsConfig.h from libffi's package.conf.in
2193Clemens Fruhwirth <clemens@endorphin.org>**20081009071342]
2194[Don't use sed's -i flag as Solaris doesn't know it in libffi/Makefile
2195Clemens Fruhwirth <clemens@endorphin.org>**20081008234455]
2196[Don't use /dev/null trick to create empty object files in libffi/Makefile
2197Clemens Fruhwirth <clemens@endorphin.org>**20081008232902]
2198[Turn libffi into a Haskell package
2199Clemens Fruhwirth <clemens@endorphin.org>**20081008170443]
2200[Make 'getModSummary' deterministic.
2201Thomas Schilling <nominolo@googlemail.com>**20081008144032]
2202[Add accessors to 'HsModule' and haddockify it.
2203Thomas Schilling <nominolo@googlemail.com>**20081007235656]
2204[fix syntax errors in src-dist publish rules
2205Simon Marlow <marlowsd@gmail.com>**20081008103432]
2206[add comments and an ASSERT_LOCK_HELD()
2207Simon Marlow <marlowsd@gmail.com>**20081008112627]
2208[Fix #2663: we had a hard-wired capabilities[0]
2209Simon Marlow <marlowsd@gmail.com>**20081008112609
2210 For some unknown reason in schedulePostRunThread() we were always
2211 passing capabilities[0] rather than the current Capability to
2212 throwToSingleThreaded().  This caused all kinds of weird failures and
2213 crashes in STM code when running on multiple processors.
2215[Fix #1955 for heap profiles generated by +RTS -hT
2216Simon Marlow <marlowsd@gmail.com>**20081003150745]
2217[add a section id for +RTS -hT
2218Simon Marlow <marlowsd@gmail.com>**20081007151007]
2219[update documentation for PostfixOperators
2220Simon Marlow <marlowsd@gmail.com>**20081007150957]
2221[fix markup
2222Simon Marlow <marlowsd@gmail.com>**20081007150943]
2223[Fix bug in DPH docs
2224Roman Leshchinskiy <rl@cse.unsw.edu.au>**20081008101618]
2225[Add short DPH section to users guide
2226Roman Leshchinskiy <rl@cse.unsw.edu.au>**20081008064754
2228 MERGE TO 6.10
2230[Users Guide: added type family documentation
2231Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20081008061927
2233   MERGE TO 6.10
2235[Track changes to package dph
2236Roman Leshchinskiy <rl@cse.unsw.edu.au>**20081008032859
2238 MERGE TO 6.10
2240[Build a profiled GHC API by default if p is in GhcLibWays
2241Ian Lynagh <igloo@earth.li>**20081007152318]
2242[Check whether mk/validate.mk defines anything after validating
2243Ian Lynagh <igloo@earth.li>**20081007144855]
2244[Remove #define _BSD_SOURCE from Stg.h
2245Ian Lynagh <igloo@earth.li>**20081006101959
2246 It's no longer needed, as base no longer #includes it
2248[Make ghctags compile again.
2249Thomas Schilling <nominolo@googlemail.com>**20081007135705]
2250[Revert AutoLinkPackages change for dynamic libraries. Cabal handles that now.
2251Clemens Fruhwirth <clemens@endorphin.org>**20081007100417]
2252[Change suffix for dyn. linked executables from _real to .dyn
2253Clemens Fruhwirth <clemens@endorphin.org>**20081007100750]
2254[Add accessors to 'Target' fields and haddockify.
2255Thomas Schilling <nominolo@googlemail.com>**20081006222940
2257 MERGE TO 6.10
2259[Make 'gblock' and 'gunblock' part of 'ExceptionMonad'.  This way the
2260Thomas Schilling <nominolo@googlemail.com>**20081006222831
2261 default implementations of 'gbracket' and 'gfinally' just work.
2263 MERGE TO 6.10
2265[Add Word8 support to vectoriser
2266Roman Leshchinskiy <rl@cse.unsw.edu.au>**20081007004416
2268 MERGE TO 6.10
2270[Fix generating OS X installers: Set COMMAND_MODE=unix2003
2271Ian Lynagh <igloo@earth.li>**20081005222715
2272 If we don't specify COMMAND_MODE=unix2003 then xcodebuild defaults
2273 to setting it to legacy, which means that ar builds archives
2274 without a table of contents. That makes the build fail later on.
2276[We need to set datadir = $(libdir) in bindists
2277Ian Lynagh <igloo@earth.li>**20081005143307
2278 We already do in the normal Makefiles.
2280 This is because GHC needs package.conf and unlit to be in the same place
2281 (and things like ghc-pkg need to agree on where package.conf is, so we
2282 just set it globally).
2284[prep-bin-dist-mingw complains if it finds a bad version of windres
2285Ian Lynagh <igloo@earth.li>**20081004175351]
2286[removed Data.Generics.Basics, added Data.Data
2287'Jose Pedro Magalhaes <jpm@cs.uu.nl>'**20081002082808]
2288[Fix a build problem with GHC 6.4.2
2289Ian Lynagh <igloo@earth.li>**20081003195700]
2290[No AutoLinkPackages for dynamic library linking
2291Clemens Fruhwirth <clemens@endorphin.org>**20081003185304]
2292[use ghcError for error in command line
2293Clemens Fruhwirth <clemens@endorphin.org>**20081001125648]
2294[Fix warnings
2296[Always use extensible exceptions in ghc-pkg, rather than using ifdefs
2297Ian Lynagh <igloo@earth.li>**20081003161247]
2298[Use a proper exception for IOEnvFailure, not just a UserError
2299Ian Lynagh <igloo@earth.li>**20081003160129]
2300[Use an extensible-exceptions package when bootstrapping
2301Ian Lynagh <igloo@earth.li>**20081003140216
2302 Ifdefs for whether we had extensible exceptions or not were spreading
2303 through GHC's source, and things would only have got worse for the next
2304 2-3 years, so instead we now use an implementation of extensible
2305 exceptions built on top of the old exception type.
2307[Expunge ThFake, cure Trac #2632
2310 This patch fixes a dirty hack (the fake ThFake module), which in turn
2311 was causing Trac #2632.
2313 The new scheme is that the top-level binders in a TH [d| ... |] decl splice
2314 get Internal names.  That breaks a previous invariant that things like
2315 TyCons always have External names, but these TyCons are never long-lived;
2316 they live only long enough to typecheck the TH quotation; the result is
2317 discarded.  So it seems cool.
2319 Nevertheless -- Template Haskell folk: please test your code.  The testsuite
2320 is OK but it's conceivable that I've broken something in TH.  Let's see.
2323[Make a debug check more refined
2325[Add ASSERTs to all calls of nameModule
2328 nameModule fails on an InternalName.  These ASSERTS tell you
2329 which call failed.
2332[Let parseModule take a ModSummary like checkAndLoadModule did.
2333Thomas Schilling <nominolo@googlemail.com>**20081002230412
2335 To get the ModSummary for a ModuleName getModSummary can be used.
2336 It's not called find* or lookup* because it assumes that the module is
2337 in the module graph and throws an exception if it cannot be found.
2338 Overall, I'm not quite sure about the usefulness of this function
2339 since the user has no control about which filetype to grab (hs or
2340 hs-boot).
2342[Remove some out-of-date entries from .darcs-boring
2343Ian Lynagh <igloo@earth.li>**20081002201519]
2344[TFs: Allow repeated variables in left-hand sides of instances
2345Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20081002134539
2347   MERGE TO 6.10
2349[Clean up some comments
2350Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20081002074642
2352   MERGE TO 6.10
2354[Make the new binder-swap stuff in OccurAnal work right for GlobalIds
2357 See Note [Binder swap on GlobalId scrutinees].  I hadn't got this
2358 right before, so repeated cases on imported Ids weren't getting optimised.
2362[Minor refactoring only
2364[Comments only
2366[Zap dead-ness info appropriately in SpecConstr
2369 SpecConstr can make pattern binders come alive, so we must remember
2370 to zap their dead-variable annotation.  See extendCaseBndrs.
2372 (This was triggering a Core Lint failure in DPH.)
2375[Suppress invalid Core Lint complaint about lack of constructors
2377[add some more GC roots (fixes conc048, and possibly some others)
2378Simon Marlow <marlowsd@gmail.com>**20081001164427]
2379[Document +RTS -hT
2380Simon Marlow <marlowsd@gmail.com>**20081001163222
2381 We forgot to document this in GHC 6.8
2383[fix new-qualified-operators link
2384Simon Marlow <marlowsd@gmail.com>**20081001163105]
2385[Proper error message for unsupported pattern signatures
2386Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20081001144339
2387 - Pattern signatures must be identical to the type expected for the pattern;
2388   see Note [Pattern coercions]
2389 - We now signal an appropriate error if an equality coercion would be needed
2390   (instead of just generating Core that doesn't typecheck)
2392   MERGE TO 6.10
2394[Prevent excessive inlining with DPH
2395Roman Leshchinskiy <rl@cse.unsw.edu.au>**20081002012055
2397 This adds a new flag -finline-if-enough-args which disables inlining for
2398 partially applied functions. It is automatically set by -Odph. This is a
2399 temporary hack and should remain undocumented.
2401 MERGE TO 6.10
2404[On Windows, check that we have a good version of windres when configuring
2405Ian Lynagh <igloo@earth.li>**20081001171133]
2406[Call $(PERL) rather than perl when making the manpage
2407Ian Lynagh <igloo@earth.li>**20080930155054]
2408[don't install the installPackage program
2409Ian Lynagh <igloo@earth.li>**20080930145714]
2410[Fix #2637: conc032(threaded2) failure
2411Simon Marlow <marlowsd@gmail.com>**20081001135549
2412 There was a race condition whereby a thread doing throwTo could be
2413 blocked on a thread that had finished, and the GC would detect this
2414 as a deadlock rather than raising the pending exception.  We can't
2415 close the race, but we can make the right thing happen when the GC
2416 runs later.
2418[Remove outdated link to OGI webpage
2419Simon Marlow <marlowsd@gmail.com>**20080930150912]
2420[TFs: Fixed InstContextNorm (and simplification of IPs)
2421Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20081001131303
2423   MERGE TO 6.10
2425[TcSimplify.reduceImplication: clean up
2426Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20081001091315
2427 - This cleans up some of the mess in reduceImplication and documents the
2428   precondition on the form of wanted equalities properly.
2429 - I also made the back off test a bit smarter by allowing to back off in the
2430   presence of wanted equalities as long as none of them got solved in the
2431   attempt.  (That should save generating some superfluous bindings.)
2433   MERGE TO 6.10
2435[Make sure to zonk the kind of coercion variables
2436Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20081001053243
2438   MERGE TO 6.10
2440[Remover PROT_EXEC flag from mmap()
2441Simon Marlow <marlowsd@gmail.com>**20080930141842
2442 Needed for #738 fix
2444[Fix #2410: carefully generate unique names for CAF CCs
2445Simon Marlow <marlowsd@gmail.com>**20080930141812]
2446[fix #2594: we were erroneously applying masks, as the reporter suggested
2447Simon Marlow <marlowsd@gmail.com>**20080930115611
2448 My guess is that this is left over from when we represented Int8 and
2449 friends as zero-extended rather than sign-extended.  It's amazing it hasn't
2450 been noticed earlier.
2452[Unconditionalize definition of DYNAMIC_* so that libffi.so/.dll is removed even when BuildSharedLibs is reset to NO
2453Clemens Fruhwirth <clemens@endorphin.org>**20080930085449]
2454[Type families: need to instantiate flexible skolems before other flexibles
2455Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20080930053559
2457 MERGE TO 6.10
2459[Fix warnings
2460Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20080929142227]
2461[Type families: consider subst rules both way
2462Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20080929141040
2463 - applySubstFam, applySubstVarVar & applySubstVarFam need to return their
2464   second argument -to be put into the todo list- if the rule would be
2465   applicable if the equalities would be supplied in the opposite order.
2467 MERGE TO 6.10
2469[Clean up a bit and improve an error message
2471[Don't capture error calls in tryUser
2474 A previous patch slightly changed the semantics of tryUser.
2475 This patch restores the original behaviour
2476 (as expected in :print)
2479[tweaks to this section of the docs
2480Simon Marlow <simonmar@microsoft.com>**20080927141834]
2481[Add -outputdir flag (#2295)
2482Simon Marlow <simonmar@microsoft.com>**20080927141822]
2483[oops, forgot to add -XNewQualifiedOperators to the flags table
2484Simon Marlow <simonmar@microsoft.com>**20080923140449]
2485[Fix making OS X installers from source tarballs
2486Ian Lynagh <igloo@earth.li>**20080927150507
2487 I'm not sure why it works in the HEAD, but when making an installer
2488 from the 6.10.1 beta configure hangs when doing the CHECK_HIST_ERRORS
2489 test (during rl_initialize, I believe). Giving make /dev/null as stdin
2490 fixes it.
2492[Make the matching of the filename ghc.exe case insensitive, fixes bug #2603
2493Neil Mitchell <ndmitchell@gmail.com>**20080916160311]
2494[Fix #2411: missing case for CATCH_STM_FRAME in raiseAsync()
2495Simon Marlow <simonmar@microsoft.com>**20080926232806]
2496[Add an example of how to use SCCs to the user guide
2497Ian Lynagh <igloo@earth.li>**20080926203832]
2498[Add some description of the +RTS -t/-s/-S output
2499Ian Lynagh <igloo@earth.li>**20080926200203]
2500[Remove a redundant options pragma
2501Ian Lynagh <igloo@earth.li>**20080926152731]
2502[Split ShowVersion etc off into a different type to DoInteractive etc
2503Ian Lynagh <igloo@earth.li>**20080926140539
2504 This fixes trac #1348 (ghci --help gave ghc's help), and also tidies
2505 things up a bit. Things would be even tidier if the usage.txt files were
2506 put into a .hs file, so that ShowUsage wouldn't need to be able to find
2507 the libdir.
2509[Pass SRC_HC_OPTS to GHC when building GHC's Main.hs
2510Ian Lynagh <igloo@earth.li>**20080926131609]
2511[Improve runghc docs; fixes trac #2477
2512Ian Lynagh <igloo@earth.li>**20080926124425]
2513[Type families: fixes in flattening & finalisation
2514Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20080925225324
2515 * Finalisation didn't do the right thing for equalities x ~ y, where
2516   x was instantiated, but not zonked and y flexible (need to do y := x)
2517 * During flattening we weren't careful enough when turning wanteds
2518   intermediates into locals
2520 Both bugs showed up in a small example of SPJ:
2522   linear :: HasTrie (Basis v) => (Basis v, v)
2523   linear =  basisValue
2525   class HasTrie a where
2527   type family Basis u :: *
2529   basisValue :: (Basis v,v)
2530   basisValue = error "urk"
2533[Fix the behaviour of flags like --help and --version; fixes trac #2620
2534Ian Lynagh <igloo@earth.li>**20080925165618
2535 They should override other mode flags, not conflict with them
2537[Follow the integer package changes
2538Ian Lynagh <igloo@earth.li>**20080925133855]
2539[Type families: fix decomposition problem
2540Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20080925084139
2541 * Fixes the problem reported in
2542   <http://www.haskell.org/pipermail/haskell-cafe/2008-July/044911.html>
2544[Fix parsing of -ignore-package flag.
2545Bertram Felgenhauer <int-e@gmx.de>**20080925053820]
2546[Don't exit ghci if :info is called on an undefined identifier.
2547Judah Jacobson <judah.jacobson@gmail.com>**20080924212422]
2548[Fix maintainer-clean
2549Ian Lynagh <igloo@earth.li>**20080924230553]
2550[Use -f when making the runhaskell symlink
2551Ian Lynagh <igloo@earth.li>**20080924124255
2552 Otherwise installation fails if runhaskell already exists.
2554[Use -perm -100 rather than -perm /a+x when looking for executable files
2555Ian Lynagh <igloo@earth.li>**20080924124137
2556 /a+x doesn't work on some Solaris and OS X machines. Spotted by
2557 Christian Maeder.
2559[Use $(FIND) rather than find, as the former may be gfind
2560Ian Lynagh <igloo@earth.li>**20080924123323]
2561[Look for gfind as well as find
2562Ian Lynagh <igloo@earth.li>**20080924123046]
2563[In configure, don't call FPTOOLS_HADDOCK
2564Ian Lynagh <igloo@earth.li>**20080924122558
2565 We now use the in-tree haddock, so we don't need to look for it.
2567[Use $(TAR) rather than tar
2568Ian Lynagh <igloo@earth.li>**20080924121759
2569 Fixes problems on Solaris, where we need to use gtar instead of tar
2571[Add $(strip) to a Makefile test
2572Ian Lynagh <igloo@earth.li>**20080924120940
2573 Fixes making bindists on solaris. Patch from Christian Maeder.
2575[Use test -f rather than test -e, for portability (Solaris)
2576Ian Lynagh <igloo@earth.li>**20080924120840]
2577[Remove some dependencies on bootstrapping.conf from libraries/Makefile
2578Ian Lynagh <igloo@earth.li>**20080923205755
2579 They were causing some unnecessary work:
2580 Running make in a built tree reregisters the GHC package in
2581 bootstrapping.conf, and the build system thought that this updated
2582 timestamp meant that the configure stamps were out of date. This is
2583 particularly bad for the libraries with configure scripts, as those
2584 take a while to run.
2586 The bootstrapping.conf is built in an earlier phase ("make boot") so
2587 one shouldn't rely on the dependencies anyway.
2589[Bump the version number to 6.11
2590Ian Lynagh <igloo@earth.li>**20080923165613]
2591[Generalise type of 'defaultErrorHandler' so it can be used inside a Ghc session.
2592Thomas Schilling <nominolo@googlemail.com>**20080921085647]
2593[Make "sh -e boot" work
2594Ian Lynagh <igloo@earth.li>**20080921111508]
2595[Use -f rather than -e for portability
2596Ian Lynagh <igloo@earth.li>**20080921111436]
2597[Add some special cases for putting dph in bindists
2598Ian Lynagh <igloo@earth.li>**20080921000406]
2599[Escape a hash in the Makefile (it was breaking source dist creation)
2600Ian Lynagh <igloo@earth.li>**20080920232945]
2601[Disallow package flags in OPTIONS_GHC pragmas (#2499)
2602Simon Marlow <simonmar@microsoft.com>**20080923173904]
2603[#2566: emit a warning for 'ghc -c foo.bar'
2604Simon Marlow <simonmar@microsoft.com>**20080923144956
2606 $ ghc -c foo.bar
2607 Warning: the following files would be used as linker inputs, but linking is not being done: foo.bar
2608 ghc: no input files
2609 Usage: For basic information, try the `--help' option.
2611[Fix to new executable allocation code (fixed print002 etc.)
2612Simon Marlow <simonmar@microsoft.com>**20080922210915
2613 The problem here is caused by the fact that info tables include a
2614 relative offset to the string naming the constructor.  Executable
2615 memory now resides at two places in the address space: one for writing
2616 and one for executing.  In the info tables generated by GHCi, we were
2617 calculating the offset relative to the writable instance, rather than
2618 the executable instance, which meant that the GHCi debugger couldn't
2619 find the names for constructors it found in the heap.
2621[clean sm/Evac_thr.c and sm/Scav_thr.c
2622Simon Marlow <simonmar@microsoft.com>**20080922152827]
2623[add -XNewQualifiedOperators (Haskell' qualified operator syntax)
2624Simon Marlow <simonmar@microsoft.com>**20080922152340]
2625[Fix Trac #2597 (first bug): correct type checking for empty list
2628 The GHC front end never generates (ExplicitList []), but TH can.
2629 This patch makes the typechecker robust to such programs.
2632[Fix Trac #2597 (second bug): complain about an empty DoE block
2635 When converting an empty do-block from TH syntax to HsSyn,
2636 complain rather than crashing.
2639[Update dependencies
2640Ian Lynagh <igloo@earth.li>**20080920183534]
2641[Fix building with GHC 6.6
2642Ian Lynagh <igloo@earth.li>**20080920162918]
2643[Remove fno-method-sharing from the list of static flags
2644Ian Lynagh <igloo@earth.li>**20080920010635
2645 It is now a dynamic flag
2647[Tidy up the treatment of dead binders
2650 This patch does a lot of tidying up of the way that dead variables are
2651 handled in Core.  Just the sort of thing to do on an aeroplane.
2653 * The tricky "binder-swap" optimisation is moved from the Simplifier
2654   to the Occurrence Analyser.  See Note [Binder swap] in OccurAnal.
2655   This is really a nice change.  It should reduce the number of
2656   simplifier iteratoins (slightly perhaps).  And it means that
2657   we can be much less pessimistic about zapping occurrence info
2658   on binders in a case expression. 
2660 * For example:
2661        case x of y { (a,b) -> e }
2662   Previously, each time around, even if y,a,b were all dead, the
2663   Simplifier would pessimistically zap their OccInfo, so that we
2664   can't see they are dead any more.  As a result virtually no
2665   case expression ended up with dead binders.  This wasn't Bad
2666   in itself, but it always felt wrong.
2668 * I added a check to CoreLint to check that a dead binder really
2669   isn't used.  That showed up a couple of bugs in CSE. (Only in
2670   this sense -- they didn't really matter.)
2672 * I've changed the PprCore printer to print "_" for a dead variable.
2673   (Use -dppr-debug to see it again.)  This reduces clutter quite a
2674   bit, and of course it's much more useful with the above change.
2676 * Another benefit of the binder-swap change is that I could get rid of
2677   the Simplifier hack (working, but hacky) in which the InScopeSet was
2678   used to map a variable to a *different* variable. That allowed me
2679   to remove VarEnv.modifyInScopeSet, and to simplify lookupInScopeSet
2680   so that it doesn't look for a fixpoint.  This fixes no bugs, but
2681   is a useful cleanup.
2683 * Roman pointed out that Id.mkWildId is jolly dangerous, because
2684   of its fixed unique.  So I've
2686      - localied it to MkCore, where it is private (not exported)
2688      - renamed it to 'mkWildBinder' to stress that you should only
2689        use it at binding sites, unless you really know what you are
2690        doing
2692      - provided a function MkCore.mkWildCase that emodies the most
2693        common use of mkWildId, and use that elsewhere
2695    So things are much better
2697 * A knock-on change is that I found a common pattern of localising
2698   a potentially global Id, and made a function for it: Id.localiseId
2701[Gix the ghcii script
2702Ian Lynagh <igloo@earth.li>**20080919174651
2703 The ghc executable name doesn't have a version number on Windows, so
2704 don't put one in the script.
2706[Create runhaskell as well as runghc
2707Ian Lynagh <igloo@earth.li>**20080919153010]
2708[On Linux use libffi for allocating executable memory (fixed #738)
2709Simon Marlow <marlowsd@gmail.com>**20080919134602]
2710[Move the context_switch flag into the Capability
2711Simon Marlow <marlowsd@gmail.com>**20080919102601
2712 Fixes a long-standing bug that could in some cases cause sub-optimal
2713 scheduling behaviour.
2715[Fix building the extralibs tarball
2716Ian Lynagh <igloo@earth.li>**20080919133555
2717 We now need to dig the appropriate lines out of packages, rather than
2718 just catting libraries/extra-packages, in order to find out what the
2719 extralibs are.
2721[Install libffi when installing frmo a bindist
2722Ian Lynagh <igloo@earth.li>**20080919130332]
2723[Fix how we put libffi into bindists
2724Ian Lynagh <igloo@earth.li>**20080919125528]
2725[TAG 6.10 branch has been forked
2726Ian Lynagh <igloo@earth.li>**20080919123437]
2727[Don't require Parser.y in a source dist
2728Ian Lynagh <igloo@earth.li>**20080919115831]
2729[Add HpcParser.hs to source dists
2730Ian Lynagh <igloo@earth.li>**20080919115816]
2731[Fix the list of generated files that need to go into the source dists
2732Ian Lynagh <igloo@earth.li>**20080919112522]
2733[Improve documentation of overlapping instances
2735[Put generated files in source dists
2736Ian Lynagh <igloo@earth.li>**20080918194424
2737 We don't want to require that users building source dists have alex/happy
2739[Add libraries/syb to .darcs-boring
2740Ian Lynagh <igloo@earth.li>**20080918190116]
2741[Fix a couple of issues with :print
2744       - Ticket #1995: Unsoundness with newtypes
2745       - Ticket #2475: "Can't unify" error when stopped at an exception
2747       In addition this patch adds the following:
2749       - Unfailingness: RTTI cannot panic anymore.
2750         In case of failure, it recovers gracefully by returning the "I know nothing" type
2751       - A -ddump-rtti flag
2755pepe <mnislaih@gmail.com>**20080418172303]
2756[RichTokenStream support
2757Chaddai Fouche <chaddai.fouche@gmail.com>**20080918165256
2759 This patch adds support for raw token streams, that contain more
2760 information than normal token streams (they contains comments at
2761 least). The "lexTokenStream" function brings this support to the
2762 Lexer module. In addition to that, functions have been added to
2763 the GHC module to make easier to recover of the token stream of
2764 a module ("getTokenStream").
2766 Building on that, I added what could be called "rich token
2767 stream": token stream to which have been added the source string
2768 corresponding to each token, the function addSourceToToken takes
2769 a StringBuffer and a starting SrcLoc and a token stream and build
2770 this rich token stream. getRichTokenStream is a convenience
2771 function to get a module rich token stream. "showRichTokenStream"
2772 use the SrcLoc information in such a token stream to get a string
2773 similar to the original source (except unsignificant
2774 whitespaces). Thus "putStrLn . showRichTokenStream =<<
2775 getRichTokenStream s mod" should print a valid module source, the
2776 interesting part being to modify the token stream between the get
2777 and the show of course.
2779[When passing gcc -B, also tell it where the mingw include directory is
2780Ian Lynagh <igloo@earth.li>**20080918143312]
2781[Don't put the mingw directory in RTS's package.conf
2782Ian Lynagh <igloo@earth.li>**20080918143118]
2783[Be more forceful when cleaning in compiler/ and ghc/
2784Ian Lynagh <igloo@earth.li>**20080918134443
2785 Now that the Cabal file is generated by configure, it would be nice
2786 if clean worked even if the cabal file is missing. So now we just rm -rf
2787 the dist directory.
2789[Generate ghc.cabal and ghc-bin.cabal with configure
2790Ian Lynagh <igloo@earth.li>**20080918133636
2791 This allows us to put the proper version number into them
2793[Make the ghci scripts point to the versioned GHC program, not just "ghc"
2794Ian Lynagh <igloo@earth.li>**20080918122516]
2795[Fix Trac #1470: improve handling of recursive instances (needed for SYB3)
2798 This bug has been hanging around for a long time, as you'll see by its
2799 number. The fix implements a feature that is really needed by SYB3, to
2800 allow an instance to (rather indirectly) refer to itself.  The trickiness
2801 comes when solving the superclass constraints.
2803 The whoel issue is explained in Note [Recursive instances and superclases]
2804 in TcSimplify.
2806 In cracking this one I found I could remove the WantSCs argument to the
2807 ReduceMe flag, which is a worthwhile simplification.  Good!
2810[Comments only
2812[Replace ASSERT with WARN, and explain why
2815 The DPH library tripped an ASSERT.  The code is actually OK, but it's
2816 badly-optimised so I changed it to WARN.  The issue here is explained
2817 in ClosureInfo, Note [Unsafe coerce complications].
2820[Add a missing "prime" (env' --> env'') thereby fixing a tripping WARN.  Hurrah!
2822[Fix nasty infelicity: do not short-cut empty substitution in the simplifier
2825 I was perplexed about why an arity-related WARN was tripping. It took
2826 me _day_ (sigh) to find that it was because SimplEnv.substExpr was taking
2827 a short cut when the substitution was empty, thereby not subsituting for
2828 Ids in scope, which must be done (CoreSubst Note [Extending the Subst]).
2830 The fix is a matter of deleting the "optimisation".  Same with
2831 CoreSubst.substSpec, although I don't know if that actually caused a
2832 probem.
2835[Avoid arity reduction when doing eta-reduce
2838 We like things with high arity, so when doing eta reduction
2839 it's probably a good idea to avoid reducing arity.
2842[Add extra WARN test
2845 This warning tests that the arity of a function does not decrease.
2846 And that it's at least as great as the strictness signature.
2848 Failing this test isn't a disater, but it's distinctly odd and
2849 usually indicates that not enough information is getting propagated
2850 around, and hence you may get more simplifier iterations.
2853[Comments only
2855[Re-adjust interaction between -ddump flags and force-recompilation
2858 If you say -ddump-xx we effectively add -fforce-recomp, so that you
2859 see your dump output.  But this works badly in --make mode, because
2860 you get the ddump output for every module, which is probably not what
2861 you want.  This patch forces recompilation with -ddump-X only in one-shot
2862 mode. 
2864 Of course, this only affects people using -ddump options.
2867[Add Outputable GhcMode instance
2869[Improve error reporting for 'deriving' (Trac #2604)
2871[Add link to GADT paper re rigid types
2873[Fix MacOS X build: don't believe __GNUC_GNU_INLINE__ on MacOS X
2874Simon Marlow <marlowsd@gmail.com>**20080918112856]
2875[require Alex version 2.1.0
2876Simon Marlow <marlowsd@gmail.com>**20080918112812
2877 Having 2.0.1 causes some unicode tests to fail
2879[Type families: fixes in the new solver
2880Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20080918100934]
2881[ext-core library: Parser fixes; make it build with the HEAD
2882Tim Chevalier <chevalier@alum.wellesley.edu>**20080918090349
2884 In the ext-core parser I guess I never tested:
2885 * existential type variable bindings in case alts
2886 * empty data declarations
2888 That'll learn me!
2890[Wibble ghc-pkg imports to fix building on Windows
2891Ian Lynagh <igloo@earth.li>**20080917210813]
2892[ghc-pkg needs to make package.conf with sensible permissions
2893Ian Lynagh <igloo@earth.li>**20080917192155
2894 It was calling openTempFile which uses a 600 permissions mask.
2896[Change 'loadWithCompiler' callback argument to just print warnings.
2897Thomas Schilling <nominolo@googlemail.com>**20080917102925
2898 Rename function accordingly.
2900 The callback wasn't very flexible to begin with.  There's pretty much
2901 no way around to calling 'compile' inside that callback since
2902 'upsweep' depends on certain side effects of compile.  It therefore
2903 makes more sense to restrict the callback to its intended use only,
2904 namely to log warnings and errors.
2906[Fix: GhcStage2HcOpts were being added to stage 3 too
2907Simon Marlow <marlowsd@gmail.com>**20080917085917]
2908[Type families: unify with family apps in checking mode
2909Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20080917062548]
2910[Type families: bug fixes
2911Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20080916151254]
2912[Keep sysnonyms folded in equalities if possible
2913Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20080916075700]
2914[Type families: apply flattening coercions in the right order
2915Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20080916055136]
2916[TcTyFuns: tidy warning
2917Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20080915031423]
2918[Signature for Inst.isValidWantedEqInst
2919Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20080915030118]
2920[Remember if RewriteInst is swapped & bug fixes
2921Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20080914163639]
2922[Type families: fixed all non-termination in the testsuite
2923Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20080914120638]
2924[Type families: completed the new equality solver
2925Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20080913133631
2926 - Implements normalisation of class constraints containing synonym family
2927   applications or skolems refined by local equalities.
2928 - Clean up of TcSimplify.reduceContext by using the new equality solver.
2929 - Removed all the now unused code of the old algorithm.
2930 - This completes the implementation of the new algorithm, but it is largely
2931   untested => many regressions.
2933[Use the new -optdep flag replacements when building with >= GHC 6.9
2934Ian Lynagh <igloo@earth.li>**20080916220057
2935 Fix building the HEAD with itself
2937[Use "exec" when running ghc in the wrapper
2938Ian Lynagh <igloo@earth.li>**20080915100217]
2939[Add "#!/bin/sh" to runghc.wrapper
2940Ian Lynagh <igloo@earth.li>**20080914153507]
2941[Add a "#!/bin/sh" to ghc.wrapper
2942Ian Lynagh <igloo@earth.li>**20080914153344]
2943[Fixing directory creation to not create "" directories inside hpc report (harmless but needless)
2945[Fix Trac #2052 Allowing hpc to understand hsc files.
2947[Fix Trac #2311: creates subdirs for package coverage information
2949[FIX #2469: sort out our static/extern inline story
2950Simon Marlow <marlowsd@gmail.com>**20080916132222
2951 gcc has changed the meaning of "extern inline" when certain flags are
2952 on (e.g. --std=gnu99), and this broke our use of it in the header
2953 files.
2955[Fix a warning
2956Simon Marlow <marlowsd@gmail.com>**20080916130922]
2957[Stop using mremap() to allocate space for trampolines
2958Simon Marlow <marlowsd@gmail.com>**20080915145924
2960 This was causing problems because sometimes mremap() moved the memory
2961 we had allocated from the low 2Gb to above the 2Gb boundary, causing
2962 some linkages to fail.  There's no MAP_32BIT flag to mremap().
2964 So now we just use mmap(MAP_ANON|MAP_32BIT) to allocated space for the
2965 trampolines.  People without MAP_32BIT (eg. *BSD) will still have to
2966 do something else here, such as allocating memory from a fixed
2967 address; so I've made it slightly easier for those guys, but there's
2968 still work to do (#2063).
2970 One solution (that Simon PJ is advocating) is to turn on -fPIC by
2971 default on x86-64.  This is a good solution as it removes the need for
2972 MAP_32BIT, but doesn't work with -fvia-C, so probably this is for
2973 later.
2975[add $(GhcStage[123]HcOpts)
2976Simon Marlow <marlowsd@gmail.com>**20080912155549]
2977[Improve handling of -fdph-* flags
2978Roman Leshchinskiy <rl@cse.unsw.edu.au>**20080916034746]
2979[Add -fdph-this
2980Roman Leshchinskiy <rl@cse.unsw.edu.au>**20080916033710]
2981[Remove last traces of package ndp
2982Roman Leshchinskiy <rl@cse.unsw.edu.au>**20080916033428]
2983[Clean up vectorisation error messages
2984Roman Leshchinskiy <rl@cse.unsw.edu.au>**20080916013236]
2985[Fix vectoriser bug
2986Roman Leshchinskiy <rl@cse.unsw.edu.au>**20080915042823
2988 We were using mkWildId in situations where it cause disastrous shadowing
2990[Track changes to dph
2991Roman Leshchinskiy <rl@cse.unsw.edu.au>**20080912114028]
2992[Change desugaring of PArr literals
2993Roman Leshchinskiy <rl@cse.unsw.edu.au>**20080912015609]
2994[Expose the dph packages automatically if -dph-* is set
2995Roman Leshchinskiy <rl@cse.unsw.edu.au>**20080912004403]
2996[Don't panic on non-vectorisable expressions
2997Roman Leshchinskiy <rl@cse.unsw.edu.au>**20080911054333]
2998[-Odph implies -fno-spec-constr-count
2999Roman Leshchinskiy <rl@cse.unsw.edu.au>**20080910045339]
3000[Improve warning for SpecConstr
3002[White space only
3004[Minor refactoring to get rid of Type.splitNewTyConApp
3006[Refactor the desugaring of RULE lhss a bit
3009 This is just a tidy-up.  Previously we were calling occurAnalyse
3010 twice on each LHS which was silly and a bit unclean too. 
3012 This patch should have no overall effect, though.
3015[Do not use the Static Arg Transformation by default with -O2
3018 Max has some more heuristics to add, and is meanwhile worried
3019 that having SAT on by default will make some highly-tuned array
3020 programs worse.  So it's off by default. 
3022 Use -fstatic-argument-transformation to switch it on.
3025[Comments, and a couple of asserts, only
3027[Fix Trac #2587: take account of type lets
3030 GHC allows a non-recursive let for type varaibles
3031        let a = TYPE ty in ...
3032 But the free-variable finder had not caught up with this
3033 fact. This patch catches up.
3036[Don't try to float type-lets
3039 A type let shouldn't really occur in SetLevels, but if it does,
3040 this patch makes sure it is left alone.
3043[add refs and fix a bug (noted by Peter Gammie) in docs of arrow notation
3044Ross Paterson <ross@soi.city.ac.uk>**20080915104757]
3045[Generalise type of 'withExtendedLinkEnv'.
3046Thomas Schilling <nominolo@googlemail.com>**20080915085738]
3047[Use 'GhcMonad' in ghci/InteractiveUI.
3048Thomas Schilling <nominolo@googlemail.com>**20080915085633]
3049[Use 'GhcMonad' in ghci/GhciTags.
3050Thomas Schilling <nominolo@googlemail.com>**20080915084922]
3051[Use 'GhcMonad' in ghci/Debugger.
3052Thomas Schilling <nominolo@googlemail.com>**20080915084738]
3053[Use 'GhcMonad' in ghci/GhciMonad.
3054Thomas Schilling <nominolo@googlemail.com>**20080915084646]
3055[Use 'GhcMonad' in ghc/Main.
3056Thomas Schilling <nominolo@googlemail.com>**20080914232957]
3057[Require PatternSignatures for bootstrapping compiler.
3058Thomas Schilling <nominolo@googlemail.com>**20080914232642]
3059[Use 'GhcMonad' in InteractiveEval.
3060Thomas Schilling <nominolo@googlemail.com>**20080914232454]
3061[Use 'GhcMonad' in GHC and split up checkModule into phases.
3062Thomas Schilling <nominolo@googlemail.com>**20080914232044
3064 I'm not sure I covered all the ways of throwing errors in the code.
3065 Some functions throw ProgramErrors, some error messages.  It's still
3066 quite a mess, but we're getting closer.  The missing cases are mostly
3067 errors that cannot be fixed by the API client either or are a result
3068 of wrong usage, so are in any case fatal.
3070 One function, 'getModuleInfo', still returns a 'Maybe', but the
3071 documentation suggests it should always succeed.  So I may change that
3072 soon.
3074 The spit-up of of 'checkModule' has pros and cons.  The various forms
3075 of 'checkModule*' now become:
3077  checkAndLoadModule ms False ~~>
3078     loadModule =<< typecheckModule =<< parseModule (ms_mod_name ms)
3080  checkAndLoadModule ms True ~~>
3081    loadModule =<< desugarModule =<< typecheckModule =<< parseModule (ms_mod_name ms)
3083  checkModule mn False ~~>
3084    typecheckModule =<< parseModule mn
3086  checkModule mn True ~~>
3087    desugarModule =<< typecheckModule =<< parseModule mn
3089 The old APIs cannot easily be provided, since the result type would be
3090 different depending on the second argument.  However, a more
3091 convenient API can be modelled on top of these four functions
3092 ({parse,typecheck,desugar,load}Module).
3094[Use 'GhcMonad' in DriverPipeline.  Also haddockify a bit while we're at it.
3095Thomas Schilling <nominolo@googlemail.com>**20080914220628]
3096[Use 'GhcMonad' in HscMain.
3097Thomas Schilling <nominolo@googlemail.com>**20080914213655]
3098[Use 'GhcMonad' in DriverMkDepend.
3099Thomas Schilling <nominolo@googlemail.com>**20080914212113]
3100[Haddockify DynFlags (partial).
3101Thomas Schilling <nominolo@googlemail.com>**20080914211718]
3102[Haddockify 'IE'.
3103Thomas Schilling <nominolo@googlemail.com>**20080914210016]
3104[Provide accessors for 'ImportDecl'.
3105Thomas Schilling <nominolo@googlemail.com>**20080914205811]
3106[Start haddockifying 'HsBindLR'.
3107Thomas Schilling <nominolo@googlemail.com>**20080914205629]
3108[Document 'parseStaticFlags'.
3109Thomas Schilling <nominolo@googlemail.com>**20080914205316]
3110[Introduce 'GhcMonad' class and two default implementations 'Ghc' and 'GhcT'.
3111Thomas Schilling <nominolo@googlemail.com>**20080914204930
3113 This monad will be required by most public API calls.
3115[Give the "Failing due to -Werror" message a name.
3116Thomas Schilling <nominolo@googlemail.com>**20080914173904]
3117[Make typechecker top-level functions also return messages instead of
3118Thomas Schilling <nominolo@googlemail.com>**20080914173228
3119 printing them.
3121[Reflect changes of desugarer error reporting in VectMonad.
3122Thomas Schilling <nominolo@googlemail.com>**20080914172711]
3123[Generalise 'handleGhcException' to work with any 'ExceptionMonad'.
3124Thomas Schilling <nominolo@googlemail.com>**20080914172404]
3125[Introduce an 'ExceptionMonad' class.
3126Thomas Schilling <nominolo@googlemail.com>**20080914172154
3128 This monad provides variants of 'catch', 'bracket', and 'finally', so
3129 exceptions can be handled in monads that wrap IO.  The latter two
3130 methods need to be part of the class definition, because GHC uses
3131 'block' and 'unblock' which are used in the definition of those two
3132 methods for the IO monad.  A perhaps better class interface would
3133 consist of 'gcatch', 'gblock', and 'gunblock' and let the latter two
3134 default to 'id' like is done for non-GHC implementations of 'bracket'
3135 and 'finally'.
3137[Provide default MonadIO instance for IO.
3138Thomas Schilling <nominolo@googlemail.com>**20080914164245]
3139[Return instead of print warnings and errors in desugarer.
3140Thomas Schilling <nominolo@googlemail.com>**20080914163641]
3141[Return parser errors and warnings instead of dying.
3142Thomas Schilling <nominolo@googlemail.com>**20080914162644]
3143[Add aliases for bags of warnings and errors.
3144Thomas Schilling <nominolo@googlemail.com>**20080914160337]
3145[Slightly more helpful panic message in DynFlags
3146Tim Chevalier <chevalier@alum.wellesley.edu>**20080915080650]
3147[Comments only: ".core" => ".hcr"
3148Tim Chevalier <chevalier@alum.wellesley.edu>**20080914203645]
3149[We need to tell ghc-pkg to --force if we've only built a profiling library
3150Ian Lynagh <igloo@earth.li>**20080913153142]
3151[If we're profiling GHC, don't bother building the GHC package the vanilla way
3152Ian Lynagh <igloo@earth.li>**20080913144820]
3153[Remove the duplicate show rule in libraries/Makefile
3154Ian Lynagh <igloo@earth.li>**20080913144413]
3155[Move the "show" target from target.mk to boilerplate.mk
3156Ian Lynagh <igloo@earth.li>**20080913141312
3157 target.mk isn't included everywhere, but show is always handy
3159[Change how we detect if we are using the bootstrapping compiler or not
3160Ian Lynagh <igloo@earth.li>**20080913104658
3161 I think looking for $(GHC_COMPILER_DIR_ABS) was failing on the Windows
3162 buildbot due to different path separators. Now we just look for
3163 "inplace".
3165[wibble the distrib Makefile
3166Ian Lynagh <igloo@earth.li>**20080912135932
3167 We now need to install driver after ghc
3169[Reinstate the driver/ghc directory, to create a versioned GHC program
3170Ian Lynagh <igloo@earth.li>**20080912113619
3171 e.g. $(bindir)/ghc-6.9.20080911
3173[If USE_NEW_MKDEPEND_FLAGS is YES then don't use the deprecated -optdep flags
3174Ian Lynagh <igloo@earth.li>**20080912110316]
3175[Use --force-local when calling tar in bindisttest/
3176Ian Lynagh <igloo@earth.li>**20080912012855
3177 Otherwise it thinks that c:/foo is a remote file
3179[Fix #2586, bug in THUNK_SELECTORs (again)
3180Simon Marlow <marlowsd@gmail.com>**20080912130404
3181 This time, we had forgetten the write barrier in one place.
3183[TAG 2008-09-12 2
3184Ian Lynagh <igloo@earth.li>**20080912132848]
3185Patch bundle hash: