Ticket #932: inliner3.dpatch

File inliner3.dpatch, 223.0 KB (added by samb, 7 years ago)
Line 
1
2New patches:
3
4[Teach the inliner about primitive comparisons against constants
5Samuel Bronson <naesten@gmail.com>**20061010204301] {
6merger 0.0 (
7hunk ./compiler/coreSyn/CoreUnfold.lhs 39
8-import OccurAnal       ( occurAnalyseExpr )
9-import CoreUtils       ( exprIsHNF, exprIsCheap, exprIsTrivial )
10-import Id              ( Id, idType, isId,
11-                         idUnfolding, globalIdDetails
12-                       )
13-import DataCon         ( isUnboxedTupleCon )
14-import Literal         ( litSize )
15-import PrimOp          ( primOpIsDupable, primOpOutOfLine )
16-import IdInfo          ( GlobalIdDetails(..) )
17-import Type            ( isUnLiftedType )
18-import PrelNames       ( hasKey, buildIdKey, augmentIdKey )
19+import OccurAnal
20+import CoreUtils
21+import Id
22+import DataCon
23+import Literal
24+import PrimOp
25+import IdInfo
26+import Type
27+import PrelNames
28hunk ./compiler/coreSyn/CoreUnfold.lhs 44
29+import PrimOp           ( PrimOpInfo(..), primOpInfo )
30)
31hunk ./compiler/coreSyn/CoreUnfold.lhs 253
32-                        alts_size (foldr addSize sizeOne alt_sizes)    -- The 1 is for the scrutinee
33-                                  (foldr1 maxSize alt_sizes)
34-
35-               -- Good to inline if an arg is scrutinised, because
36-               -- that may eliminate allocation in the caller
37-               -- And it eliminates the case itself
38+        size_up_case v alts
39hunk ./compiler/coreSyn/CoreUnfold.lhs 255
40-       where
41-         alt_sizes = map size_up_alt alts
42-
43-               -- alts_size tries to compute a good discount for
44-               -- the case when we are scrutinising an argument variable
45-         alts_size (SizeIs tot tot_disc tot_scrut)             -- Size of all alternatives
46-                   (SizeIs max max_disc max_scrut)             -- Size of biggest alternative
47-               = SizeIs tot (unitBag (v, iBox (_ILIT 1 +# tot -# max)) `unionBags` max_disc) max_scrut
48-                       -- If the variable is known, we produce a discount that
49-                       -- will take us back to 'max', the size of rh largest alternative
50-                       -- The 1+ is a little discount for reduced allocation in the caller
51-         alts_size tot_size _ = tot_size
52+    -- We want things like >=# applied to a constant and a variable to be treated like cases over the variable.
53+    -- If you can come up with a better way, by all means do so!
54+    size_up (Case (App (App (Var fun) (Var v)) (Lit _)) _ _ alts)
55+        | v `elem` top_args, isComparePrim fun = size_up_case v alts
56+    size_up (Case (App (App (Var fun) (Lit _)) (Var v)) _ _ alts)
57+        | v `elem` top_args, isComparePrim fun = size_up_case v alts
58+         
59hunk ./compiler/coreSyn/CoreUnfold.lhs 280
60+
61hunk ./compiler/coreSyn/CoreUnfold.lhs 317
62+
63+    ------------
64+    size_up_case v alts =
65+                        alts_size (foldr addSize sizeOne alt_sizes)    -- The 1 is for the scrutinee
66+                                  (foldr1 maxSize alt_sizes)
67+
68+               -- Good to inline if an arg is scrutinised, because
69+               -- that may eliminate allocation in the caller
70+               -- And it eliminates the case itself
71+
72+       where
73+         alt_sizes = map size_up_alt alts
74+
75+               -- alts_size tries to compute a good discount for
76+               -- the case when we are scrutinising an argument variable
77+         alts_size (SizeIs tot tot_disc tot_scrut)             -- Size of all alternatives
78+                   (SizeIs max max_disc max_scrut)             -- Size of biggest alternative
79+               = SizeIs tot (unitBag (v, iBox (_ILIT 1 +# tot -# max)) `unionBags` max_disc) max_scrut
80+                       -- If the variable is known, we produce a discount that
81+                       -- will take us back to 'max', the size of rh largest alternative
82+                       -- The 1+ is a little discount for reduced allocation in the caller
83+         alts_size tot_size _ = tot_size
84hunk ./compiler/coreSyn/CoreUnfold.lhs 349
85+    -- Is this the Id of a comparison primitive?
86+    isComparePrim fun =
87+        case globalIdDetails fun of
88+        PrimOpId pid ->
89+            case primOpInfo pid of
90+            Compare {} -> True
91+            _          -> False
92+        _ -> False
93+                           
94hunk ./compiler/prelude/PrimOp.lhs 16
95+
96+        PrimOpInfo(..), primOpInfo,
97}
98
99[Merge imports
100Samuel Bronson <naesten@gmail.com>**20061011221237] {
101hunk ./compiler/coreSyn/CoreUnfold.lhs 39
102-import OccurAnal       ( occurAnalyseExpr )
103-import CoreUtils       ( exprIsHNF, exprIsCheap, exprIsTrivial )
104-import Id              ( Id, idType, isId,
105-                         idUnfolding, globalIdDetails
106-                       )
107-import DataCon         ( isUnboxedTupleCon )
108-import Literal         ( litSize )
109-import PrimOp          ( primOpIsDupable, primOpOutOfLine )
110-import IdInfo          ( GlobalIdDetails(..) )
111-import Type            ( isUnLiftedType )
112-import PrelNames       ( hasKey, buildIdKey, augmentIdKey )
113+import OccurAnal
114+import CoreUtils
115+import Id
116+import DataCon
117+import Literal
118+import PrimOp
119+import IdInfo
120+import Type
121+import PrelNames
122}
123
124[Count cased-over primops on the off chance that it will help
125Samuel Bronson <naesten@gmail.com>**20061018204652] {
126hunk ./compiler/coreSyn/CoreUnfold.lhs 255
127-    size_up (Case (App (App (Var fun) (Var v)) (Lit _)) _ _ alts)
128-        | v `elem` top_args, isComparePrim fun = size_up_case v alts
129-    size_up (Case (App (App (Var fun) (Lit _)) (Var v)) _ _ alts)
130-        | v `elem` top_args, isComparePrim fun = size_up_case v alts
131+    size_up (Case e@(App (App (Var fun) (Var v)) (Lit _)) _ _ alts)
132+        | v `elem` top_args, isComparePrim fun = size_up e `addSize` size_up_case v alts
133+    size_up (Case e@(App (App (Var fun) (Lit _)) (Var v)) _ _ alts)
134+        | v `elem` top_args, isComparePrim fun = size_up e `addSize` size_up_case v alts
135}
136
137[Unlifted args are only interesting when we know what they are
138Samuel Bronson <naesten@gmail.com>**20061028190313] {
139hunk ./compiler/simplCore/SimplUtils.lhs 48
140-import Type            ( Type, splitFunTys, dropForAlls, isStrictType,
141+import Type            ( Type, splitFunTys, dropForAlls, isStrictType, isUnLiftedType,
142hunk ./compiler/simplCore/SimplUtils.lhs 295
143+
144+interestingArg expr | isUnLiftedType (exprType expr) =
145+        -- Unlifted args are only ever interesting if we know what they are
146+                        case expr of
147+                        Lit lit -> True
148+                        _       -> False
149hunk ./compiler/simplCore/SimplUtils.lhs 310
150+-- Why isn't there a case for Cast?
151}
152
153Context:
154
155[Bump the HEAD to 6.7
156Ian Lynagh <igloo@earth.li>**20061024003553]
157[Clean up debugging code in RnNames
158Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20061023180503]
159[wibble in parseStaticFlags
160Simon Marlow <simonmar@microsoft.com>**20061023145817
161 should fix profiling and unreg in HEAD
162]
163[Improve error messages for indexed types
164Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20061022171212]
165[A little abstraction
166basvandijk@home.nl**20061019152328]
167[Fix handling of family instances in the presense of this doc stuff
168Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20061022004904
169 - Not sure whether I do the right thing, because I don't understand the
170   doc stuff.  However, the original code was definitely wrong and
171   breaking the renaming of family instance declarations.
172 - The important point is that in
173 
174     data instance T pats = rhs
175 
176   T is *not* a defining occurence of T (similarly as C is not a defining
177   occurence in "instance C Int").
178]
179[TAG 2006-10-22
180Ian Lynagh <igloo@earth.li>**20061022003640]
181[Fix parent position in RnNames.nubAvails
182Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20061021035829
183 - `RnNames.nubAvails', which amalgamates AvailInfo items that belong to the
184   same parent, needs to be careful that the parent name occurs first if it is
185   in the list of subnames at all.  (Otherwise, we can get funny export items
186   in ifaces.)
187 - I discovered this while debugging family import/exports, but I am pretty
188   sure the bug would also have shown up without using families under the
189   right circumstances.
190]
191[Fix export of associated families with new name parent story
192Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20061021002813
193 
194 Given
195 
196   module Exp (T)
197   where
198 
199   class C a where
200     data T a :: *
201 
202 we need the AvailInfo for the export item to be C|{T}, not just T.
203 This patch achieves that under the new name parent scheme.
204 
205]
206[Fix processing of imports involving ATs with the new name parent code
207Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20061020180442
208 
209 Associated types in import lists require special care and the new name
210 parent code broke that.  What's the problem?  in the presence of ATs
211 the name parent relation can have a depth of two (not just one as in H98).
212 Here is an example:
213 
214   class GMapKey a where
215     data GMap a :: * -> *
216   instance GMapKey Int where
217     data GMap Int v = GMapInt ...
218 
219 The data constructor GMapInt's parent is GMap whose parent in turn is the
220 class GMapKey; ie, GMapKey is GMapInt's grand parent.  In H98, data types
221 have no parents (which is in some places in the code represented by making
222 them their own parent).
223 
224 I fixed this by extending the information in filterImport's occ_env and
225 taking the case of associated types explicitly in consideration when
226 processing the various forms of IE items.
227 
228]
229[Fix family instance bug due to the name parent elimination
230Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20061019180103
231 - Its important that `isImplicitTyCon' considers
232   (a) associated families to be implicit, but
233   (b) considers family instances *not* to be implicit (for the same reasons
234       that a dfun is not implicit).
235]
236[Fix show-iface for family instances & add debug ppr for type declarations
237Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20061019165840]
238[Run dos2unix on all the outputs, and don't let it eat stderr
239Ian Lynagh <igloo@earth.li>**20061019134818]
240[Fix stage1 build with 6.2.1 (from Andy Gill)
241Ian Lynagh <igloo@earth.li>**20061019000807]
242[Fix the build with GHC 6.2.2
243Ian Lynagh <igloo@earth.li>**20061018230555]
244[Cross-module consistency check for family instances
245Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20061018221300]
246[Fixed spelling error in compiler/ghci/InteractiveUI.hs and docs/users_guide/ghci.xml
247basvandijk@home.nl**20061011204301]
248[Fix a bug in Lint (which wrongly complained when compiling Data.Sequence with -02)
249simonpj@microsoft.com**20061018120500]
250[Add the primitive type Any, and use it for Dynamics
251simonpj@microsoft.com**20061018115658
252 
253 GHC's code generator can only enter a closure if it's guaranteed
254 not to be a function.  In the Dynamic module, we were using the
255 type (forall a.a) as the type to which the dynamic type was unsafely
256 cast:
257        type Obj = forall a.a
258 
259 Gut alas this polytype was sometimes instantiated to (), something
260 like this (it only bit when profiling was enabled)
261        let y::() = dyn ()
262        in (y `cast` ..) p q
263 As a result, an ASSERT in ClosureInfo fired (hooray).
264 
265 I've tided this up by making a new, primitive, lifted type Any, and
266 arranging that Dynamic uses Any, thus:
267        type Obj = ANy
268 
269 While I was at it, I also arranged that when the type checker instantiates
270 un-constrained type variables, it now instantiates them to Any, not ()
271        e.g.  length Any []
272 
273 [There remains a Horrible Hack when we want Any-like things at arbitrary
274 kinds.  This essentially never happens, but see comments with
275 TysPrim.mkAnyPrimTyCon.]
276 
277 Anyway, this fixes Trac #905
278 
279]
280[Add comment about arity
281simonpj@microsoft.com**20061018112418
282 
283 I'm not sure what the significance of the "arity" of a primtive
284 TyCon is.  They aren't necessarily saturated, so it's not that.
285 
286 I rather think that arity is only relevant for
287        SynTyCon
288        AlgTyCon
289        CoercionTyCon
290 
291 This comment (and commit message) is just an aide memoire.
292 
293]
294[Spelling in comment
295simonpj@microsoft.com**20061018112351]
296[Minor refactoring
297simonpj@microsoft.com**20061018112320]
298[Comments onl
299simonpj@microsoft.com**20061018112235]
300[fix build for 6.4.x and 6.6.x
301Simon Marlow <simonmar@microsoft.com>**20061018080526]
302[compensate for gmp/configure sometimes not being executable
303Simon Marlow <simonmar@microsoft.com>**20061017132215]
304[Rejig TABLES_NEXT_TO_CODE: the -unreg flag was broken by earlier changes
305Simon Marlow <simonmar@microsoft.com>**20061017094435
306 A GHC binary can generally build either registerised or unregisterised
307 code, unless it is unregisterised only. 
308 
309 The previous changes broke this, but I think I've now restored it.
310 
311]
312[Stage 2 fix to "Keep track of family instance modules"
313Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20061016194048]
314[remove use of FiniteMap, use Text.Printf
315Simon Marlow <simonmar@microsoft.com>**20061016151935]
316[fix a regular expression in banner_re
317Simon Marlow <simonmar@microsoft.com>**20061016150802]
318[Don't squish "Inlined fn" into the right margin quite as much in trace output
319Samuel Bronson <naesten@gmail.com>**20061016130004]
320[Fix build on x86_64
321Simon Marlow <simonmar@microsoft.com>**20061016112045
322 
323]
324[Fix deadlock on second call to newSession
325Simon Marlow <simonmar@microsoft.com>**20061016111741
326 Tracked down by Krasimir Angelov
327]
328[Build the GHC package in stage 3 too
329Simon Marlow <simonmar@microsoft.com>**20061016110926
330 This fixes the problem with the nightly builds not including the GHC
331 package.
332]
333[more fixups to make a stage 3 build do the right thing with the ghc package
334Simon Marlow <simonmar@microsoft.com>**20061013135318]
335[use the correct $(HC)
336Simon Marlow <simonmar@microsoft.com>**20061013134443]
337[remove unused origPkgIdMap field from PackageState
338Simon Marlow <simonmar@microsoft.com>**20061006105148]
339[Cache the package database the first time it is read
340Simon Marlow <simonmar@microsoft.com>**20061006104221
341 This was a slight oversight on my part, I intended to store the
342 pristine database in the pkgDatabase of DynFlags, but managed to
343 forget to do it.
344]
345[fix non-DEBUG build (probably my fault, sorry)
346Simon Marlow <simonmar@microsoft.com>**20061016105852]
347[Add assertion checks for mkCoVar/mkTyVar
348simonpj@microsoft.com**20061013162434
349 
350 A type variable has a flag saying whether it is a *type* variable or
351 a *coercion* variable.  This patch adds assertions to check the flag.
352 
353 And it adds fixes to places which were Wrong (and hence fired the
354 assertion)!
355 
356 Also removed isCoVar from Coercion, since it's done by Var.isCoVar.
357 
358 
359 
360]
361[Uncomment code to emit a space in place of a '>' in literate scripts
362Ian Lynagh <igloo@earth.li>**20061013131514
363 This fixes trac #210. Test is read041.
364]
365[Change type of TcGadt.refineType, plus consequences
366simonpj@microsoft.com**20061013115801]
367[Try to get the right output for nofib-analyse
368Samuel Bronson <naesten@gmail.com>**20061014175855]
369[Get nofib-analyse to build with 6.4 at least...
370Samuel Bronson <naesten@gmail.com>**20061014163442]
371[More refactoring in RnNames
372simonpj@microsoft.com**20061013094230
373 
374 I rather self-indulgently spent a chunk of yesterday working on
375 refactoring RnNames further.  The result is significantly simpler:
376 
377 * A GlobalRdrElt gets an extra field, gre_par, which records
378   the parent (if any) of the name
379 
380 * ImportAvails has two fields deleted: imp_env and imp_parent.
381   The information provided by these fields was only used when
382   processing the export list; and the same information is now readily
383   generated from the GlobalRdrElts in the GlobalRdrEnv
384 
385 I also did some tidying up; notably moving AvailEnv stuff from
386 TcRnTypes to RnNames.
387 
388 The result is tha the compiler is some 130 lines shorter than before
389 
390]
391[Keep track of family instance modules
392Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20061013004223
393 - Now each modules carries
394   (1) a flag saying whether it contains family instance declarations and
395   (2) a list of all modules further down in the import tree that contain
396       family instance declarations.
397   (The information is split into these two parts for the exact same reasons why
398   the info about orphan modules is split, too.)
399 - This is the first step to *optimised* overlap checking of family instances
400   coming from imported modules.
401 
402 *** WARNING: This patch changes the interface file format! ***
403 ***          Recompile libraries and stage2 from scratch!  ***
404]
405[Overlap check for family instances def'd in current module
406Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20061012203737
407 - All family instances are checked for overlap when entered into TcGblEnv.
408   Their are checked against all instances in the EPS and those currently in
409   the TcGblEnv.
410]
411[Comments only
412simonpj@microsoft.com**20061012160254]
413[Make Inst into a record type to ease subsequent changes
414simonpj@microsoft.com**20061011112305]
415[Improve pretty-printing slightly
416simonpj@microsoft.com**20061011112242]
417[Add comments about primop rules
418simonpj@microsoft.com**20061011112224]
419[fix definition of fib in example code
420Simon Marlow <simonmar@microsoft.com>*-20061012110711]
421[Track changes in source packaging scheme
422sven.panne@aedion.de**20061012121213]
423[fix definition of fib in example code
424Simon Marlow <simonmar@microsoft.com>**20061012110711]
425[Partially fix GHCi when unregisterised
426Ian Lynagh <igloo@earth.li>**20061012013901
427 We were constructing info tables designed for TABLES_NEXT_TO_CODE,
428 but were building without TABLES_NEXT_TO_CODE.
429 
430 This patch also fixes a bug when we are unregisterised on amd64 and
431 have code with an address above 2^32.
432]
433[More import tidying and fixing the stage 2 build
434Simon Marlow <simonmar@microsoft.com>**20061011200110]
435[Use relative URLs when referring to libraries; push to 6.6 branch
436simonpj@microsoft.com**20061011142502]
437[Improve documentation of concurrent and parallel Haskell; push to branch
438simonpj@microsoft.com**20061010155834]
439[Correct id to linkend
440simonpj@microsoft.com**20061010155814]
441[Fix trac #921: generate *q instructions for int-float conversions
442Ian Lynagh <igloo@earth.li>**20061011140007
443 We need to generate, e.g., cvtsi2sdq rather than cvtsi2sd on amd64 in
444 order to have int-float conversions work correctly for values not
445 correctly representable in 32 bits.
446]
447[Module header tidyup #2
448Simon Marlow <simonmar@microsoft.com>**20061011143523
449 Push this further along, and fix build problems in the first patch.
450]
451[remove BitSet, it isn't used
452Simon Marlow <simonmar@microsoft.com>**20061011131614]
453[Module header tidyup, phase 1
454Simon Marlow <simonmar@microsoft.com>**20061011120517
455 This patch is a start on removing import lists and generally tidying
456 up the top of each module.  In addition to removing import lists:
457 
458    - Change DATA.IOREF -> Data.IORef etc.
459    - Change List -> Data.List etc.
460    - Remove $Id$
461    - Update copyrights
462    - Re-order imports to put non-GHC imports last
463    - Remove some unused and duplicate imports
464]
465[Interface file optimisation and removal of nameParent
466Simon Marlow <simonmar@microsoft.com>**20061011120518
467 
468 This large commit combines several interrelated changes:
469 
470   - IfaceSyn now contains actual Names rather than the special
471     IfaceExtName type.  The binary interface file contains
472     a symbol table of Names, where each entry is a (package,
473     ModuleName, OccName) triple.  Names in the IfaceSyn point
474     to entries in the symbol table.
475 
476     This reduces the size of interface files, which should
477     hopefully improve performance (not measured yet).
478 
479     The toIfaceXXX functions now do not need to pass around
480     a function from Name -> IfaceExtName, which makes that
481     code simpler.
482 
483   - Names now do not point directly to their parents, and the
484     nameParent operation has gone away.  It turned out to be hard to
485     keep this information consistent in practice, and the parent info
486     was only valid in some Names.  Instead we made the following
487     changes:
488 
489     * ImportAvails contains a new field
490           imp_parent :: NameEnv AvailInfo
491       which gives the family info for any Name in scope, and
492       is used by the renamer when renaming export lists, amongst
493       other things.  This info is thrown away after renaming.
494 
495     * The mi_ver_fn field of ModIface now maps to
496       (OccName,Version) instead of just Version, where the
497       OccName is the parent name.  This mapping is used when
498       constructing the usage info for dependent modules.
499       There may be entries in mi_ver_fn for things that are not in
500       scope, whereas imp_parent only deals with in-scope things.
501 
502     * The md_exports field of ModDetails now contains
503       [AvailInfo] rather than NameSet.  This gives us
504       family info for the exported names of a module.
505 
506 Also:
507 
508    - ifaceDeclSubBinders moved to IfaceSyn (seems like the
509      right place for it).
510 
511    - heavily refactored renaming of import/export lists.
512 
513    - Unfortunately external core is now broken, as it relied on
514      IfaceSyn.  It requires some attention.
515]
516[add extendNameEnvList_C
517Simon Marlow <simonmar@microsoft.com>**20061010153137]
518[getMainDeclBinder should return Nothing for a binding with no variables
519Simon Marlow <simonmar@microsoft.com>**20061010153023
520 See test rn003
521 
522]
523[Use ":Co", not "Co" to prefix coercion TyCon names
524Simon Marlow <simonmar@microsoft.com>**20061010134449
525 Avoid possibility of name clash
526]
527[Fix another hi-boot file
528Ian Lynagh <igloo@earth.li>**20061010235157]
529[Removed unused unwrapFamInstBody from MkId
530Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20061010205843]
531[Rejig the auto-scc wrapping stuff
532simonpj@microsoft.com**20061010164116]
533[Do not filter the type envt after each GHCi stmt
534simonpj@microsoft.com**20061010143225
535 
536 Fixes Trac #925
537 
538 A new comment in TcRnDriver in tcRnStmt reads thus:
539 
540 At one stage I removed any shadowed bindings from the type_env;
541 they are inaccessible but might, I suppose, cause a space leak if we leave them there.
542 However, with Template Haskell they aren't necessarily inaccessible.  Consider this
543 GHCi session
544         Prelude> let f n = n * 2 :: Int
545         Prelude> fName <- runQ [| f |]
546         Prelude> $(return $ AppE fName (LitE (IntegerL 7)))
547         14
548         Prelude> let f n = n * 3 :: Int
549         Prelude> $(return $ AppE fName (LitE (IntegerL 7)))
550 In the last line we use 'fName', which resolves to the *first* 'f'
551 in scope. If we delete it from the type env, GHCi crashes because
552 it doesn't expect that.
553 
554 
555]
556[Fail more informatively when a global isn't in the type environment
557simonpj@microsoft.com**20061010143145]
558[Rough matches for family instances
559Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20061010044656
560 - Class and type family instances just got a lot more similar.
561 - FamInst, like Instance, now has a rough match signature.  The idea is the
562   same: if the rough match doesn't match, there is no need to pull in the while
563   tycon describing the instance (from a lazily read iface).
564 - IfaceFamInst changes in a similar way and the list of all IFaceFamInsts is
565   now written into the binary iface (as for class instances), as deriving it
566   from the tycon (as before) would render the whole rough matching useless.
567 - As a result of this, the plumbing of class instances and type instances
568   through the various environments, ModIface, ModGuts, and ModDetails is now
569   almost the same.  (The remaining difference are mostly because the dfun of a
570   class instance is an Id, but type instance refer to a TyCon, not an Id.)
571 
572 *** WARNING: The interface file format changed! ***
573 ***         Rebuild from scratch.              ***
574]
575[Tweaks and missing case in disassembler
576Ian Lynagh <igloo@earth.li>**20061009230539]
577[Update hi-boot files to fix building with old GHCs
578Ian Lynagh <igloo@earth.li>**20061009193218]
579[STM invariants
580tharris@microsoft.com**20061007122907]
581[Fix unregisterised alpha builds
582Ian Lynagh <igloo@earth.li>**20061004125857]
583[Comments and an import-trim
584simonpj@microsoft.com**20061006161403]
585[Mention that the module sub-directory structure for .o and .hi files is created automatically by GHC
586simonpj@microsoft.com**20061006151234]
587[Bale out before renamer errors are duplicated
588simonpj@microsoft.com**20061006140250
589 
590 With the new Haddock patch, renamer errors can be duplicated;
591 so we want to bale out before doing the Haddock stuff if errors
592 are found.
593 
594 (E.g test mod67 shows this up.)
595 
596]
597[Avoid repeatedly loading GHC.Prim
598simonpj@microsoft.com**20061006140102
599 
600 This patch changes HscTypes.lookupIfaceByModule.  The problem was that
601 when compiling the 'base' package, we'd repeatedly reload GHC.Prim.
602 This is easily fixed by looking in the PIT too. A comment with
603 lookupIfaceByModule explains
604 
605]
606[Print the 'skipping' messages at verbosity level 1
607simonpj@microsoft.com**20061006140034]
608[Fix up the typechecking of interface files during --make
609simonpj@microsoft.com**20061006131932
610 
611 This patch fixes Trac #909.  The problem was that when compiling
612 the base package, the handling of wired-in things wasn't right;
613 in TcIface.tcWiredInTyCon it repeatedly loaded GHC.Base.hi into the
614 PIT, even though that was the very module it was compiling.
615 
616 The main fix is by introducing TcIface.ifCheckWiredInThing.
617 
618 But I did some minor refactoring as well.
619 
620]
621[Import trimming
622simonpj@microsoft.com**20061006131830]
623[Figure out where the rest of the repositories are, based on defaultrepo
624Simon Marlow <simonmar@microsoft.com>**20061006100049
625 This is a slight improvement over the patch sent by jamey@minilop.net,
626 we now do it properly if the source repo was a GHC tree on the local
627 filesystem too.
628 
629 Merge post 6.6.
630]
631[Yet another fix to mkAtomicArgs (for floating of casts)
632simonpj@microsoft.com**20061006075213
633 
634 Comment Note [Take care] explains.
635 
636 mkAtomicArgs is a mess.  A substantial rewrite of Simplify is needed.
637 
638]
639[Improve comments and error tracing
640simonpj@microsoft.com**20061006075058]
641[Improve error message
642simonpj@microsoft.com**20061006072002]
643[Undo an accidentally-committed  patch by Audrey
644simonpj@microsoft.com**20061006071925]
645[Merge Haddock comment support from ghc.haddock -- big patch
646davve@dtek.chalmers.se**20061005220258]
647[Remove casts from lvalues to allow compilation under GCC 4.0
648brianlsmith@gmail.com**20060929185931]
649[Correct the float-coercions-out-of-let patch
650simonpj@microsoft.com**20061005161819]
651[Merge changes
652Ian Lynagh <igloo@earth.li>**20061005150630]
653[Improve the correlation betweens documented and existent options
654Ian Lynagh <igloo@earth.li>**20061003220354]
655[Document -dfaststring-stats
656Ian Lynagh <igloo@earth.li>**20061003154147]
657[Rearrange docs to have all the -ddump-* options together
658Ian Lynagh <igloo@earth.li>**20061003153422]
659[Remove unused option -femit-extern-decls
660Ian Lynagh <igloo@earth.li>**20061003145854]
661[Documentation updates
662Ian Lynagh <igloo@earth.li>**20061003142658]
663[Fix typo
664Ian Lynagh <igloo@earth.li>**20061003121926]
665[More bootstrapping updates
666Ian Lynagh <igloo@earth.li>**20061005145629]
667[TAG 2006-10-05
668Lemmih <lemmih@gmail.com>**20061005150234]
669[Teach SpecConstr about Cast
670simonpj@microsoft.com**20061005143624
671 
672 This patch teaches SpecConstr about casts; see Note [SpecConstr for casts]
673 
674]
675[Float coercions out of lets
676simonpj@microsoft.com**20061005132437
677 
678 Note [Float coercions]
679 ~~~~~~~~~~~~~~~~~~~~~~
680 When we find the binding
681        x = e `cast` co
682 we'd like to transform it to
683        x' = e
684        x = x `cast` co         -- A trivial binding
685 There's a chance that e will be a constructor application or function, or something
686 like that, so moving the coerion to the usage site may well cancel the coersions
687 and lead to further optimisation.  Example:
688 
689      data family T a :: *
690      data instance T Int = T Int
691 
692      foo :: Int -> Int -> Int
693      foo m n = ...
694         where
695           x = T m
696           go 0 = 0
697           go n = case x of { T m -> go (n-m) }
698                -- This case should optimise
699 
700 
701]
702[Remove unused argument to mkAtomicArgs
703simonpj@microsoft.com**20061005130752]
704[Comments and layout
705simonpj@microsoft.com**20061005130723]
706[Remove unused OccInfo (simplification)
707simonpj@microsoft.com**20061005130327
708 
709 The substitution used to carry "fragile" OccInfo to call sites via the
710 DoneId constructor of SimplEnv.SimplSR.  This was always a tricky thing
711 to do, and for some time I've been removing the need for it.
712 
713 Now at last I think we can nuke it altogether.  Hooray.
714 
715 I did a full nonfib run, and got zero perf changes.
716 
717]
718[Take 2 on the recursive-rule fix
719simonpj@microsoft.com**20061005121023
720 
721 This is another attempt to fix the interaction between recursion and
722 RULES.  I just had it wrong before!  Now the significance of the
723 flag on IAmALoopBreaker is given in BasicTypes
724 
725   | IAmALoopBreaker    -- Used by the occurrence analyser to mark loop-breakers
726                        -- in a group of recursive definitions
727        !RulesOnly      -- True <=> This loop breaker mentions the other binders
728                        --          in its recursive group only in its RULES, not
729                        --          in its rhs
730                        --  See OccurAnal Note [RulesOnly]
731 
732]
733[Take advantage of non-rec-ness in occurrence analysis (minor)
734simonpj@microsoft.com**20061005105721]
735[Spelling in comment
736simonpj@microsoft.com**20061005105640]
737[Add intersectsUFM
738simonpj@microsoft.com**20061005105615]
739[Made 'for' a special ID in the grammar.
740bjorn@bringert.net**20060921052053]
741[Merged stand-alone deriving with FC stuff.
742bjorn@bringert.net**20060920223917]
743[First documentation on stand-alone instance deriving.
744bjorn@bringert.net**20060919010606]
745[Fixed source location and instance origin in stand-alone deriving error messages.
746bjorn@bringert.net**20060919010535]
747[Added type signature for tcSplitSigmaTy.
748bjorn@bringert.net**20060918230925]
749[New syntax for stand-alone deriving. Implemented fully.
750bjorn@bringert.net**20060918230854]
751[Renamer part of stand-alone deriving extension.
752bjorn@bringert.net**20060917215420]
753[Added parser and abstract syntax support for stand-alone deriving declarations.
754bjorn@bringert.net**20060917000956]
755[Comments only
756simonpj@microsoft.com**20061004211015]
757[Fix comment in RdrName
758simonpj@microsoft.com**20061004210845]
759[Improve unboxing of strict fields
760simonpj@microsoft.com**20061004152705
761 
762 Note [Recursive unboxing]
763 ~~~~~~~~~~~~~~~~~~~~~~~~~
764 Be careful not to try to unbox this!
765        data T = MkT !T Int
766 But it's the *argument* type that matters. This is fine:
767        data S = MkS S !Int
768 because Int is non-recursive.
769 
770 
771 Before this patch, we were only doing the unboxing if the *parent*
772 data type was non-recursive (eg that meant S was not unboxed), but
773 that is over-conservative.
774 
775 This showed up with indexed data types (thanks to Roman for finding it)
776 because indexed data types are conservatively regarded as always recursive.
777 
778]
779[Remove redundant dump
780simonpj@microsoft.com**20061004152614]
781[Trim imports
782simonpj@microsoft.com**20061004152521]
783[Improve liberate-case to take account of coercions
784simonpj@microsoft.com**20061004135155
785 
786 Note [Scrutinee with cast]
787 ~~~~~~~~~~~~~~~~~~~~~~~~~~
788 Consider this:
789     f = \ t -> case (v `cast` co) of
790                 V a b -> a : f t
791 
792 Exactly the same optimistaion (unrolling one call to f) will work here,
793 despite the cast.  See mk_alt_env in the Case branch of libCase.
794 
795 This patch does the job.  For a change, it was really easy.
796 
797]
798[Remvove totally unused static flags
799simonpj@microsoft.com**20061004124826]
800[Remove ILX from the GHC altogether (although I left the source file IlxGen in case anyone wants to see it)
801simonpj@microsoft.com**20061004123242]
802[-frule-check is not a static flag
803simonpj@microsoft.com**20061004123222]
804[Tidy tyvar OccNames in TcTyClDecl
805simonpj@microsoft.com**20061004121239
806 
807 We want the universal and existential tyvars of a data constructor to
808 have distinct OccNames.  It's confusing if they don't (in error messages,
809 for example), and with the current way of generating IfaceSyn, it actally
810 generates bogus interface files.  (Which bit Roman.)
811 
812 When IfaceSyn is full of Names, this won't matter so much, but it still
813 seems cleaner.
814 
815 This patch adds a 'tidy' step to the generation of DataCon type
816 variables in TcTyClDecls.tcResultType
817 
818]
819[Improve pretty printing slightly
820simonpj@microsoft.com**20061004121224]
821[Second bite at the rules-only idea
822simonpj@microsoft.com**20061004111000
823 
824 This is part 2 of the patch that improved the interaction of RULES and
825 recursion.  It's vital that all Ids that may be referred to from later in
826 the module are marked 'IAmALoopBreaker' because otherwise we may do
827 postInlineUnconditionally, and lose the binding altogether.
828 
829 So I've added a boolean rules-only flag to IAmALoopBreaker.  Now we can
830 do inlining for rules-only loop-breakers.
831 
832]
833[Eliminate case-of-cast
834simonpj@microsoft.com**20061004110741
835 
836 Note [Case of cast]
837 ~~~~~~~~~~~~~~~~~~~
838 Consider       case (v `cast` co) of x { I# ->
839                ... (case (v `cast` co) of {...}) ...
840 We'd like to eliminate the inner case.  We can get this neatly by
841 arranging that inside the outer case we add the unfolding
842        v |-> x `cast` (sym co)
843 to v.  Then we should inline v at the inner case, cancel the casts,
844 and away we go
845       
846 This patch does the job, fixing a performance hole reported by Roman.
847 
848]
849[Fixes for the porting process for 6.6
850Ian Lynagh <igloo@earth.li>**20061003124232]
851[Make recursion and RULES interact better
852simonpj@microsoft.com**20061003153057
853 
854 See Trac #683
855 
856 This patch improves the interaction of recursion and RULES; at least I
857 hope it does.   The problem was that a RULE was being treated uniformly like
858 an "extra RHS". This worked badly when you have a non-recursive definition
859 that is made recursive only by RULE.
860 
861 This patch maeks the occurrence analyser know whether a binder is referred to
862 only from RULES (the RulesOnly constructor in OccInfo).  Then we can ignore
863 such edges when deciding on the order of bindings in a letrec, and when
864 setting the LoopBreaker flag.
865 
866 The remaining potential problem is this:
867        rec{ f = ...g...
868           ; g = ...f...
869             RULE g True = ...
870           }
871 
872 The RULE for g may not be visible in f's rhs.  This is fixable, but not
873 today.
874 
875 
876]
877[Warning police only
878simonpj@microsoft.com**20061003134414]
879[Fix scoped type variables for expression type signatures
880simonpj@microsoft.com**20061003134056
881 
882 I had forgotten to bring scoped type variables into scope at an expression
883 type signature, such as
884        e :: forall s. <type>
885 where 's' should scope over the expression e.
886 
887 Like everything to do with scoped type variables, fixing this took an
888 unreasonable amount of work.  I'm sure there must be a better way to
889 achitect this!
890 
891 I updated the user manual too.
892 
893 A test is tc213.
894 
895 It would be good to push this into 6.6.1
896 
897]
898[Trim imports
899simonpj@microsoft.com**20061003133845]
900[Add error check for operators in types
901simonpj@microsoft.com**20061003082805
902 
903 Fixes Trac #919
904 
905]
906[Add a C++ phase. Fixes bug #800
907Lemmih <lemmih@gmail.com>**20060727080023]
908[Latin-1-to-UTF8 pre-processor example for docs from Christian Maeder
909Ian Lynagh <igloo@earth.li>**20061001010700]
910[add :edit to the release notes, and improve the docs a bit
911Simon Marlow <simonmar@microsoft.com>**20060929112108]
912[Simplify the way in which the coKindFun in CoercionTyCon is handled
913simonpj@microsoft.com**20060929222845
914 
915 Before the coKindFun could be applied to too many arguments;
916 now it expects exactly the right number of arguments.  That
917 makes it easier to write the coKindFuns, and localises the work.
918 
919]
920[Match let before lambda in rule-matching (see comment with Lam case of Rules.match)
921simonpj@microsoft.com**20060929222645]
922[Fix bug in SCRIPT_SHELL patch (| should be ||)
923simonpj@microsoft.com**20060929222433]
924[Add missing case for EqPred
925simonpj@microsoft.com**20060929165118]
926[Amplify scoped tyvar changes
927simonpj@microsoft.com**20060929165038]
928[Update release notes
929simonpj@microsoft.com**20060929122855]
930[Remove Linear Implicit Parameters, and all their works
931simonpj@microsoft.com**20060929160717
932 
933 Linear implicit parameters have been in GHC quite a while,
934 but we decided they were a mis-feature and scheduled them for
935 removal.  This patch does the job.
936 
937]
938[Global renamings in HsSyn
939simonpj@microsoft.com**20060929143910]
940[Improve pretty-printing of Core
941simonpj@microsoft.com**20060929133549]
942[Another correction to the (subtle) exprIsConApp_maybe
943simonpj@microsoft.com**20060929133512]
944[Spelling correction
945simonpj@microsoft.com**20060929123644]
946[Improve pretty printing of IfaceSyn
947simonpj@microsoft.com**20060929123355]
948[Improve unification error messages (again) (push to 6.6 branch)
949simonpj@microsoft.com**20060929122010]
950[:edit runs notepad by default on Windows
951Simon Marlow <simonmar@microsoft.com>**20060929102739]
952[unbreak :edit patch on Windows
953Simon Marlow <simonmar@microsoft.com>**20060928155951]
954[Fix #906, and do #914 while I'm in here (it wasn't too hard)
955Simon Marlow <simonmar@microsoft.com>**20060928151705]
956[Add basic :edit support
957Simon Marlow <simonmar@microsoft.com>**20060928135156
958 Without jumping to line numbers or %-expansion, we could add that later.
959]
960[tiny fix in porting docs I just spotted
961Simon Marlow <simonmar@microsoft.com>**20060928105611]
962[only make stdin/stdout unbuffered in GHCi, not runghc or ghc -e.
963Simon Marlow <simonmar@microsoft.com>**20060928105403]
964[testsuite *is* boring
965Simon Marlow <simonmar@microsoft.com>**20060928105342]
966[fix typo in comment
967Andres Loeh <mail@andres-loeh.de>**20060914235648]
968[remove non-boring directories
969Norman Ramsey <nr@eecs.harvard.edu>**20060915234902]
970[Modify toArgs to parse quotes/escapes like /bin/sh
971rjmccall@gmail.com**20060917003641
972 Addresses ticket #197, which asks for escape sequences to be supported directly (i.e.
973 not only in dquoted strings) on :load commands in GHCI.  Fix modifies the toArgs
974 function to parse its input like /bin/sh does, i.e. recognizing escapes anywhere
975 and treating quoted strings as atomic chunks.  Thus:
976   :load a\ b c\"d e" "f
977 would parse with three arguments, namely 'a b', 'c"d', and 'e f'.
978 
979 toArgs is used to parse arguments for both :load and :main, but doesn't appear to
980 be used elsewhere.  I see no harm in modifying both to be consistent -- in fact,
981 the functionality is probably more useful for :main than for :load.
982]
983[Fix mulIntMayOflo on 64-bit arches; fixes trac #867
984Ian Lynagh <igloo@earth.li>**20060928004806
985 We were assuming we could multiply 2 32-bit numbers without overflowing
986 a 64-bit number, but we can't as the top bit is the sign bit.
987]
988[Handle clock_gettime failing
989Ian Lynagh <igloo@earth.li>**20060927234630]
990[Change default repo root for the 6.6 branch
991Ian Lynagh <igloo@earth.li>*-20060902174936]
992[Tell the 6.6 branch where to find extralibs
993Ian Lynagh <igloo@earth.li>*-20060906124640]
994[Rename -no-recomp to -fforce-recomp, and document it
995Simon Marlow <simonmar@microsoft.com>**20060927132707]
996[Make printing of binding results optional in GHCi, and document it
997Simon Marlow <simonmar@microsoft.com>**20060927132550
998 You can say :set -fno-print-bind-result in GHCi to disable this behaviour.
999 Addresses #887
1000]
1001[Tell the 6.6 branch where to find extralibs
1002Ian Lynagh <igloo@earth.li>**20060906124640]
1003[Change default repo root for the 6.6 branch
1004Ian Lynagh <igloo@earth.li>**20060902174936]
1005[Fix exprIsConApp_maybe (wasn't dealing properly with the EqSpec of the DataCon)
1006simonpj@microsoft.com**20060927125308]
1007[unbreak mingw-on-cygwin (/=MSYS) builds
1008sof@galois.com**20060926165631]
1009[Add source code links to Haddock docs
1010Simon Marlow <simonmar@microsoft.com>**20060908112725
1011 
1012 Right now we can only manage to add a source code link for the module,
1013 but that's better than nothing.
1014 
1015 I had to put the list of core packages in a Makefile variable,
1016 $(CorePackages), so we'll have to be careful to keep this up to date.
1017 (I could have slurped it out of libraries/core-packages with $(shell),
1018 but that's ugly and really slow on Windows).
1019 
1020 There are a couple of new tweakables: CorePackageSourceURL and
1021 ExtraPackageSourceURL in config.mk.in, set these to the appropriate
1022 patterns for generating source links.
1023 
1024 (when we merge this patch onto the HEAD we'll have to tweak these
1025 settings).
1026 
1027 Unfortunately it still doesn't work for all the modules, because
1028 modules compiled without -cpp don't get any #line directives.  More
1029 hackery required...
1030]
1031[Fix derived instances (again); prevents infinite superclass loop
1032simonpj@microsoft.com**20060926144230]
1033[Various documentation improvements suggested by Bulat Ziganshin
1034Ian Lynagh <igloo@earth.li>**20060925231855]
1035[Fix comment/code inconsistency spotted by Bulat Ziganshin
1036Ian Lynagh <igloo@earth.li>**20060925195925
1037 I'm not sure if this is the example that was intended, but it's at least
1038 now consistent.
1039]
1040[rejig library include/ files
1041sof@galois.com**20060925232125]
1042[Fix newtype deriving properly (un-doing Audreys patch)
1043simonpj@microsoft.com**20060925121351
1044 
1045 The newtype-deriving mechanism generates a HsSyn case expression looking
1046 like this
1047        case (d `cast` co) of { ... }
1048 That is, the case expression scrutinises a dictionary.  This is
1049 otherwise never seen in HsSyn, and it made the desugarer
1050 (Check.get_unused_cons) crash in tcTyConAppTyCon.
1051 
1052 It would really be better to generate Core in TcInstDecls (the newtype
1053 deriving part) but I'm not going to do that today.  Instead, I made
1054 Check.get_unused_cons a bit more robust.
1055 
1056 Audrey tried to fix this over the weekend, but her fix was, alas, utterly
1057 bogus, which caused mysterious failures later.  I completely undid this
1058 change.
1059 
1060 Anyway it should work now!
1061 
1062]
1063[Document -F in the flag reference
1064Ian Lynagh <igloo@earth.li>**20060925134816]
1065[Added Darwinports path to DocBook XSL stylesheets to configure.
1066bjorn@bringert.net**20060918232831]
1067[Comment-only: Fix a typo, and note that the PredTy case on SplitTyConApp_maybe was added as a kluge.
1068audreyt@audreyt.org**20060924123151]
1069[In tcSplittyConApp_maybe, add the PredTy case
1070audreyt@audreyt.org**20060924063208
1071 such that this can compile again:
1072 
1073     newtype Moose = MkMoose () deriving (Eq, Ord)
1074 
1075]
1076[Fixed DocBook XML once again, "make validate" is your friend!
1077sven.panne@aedion.de**20060923165045]
1078[Trim more imports
1079simonpj@microsoft.com**20060923072509]
1080[Fix origin for addDataConStupidTheta
1081simonpj@microsoft.com**20060923072407]
1082[Remove ASSERT from mkDataCon, and add comments to explain why
1083simonpj@microsoft.com**20060923053053]
1084[The unboxed tuple kind is (#), not (##)
1085simonpj@microsoft.com**20060923043130]
1086[Complete definition of cmPredX to take account of EqPred
1087simonpj@microsoft.com**20060923042934]
1088[Correct crucial typo in isSubKind (kc1 -> kc2)!
1089simonpj@microsoft.com**20060923042829]
1090[Re-work the newtype-deriving support
1091simonpj@microsoft.com**20060923040505
1092 
1093 The newtype deriving mechanism is much trickier to support than it
1094 seems at first.  Kevin didn't get it quite right when moving to FC,
1095 and I ended up re-writing quite a bit of it. 
1096 
1097 I think it's right now, but I have not yet tested it thoroughly.
1098 
1099]
1100[Add TcRnMonad.newSysLocalIds, and use it
1101simonpj@microsoft.com**20060923040416]
1102[Remove dead code concerning coercions from TypeRep
1103simonpj@microsoft.com**20060923040216]
1104[Move snocView in the file, nearer the other spliting functions
1105simonpj@microsoft.com**20060923040138]
1106[Improve documentation of newtype-deriving (todo: check formatting still works)
1107simonpj@microsoft.com**20060923040015]
1108[Add VarSet.disjointVarSet, and use it
1109simonpj@microsoft.com**20060923035829]
1110[Trim imports, and remove some dead code
1111simonpj@microsoft.com**20060923035201]
1112[Improve specialisation in SpecConstr
1113simonpj@microsoft.com**20060922190436
1114 
1115 This patch enables argToPat to look through let expressions
1116 
1117 e.g.   f (let v = rhs in \y -> ...v...)
1118 
1119 Here we can specialise for f (\y -> ...) because the rule-matcher will
1120 look through the let.
1121 
1122]
1123[Remove duplicate call to getDOpts
1124simonpj@microsoft.com**20060922190350]
1125[Remove use of isVanillaDataCon, which was wrong under the new FC dispensation
1126simonpj@microsoft.com**20060922190307]
1127[Trim imports, reformatting
1128simonpj@microsoft.com**20060922190219]
1129[Add a crucial missing prime in tcConPat
1130simonpj@microsoft.com**20060922185711
1131 
1132 This fixes a typo -- a missing prime in tcConPat. 
1133 
1134 The test is gadt18.
1135 
1136 While modifying TcPat I also trimmed imports, fixed non-exhaustive
1137 patterns, and improved tracing.
1138 
1139 
1140]
1141[64bit fixes for the symbol lookup table
1142sven.panne@aedion.de**20060923162408]
1143[In ByteCodeGen, correctly passthru AnnCast in all relevant places, so the previous band-aid fix is no longer needed.
1144audreyt@audreyt.org**20060923052815]
1145[Add explicit eta-reduction to GHCI's schemeE such that deriving Typeable won't panick.
1146audreyt@audreyt.org**20060923050929]
1147[Repair "ghci" under FC+AT by handling AnnCast in bytecode generator.
1148audreyt@audreyt.org**20060922040618]
1149[Fix Linker import when BREAKPOINT is off
1150Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060921210029]
1151[Extend IfaceSyn.eqIfTc to cover type kind variants from FC
1152Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060921161400]
1153[Use --export-dynamic to ensure ghci works on newer openbsds
1154Don Stewart <dons@cse.unsw.edu.au>**20060921010155
1155 
1156 Changes to the RTLD_DEFAULT semantics broke the trick we used to ensure
1157 libc symbols were available to the ghci linker, in OpenBSD 4.0. We can
1158 fix this by linking the ghc binary itself with --export-dynamic on this
1159 system, removing the need for any magic Linker.c games.
1160 
1161 GHCi now works on OpenBSD 4.0
1162 
1163 Contributed by Eric Mertens <emertens at gmail.com>
1164 
1165]
1166[* TypeRep.lhs and TypeRep.lhs-boot didn't agree on their signatures (SuperKind vs Kind)
1167audreyt@audreyt.org**20060921012531]
1168[* Fix stray comma in HsTypes.lhs's import line.
1169audreyt@audreyt.org**20060921011356]
1170[TAG After FC branch merge
1171Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060920211146]
1172[Correct substitution into theta types (after merge)
1173Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060920204805]
1174[Fix import list of TcTyClsDecls after merge
1175Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060920204744]
1176[Adding FamInstEnv & FamInst modules
1177Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060920201727
1178 - They got lost during manual patching, as they are file additions.
1179]
1180[Adapt FC-code in TcUnify to pre-subsumption
1181Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060920185719
1182 Wed Sep 20 04:01:18 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1183   * Adapt FC-code in TcUnify to pre-subsumption
1184]
1185[Some more ASSERTs
1186Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060920185432
1187 Wed Sep 20 02:52:00 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1188   * Some more ASSERTs
1189]
1190[SPJ's fix to resolve conflict in instFun
1191Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060920185240
1192 Wed Sep 20 02:27:26 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1193   * SPJ's fix to resolve conflict in instFun
1194]
1195[Adjust code from manual merges
1196Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060920185109
1197 Tue Sep 19 14:12:36 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1198   * Adjust code from manual merges
1199]
1200[Adapt TcFix imports
1201Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060920185041
1202 Tue Sep 19 14:11:55 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1203   * Adapt TcFix imports
1204]
1205[Basic set up for global family instance environment
1206Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060920185019
1207 Mon Sep 18 19:52:34 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1208   * Basic set up for global family instance environment
1209   Fri Sep 15 15:20:44 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1210     * Basic set up for global family instance environment
1211]
1212[Import/export of data constructors in family instances
1213Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060920184953
1214 Mon Sep 18 19:50:42 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1215   * Import/export of data constructors in family instances
1216   Tue Sep 12 13:54:37 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1217     * Import/export of data constructors in family instances
1218     - Data constructors of a data/newtype family F can be exported and imported
1219       by writing F(..) or F(ConName).
1220     - This appears the most natural from a user's persepctive - although, it has a
1221       slightly different flavour than similar import/exports items for closed data
1222       types.  The data constructors denoted by F(..) vary in dependence on the
1223       visible data instances.
1224     - This has been non-trivial to achieve as RnNames derives its knowledge of what
1225       sub-binders an F(..) item exports/imports from the relation specified by
1226       Name.nameParent - ie, the constructors of a data/newtype instance need to
1227       have the family name (not the internal name of the representation tycon) as
1228       their parent.
1229     
1230     *** WARNING: This patched changes the iface format! ***
1231     ***          Please re-compile from scratch!           ***
1232]
1233[Use smart lookup for tycons
1234Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060920184934
1235 Mon Sep 18 19:49:35 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1236   * Use smart lookup for tycons
1237   Tue Sep 12 12:55:10 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1238     * Use smart lookup for tycons
1239]
1240[Fix type checking of imported data instances
1241Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060920184915
1242 Mon Sep 18 19:48:41 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1243   * Fix type checking of imported data instances
1244   Mon Sep 11 20:06:51 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1245     * Fix type checking of imported data instances
1246     - When reading a data/newtype instance from an interface, the data constructors
1247       have their own universals that do not necessarily match up with their tycon's
1248       type parameters.  (Whereas when type checking source, they are always the
1249       same.)
1250     - Hence, we need to be careful when building the wrapper signature of imported
1251       data constructors from data/newtype instances, and rename the type variables
1252       in the instance types appropriately.
1253]
1254[Fix category of representation tycon
1255Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060920184859
1256 Mon Sep 18 19:48:00 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1257   * Fix category of representation tycon
1258   Mon Sep 11 16:18:51 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1259     * Fix category of representation tycon
1260]
1261[Option -findexed-types
1262Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060920184842
1263 Mon Sep 18 19:42:48 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1264   * Option -findexed-types
1265   Fri Sep  8 21:35:37 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1266     * Option -findexed-types
1267     - Introduced the switch -findexed-types to activate the indexed type family
1268       framework.
1269     - The switch enables the special 'family' and allows kind signatures (which are
1270       currently compulsory for associated families).
1271]
1272[Get of fam inst index in ifaces
1273Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060920184802
1274 Mon Sep 18 19:40:42 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1275   * Get of fam inst index in ifaces
1276   Fri Sep  8 16:31:26 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1277     * Get of fam inst index in ifaces
1278     - Removes the explicit index to get unique names for derived tycons for family
1279       instances again, following a suggestion by SPJ.
1280     - We now derive the coercion tycon name from the name of the representation
1281       tycon, which is in the iface anyways.
1282     
1283     *** WARNING: Change of interface file format! ***
1284     ***          Recompile from scratch!          ***
1285]
1286[Clean up and refactor in SimplUtils.mkCase1 (identity case)
1287Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060920184712
1288 Mon Sep 18 19:40:05 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1289   * Clean up and refactor in SimplUtils.mkCase1 (identity case)
1290   Wed Sep  6 07:42:45 EDT 2006  simonpj@microsoft.com
1291     * Clean up and refactor in SimplUtils.mkCase1 (identity case)
1292]
1293[ATs are now implicitTyThings
1294Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060920184645
1295 Mon Sep 18 19:36:03 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1296   * ATs are now implicitTyThings
1297   Tue Sep  5 21:09:54 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1298     * ATs are now implicitTyThings
1299]
1300[Straightened out implicit coercions for indexed types
1301Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060920184404
1302 Mon Sep 18 19:35:24 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1303   * Straightened out implicit coercions for indexed types
1304   Mon Sep  4 23:46:14 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1305     * Straightened out implicit coercions for indexed types
1306     - HscTypes.implicitTyThings and LoadIface.ifaceDeclSubBndrs now
1307       include the coercion of indexed data/newtypes.
1308     - Name generation for the internal names of indexed data/newtypes now uses
1309       the same counter that generates the dfun unique indexes (ie, class and type
1310       instances are counted with the one counter).  We could make this two
1311       separate counters if that's what's preferred.
1312     - The unique index of a data/newtype instances needs to go into the iface, so
1313       that we can generate the same names on slurping in the iface as when the
1314       original module was generated.  This is a bit yucky, but I don't see a way
1315       to avoid that (other than putting the full blown internal tycon name and
1316       coercion name into the iface, which IMHO would be worse).
1317     - The predicate for when a datacon has a wrapper didn't take GADT
1318       equations nor whether it comes froma  family instance into account.
1319     
1320     *** WARNING!  This patch changed the interface file format. ***
1321     ***           Please recompile from scratch.                ***
1322]
1323[Fixed two bugs concerning fanilies
1324Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060920184103
1325 Mon Sep 18 19:34:38 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1326   * Fixed two bugs concerning fanilies
1327   Mon Sep  4 20:59:49 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1328     * Fixed two bugs concerning fanilies
1329]
1330[Indexed newtypes
1331Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060920184035
1332 Mon Sep 18 19:24:27 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1333   * Indexed newtypes
1334   Thu Aug 31 22:09:21 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1335     * Indexed newtypes
1336     - This patch makes indexed newtypes work
1337     - Only lightly tested
1338     - We need to distinguish between open and closed newtypes in a number of
1339       places, because looking through newtypes doesn't work easily for open ones.
1340]
1341[Check category of type instances and some newtype family fixes
1342Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060920184013
1343 Mon Sep 18 19:23:39 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1344   * Check category of type instances and some newtype family fixes
1345   Thu Aug 31 16:54:14 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1346     * Check category of type instances and some newtype family fixes
1347]
1348[Better error message for indexes that must be variables
1349Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060920183952
1350 Mon Sep 18 19:19:10 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1351   * Better error message for indexes that must be variables
1352   Wed Aug 30 20:21:33 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1353     * Better error message for indexes that must be variables
1354]
1355[Checking conformance of AT indexes with instance heads
1356Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060920183937
1357 Mon Sep 18 19:18:18 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1358   * Checking conformance of AT indexes with instance heads
1359   Wed Aug 30 20:13:52 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1360     * Checking conformance of AT indexes with instance heads
1361]
1362[Warn of missing ATs and complain about bad ATs
1363Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060920183851
1364 Mon Sep 18 19:17:18 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1365   * Warn of missing ATs and complain about bad ATs
1366   Mon Aug 28 22:26:22 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1367     * Warn of missing ATs and complain about bad ATs
1368]
1369[Check that AT instance is in a class
1370Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060920183835
1371 Mon Sep 18 19:16:40 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1372   * Check that AT instance is in a class
1373   Sat Aug 26 21:49:56 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1374     * Check that AT instance is in a class
1375]
1376[Kind sig for toplevel family decls is optional
1377Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060920183813
1378 Mon Sep 18 19:13:47 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1379   * Kind sig for toplevel family decls is optional
1380   Sat Aug 26 19:03:50 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1381     * Kind sig for toplevel family decls is optional
1382     - Kind sigs are still compulsory for AT family decls.  Changing this is more
1383       tricky, as AT decls don't have the family keyword and hence look like empty
1384       data decls.  That impacts reduce/reduce conflicts and/or the criteria for
1385       checking whether a TyData variant is a family signature.
1386     - Also removed iso from the syntax (it's still in the lexer in case we want to
1387       resurrect it).
1388]
1389[Fixed bug in coercion for indexed data types
1390Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060920183742
1391 Mon Sep 18 19:12:51 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1392   * Fixed bug in coercion for indexed data types
1393   Fri Aug 25 16:45:29 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1394     * Fixed bug in coercion for indexed data types
1395     - Significant examples are starting to work; eg, generic finite maps:
1396     
1397     class GMapKey k where
1398       data GMap k :: * -> *
1399       empty       :: GMap k v
1400       lookup      :: k -> GMap k v -> Maybe v
1401       insert      :: k -> v -> GMap k v -> GMap k v
1402     
1403     instance GMapKey Int where
1404       data GMap Int v        = GMapInt (Map.Map Int v)
1405       empty                  = GMapInt Map.empty
1406       lookup k (GMapInt m)   = Map.lookup k m
1407       insert k v (GMapInt m) = GMapInt (Map.insert k v m)
1408     
1409     instance GMapKey Char where
1410       data GMap Char v        = GMapChar (GMap Int v)
1411       empty                   = GMapChar empty
1412       lookup k (GMapChar m)   = lookup (ord k) m
1413       insert k v (GMapChar m) = GMapChar (insert (ord k) v m)
1414     
1415     instance GMapKey () where
1416       data GMap () v           = GMapUnit (Maybe v)
1417       empty                    = GMapUnit Nothing
1418       lookup () (GMapUnit v)   = v
1419       insert () v (GMapUnit _) = GMapUnit $ Just v
1420     
1421     instance (GMapKey a, GMapKey b) => GMapKey (a, b) where
1422       data GMap (a, b) v            = GMapPair (GMap a (GMap b v))
1423       empty                            = GMapPair empty
1424       lookup (a, b) (GMapPair gm)   = lookup a gm >>= lookup b
1425       insert (a, b) v (GMapPair gm) = GMapPair $ case lookup a gm of
1426                                    Nothing  -> insert a (insert b v empty) gm
1427                                    Just gm2 -> insert a (insert b v gm2  ) gm
1428     
1429     instance (GMapKey a, GMapKey b) => GMapKey (Either a b) where
1430       data GMap (Either a b) v                = GMapEither (GMap a v) (GMap b v)
1431       empty                                   = GMapEither empty empty
1432       lookup (Left  a) (GMapEither gm1  _gm2) = lookup a gm1
1433       lookup (Right b) (GMapEither _gm1 gm2 ) = lookup b gm2
1434       insert (Left  a) v (GMapEither gm1 gm2) = GMapEither (insert a v gm1) gm2
1435       insert (Right a) v (GMapEither gm1 gm2) = GMapEither gm1 (insert a v gm2)
1436     
1437]
1438[Pattern matching of indexed data types
1439Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060920183717
1440 Mon Sep 18 19:11:24 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1441   * Pattern matching of indexed data types
1442   Thu Aug 24 14:17:44 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1443     * Pattern matching of indexed data types
1444     - This patch is the last major puzzle piece to type check and desugar indexed
1445       data types (both toplevel and associated with a class).
1446     - However, it needs more testing - esp wrt to accumlating CoPats - and some
1447       static sanity checks for data instance declarations are still missing.
1448     - There are now two detailed notes in MkIds and TcPat on how the worker/wrapper
1449       and coercion story for indexed data types works.
1450]
1451[Introduce coercions for data instance decls
1452Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060920183646
1453 Mon Sep 18 19:07:30 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1454   * Introduce coercions for data instance decls
1455   Tue Aug 22 20:33:46 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1456     * Introduce coercions for data instance decls
1457     - data instance declarations implicitly generate a coercion moving between the
1458       representation type and family instance type.
1459     - The coercion is *implicitly* generated when type checking both source and
1460       ifaces.  Ie, we don't safe it in ifaces - this is really exactly as newtype
1461       coercions are handled.
1462     - The previous addition of the instance types to DataCons has been moved to
1463       the representation TyCon.  This is more efficient as it is shared between all
1464       constructors of one representation tycon and it also gathers everything about
1465       data instances (family tycon, instance types, and coercion) in one place: the
1466       algTcParent field of TyCon.
1467     - The coercion is already used in the datacon wrappers, but not yet during type
1468       checking pattern matching of indexed data types.
1469     - The code has only been lightly tested, but doesn't seem to break features not
1470       related to indexed types.  For indexed data types only the pattern matching
1471       tc code (in TcPat.tcConPat) and some well-formedness checks are still
1472       missing.  And there will surely be some bugs to fix.  (newtypes still require
1473       some more work.)
1474     
1475           ** WARNING: Interface file format changed! **
1476           **          Recompile from scratch!        **
1477]
1478[Fixed two data family bugs
1479Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060920183627
1480 Mon Sep 18 19:06:51 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1481   * Fixed two data family bugs
1482   Mon Aug 21 15:16:16 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1483     * Fixed two data family bugs
1484     - Too liberal pattern matching in `tcTyClDecl1'
1485     - Open TyCons must always be exposed (ie, never be turned into abstract tycons
1486       during tidying)
1487]
1488[Fix the tyvars used for data con signatures
1489Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060920183611
1490 Mon Sep 18 19:06:12 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1491   * Fix the tyvars used for data con signatures
1492   Sat Aug 19 17:19:25 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1493     * Fix the tyvars used for data con signatures
1494]
1495[Extend TyCons and DataCons to represent data instance decls
1496Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060920183534
1497 Mon Sep 18 19:05:18 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1498   * Extend TyCons and DataCons to represent data instance decls
1499   Fri Aug 18 19:11:37 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1500     * Extend TyCons and DataCons to represent data instance decls
1501     - This is a faily involved patch, but it is not entirely complete:
1502       + The data con wrapper code for instance data cons needs to apply the
1503         coercions (which we still have to generate).
1504       + There are still bugs, but it doesn't seem to affect the compilation of
1505         code that doesn't use type families.
1506     
1507     ** WARNING: Yet another change of the iface format.  **
1508     **          Recompile everything.                    **
1509]
1510[Fix TcSplice after some type family related changes
1511Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060920183518
1512 Mon Sep 18 19:04:12 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1513   * Fix TcSplice after some type family related changes
1514   Wed Aug 16 19:51:27 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1515     * Fix TcSplice after some type family related changes
1516]
1517[Make sure ATs are included into the temporary env for tc knot tying
1518Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060920183503
1519 Mon Sep 18 19:03:31 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1520   * Make sure ATs are included into the temporary env for tc knot tying
1521   Wed Aug 16 17:52:40 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1522     * Make sure ATs are included into the temporary env for tc knot tying
1523]
1524[Extend Class.Class to include the TyCons of ATs
1525Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060920183446
1526 Mon Sep 18 18:58:51 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1527   * Extend Class.Class to include the TyCons of ATs
1528   Wed Aug 16 16:15:31 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1529     * Extend Class.Class to include the TyCons of ATs
1530]
1531[Fix kind lookup in kcIdxTyPats
1532Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060920183423
1533 Mon Sep 18 18:58:14 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1534   * Fix kind lookup in kcIdxTyPats
1535   Tue Aug 15 21:02:34 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1536     * Fix kind lookup in kcIdxTyPats
1537]
1538[Extended TyCon and friends to represent family declarations
1539Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060920183400
1540 Mon Sep 18 18:50:35 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1541   * Extended TyCon and friends to represent family declarations
1542   Tue Aug 15 16:52:31 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1543     * Extended TyCon and friends to represent family declarations
1544]
1545[Kind and type checking of indexed types
1546Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060920183333
1547 Mon Sep 18 18:39:03 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1548   * Kind and type checking of indexed types
1549   Fri Aug 11 16:09:13 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1550     * Kind and type checking of indexed types
1551     - Type checking of kind signatures
1552     - Kind and type checking of instances of indexed types
1553     - Validity checks for ATs are still *missing* (ie, that the type indexes
1554       coincide with the class parameters and that the defined ATs really belong to
1555       the class).
1556]
1557[Another comment
1558Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060920183156
1559 Mon Sep 18 17:45:06 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1560   * Another comment
1561   Wed Aug  9 04:48:18 EDT 2006  simonpj@microsoft.com
1562     * Another comment
1563]
1564[Add missing co_vars to tcIfaceDataAlt
1565Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060920183139
1566 Mon Sep 18 17:44:24 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1567   * Add missing co_vars to tcIfaceDataAlt
1568   Wed Aug  9 04:45:33 EDT 2006  simonpj@microsoft.com
1569     * Add missing co_vars to tcIfaceDataAlt
1570]
1571[Comments only
1572Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060920183051
1573 Mon Sep 18 17:43:31 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1574   * Comments only
1575   Wed Aug  9 04:45:19 EDT 2006  simonpj@microsoft.com
1576     * Comments only
1577]
1578[Small refactoring
1579Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060920182708
1580 Mon Sep 18 17:41:37 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1581   * Small refactoring
1582   Wed Aug  9 04:41:54 EDT 2006  simonpj@microsoft.com
1583     * Small refactoring
1584]
1585[TAG HEAD merge 6 Aug 06 completed
1586Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060920182627]
1587[Missing change re additional info in TcTyThing
1588Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060920182402
1589 Mon Sep 18 17:28:37 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1590   * Missing change re additional info in TcTyThing
1591   Mon Aug  7 14:22:08 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1592     * Missing change re additional info in TcTyThing
1593]
1594[Complete OccName->FS change in TcIface
1595Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060920182342
1596 Mon Sep 18 17:27:42 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1597   * Complete OccName->FS change in TcIface
1598   Mon Aug  7 13:03:26 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1599     * Complete OccName->FS change in TcIface
1600]
1601[Missing imports in CoreUtils
1602Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060920182324
1603 Mon Sep 18 17:27:00 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1604   * Missing imports in CoreUtils
1605   Mon Aug  7 11:15:54 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1606     * Missing imports in CoreUtils
1607]
1608[Removed spurious + due to manual patching
1609Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060920182303
1610 Mon Sep 18 17:25:23 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1611   * Removed spurious + due to manual patching
1612   Mon Aug  7 11:07:37 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1613     * Removed spurious + due to manual patching
1614]
1615[Makefile comment
1616Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060920182154
1617 Mon Sep 18 17:23:13 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1618   * Makefile comment
1619   Sun Aug  6 21:03:20 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1620     * Makefile comment
1621     Fri Aug  4 11:44:49 EDT 2006  kevind@bu.edu
1622]
1623[Fix newtype deriving bug
1624Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060920182126
1625 Mon Sep 18 17:22:43 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1626   * Fix newtype deriving bug
1627   Sun Aug  6 21:02:35 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1628     * Fix newtype deriving bug
1629     Fri Aug  4 06:45:21 EDT 2006  kevind@bu.edu
1630]
1631[Include the existential dictionaries in dataConOrigInstPat
1632Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060920182048
1633 Mon Sep 18 17:22:14 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1634   * Include the existential dictionaries in dataConOrigInstPat
1635   Sun Aug  6 20:59:00 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1636     * Include the existential dictionaries in dataConOrigInstPat
1637     Fri Aug  4 04:24:25 EDT 2006  simonpj@microsoft.com
1638]
1639[Comments about datacon worker and wrappers
1640Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060920182026
1641 Mon Sep 18 17:21:20 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1642   * Comments about datacon worker and wrappers
1643   Sun Aug  6 20:57:48 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1644     * Comments about datacon worker and wrappers
1645     Fri Aug  4 04:23:28 EDT 2006  simonpj@microsoft.com
1646]
1647[Make newtype Coercion eta-contract if the tails of lhs and rhs match up
1648Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060920181959
1649 Mon Sep 18 17:20:17 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1650   * Make newtype Coercion eta-contract if the tails of lhs and rhs match up
1651   Sun Aug  6 20:57:10 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1652     * Make newtype Coercion eta-contract if the tails of lhs and rhs match up
1653     Thu Aug  3 12:26:52 EDT 2006  kevind@bu.edu
1654]
1655[Flip direction of newtype coercions, fix some comments
1656Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060920181912
1657 Mon Sep 18 17:19:19 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1658   * Flip direction of newtype coercions, fix some comments
1659   Sun Aug  6 20:56:23 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1660     * Flip direction of newtype coercions, fix some comments
1661     Thu Aug  3 10:53:37 EDT 2006  kevind@bu.edu
1662]
1663[Chagne newtype wrapper into worker
1664Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060920181722
1665 Mon Sep 18 17:17:57 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1666   * Chagne newtype wrapper into worker
1667   Sun Aug  6 20:55:30 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1668     * Chagne newtype wrapper into worker
1669     Wed Aug  2 11:54:28 EDT 2006  kevind@bu.edu
1670]
1671[Clean up unused imports, definitions and arguments
1672Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060920181704
1673 Mon Sep 18 17:17:20 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1674   * Clean up unused imports, definitions and arguments
1675   Sun Aug  6 20:54:31 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1676     * Clean up unused imports, definitions and arguments
1677     Wed Aug  2 11:05:33 EDT 2006  kevind@bu.edu
1678]
1679[Fix assertion and default case for GADT record selectors
1680Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060920181642
1681 Mon Sep 18 17:16:10 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1682   * Fix assertion and default case for GADT record selectors
1683   Sun Aug  6 20:53:39 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1684     * Fix assertion and default case for GADT record selectors
1685     Wed Aug  2 11:04:21 EDT 2006  kevind@bu.edu
1686]
1687[make dataConInstPat take a list of FastStrings rather than OccNames, remove out-of-date comment
1688Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060920181624
1689 Mon Sep 18 17:15:25 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1690   * make dataConInstPat take a list of FastStrings rather than OccNames, remove out-of-date comment
1691   Sun Aug  6 20:52:24 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1692     * make dataConInstPat take a list of FastStrings rather than OccNames, remove out-of-date comment
1693     Wed Aug  2 09:26:47 EDT 2006  kevind@bu.edu
1694]
1695[Just clean-up, no functional changes
1696Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060920181602
1697 Mon Sep 18 17:14:51 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1698   * Just clean-up, no functional changes
1699   Sun Aug  6 20:49:23 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1700     * Just clean-up, no functional changes
1701     Wed Aug  2 06:48:44 EDT 2006  simonpj@microsoft.com
1702]
1703[Get rid of special case for Vanilla tycon record selectors and make uniq splitting more uniform
1704Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060920181540
1705 Mon Sep 18 17:13:44 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1706   * Get rid of special case for Vanilla tycon record selectors and make uniq splitting more uniform
1707   Sun Aug  6 20:48:06 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1708     * Get rid of special case for Vanilla tycon record selectors and make uniq splitting more uniform
1709     Wed Aug  2 06:04:19 EDT 2006  kevind@bu.edu
1710]
1711[Fix problem with selectors for GADT records with unboxed fields
1712Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060920181509
1713 Mon Sep 18 17:13:11 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1714   * Fix problem with selectors for GADT records with unboxed fields
1715   Sun Aug  6 20:47:11 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1716     * Fix problem with selectors for GADT records with unboxed fields
1717     Wed Aug  2 05:37:38 EDT 2006  kevind@bu.edu
1718]
1719[Make sym coercion smart constructor smarter, add comments
1720Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060920181448
1721 Mon Sep 18 17:11:59 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1722   * Make sym coercion smart constructor smarter, add comments
1723   Sun Aug  6 20:32:58 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1724     * Make sym coercion smart constructor smarter, add comments
1725     Tue Aug  1 11:30:14 EDT 2006  kevind@bu.edu
1726]
1727[Refactoring in TcGadt
1728Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060920180037
1729 Mon Sep 18 17:11:25 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1730   * Refactoring in TcGadt
1731   Sun Aug  6 20:32:20 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1732     * Refactoring in TcGadt
1733     Tue Aug  1 10:28:25 EDT 2006  kevind@bu.edu
1734]
1735[Add some invariant checking for refinements
1736Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060920180000
1737 Mon Sep 18 17:09:56 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1738   * Add some invariant checking for refinements
1739   Sun Aug  6 20:30:56 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1740     * Add some invariant checking for refinements
1741     Tue Aug  1 08:52:43 EDT 2006  simonpj@microsoft.com
1742]
1743[Minor tidying up
1744Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060920175918
1745 Mon Sep 18 17:08:30 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1746   * Minor tidying up
1747   Sun Aug  6 20:30:11 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1748     * Minor tidying up
1749     Tue Aug  1 08:51:40 EDT 2006  simonpj@microsoft.com
1750]
1751[Fix GADT refinement fix-pointing, add ASSERTs and a WARN, make type equality functions work for PredTy Eqtype ...
1752Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060920175830
1753 Mon Sep 18 17:07:38 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1754   * Fix GADT refinement fix-pointing, add ASSERTs and a WARN, make type equality functions work for PredTy Eqtype ...
1755   Sun Aug  6 20:28:50 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1756     * Fix GADT refinement fix-pointing, add ASSERTs and a WARN, make type equality functions work for PredTy Eqtype ...
1757     Tue Aug  1 06:14:43 EDT 2006  kevind@bu.edu
1758]
1759[Remove bogus ASSERT from MkId
1760Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060920175736
1761 Mon Sep 18 17:06:27 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1762   * Remove bogus ASSERT from MkId
1763   Sun Aug  6 20:12:41 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1764     * Remove bogus ASSERT from MkId
1765     Mon Jul 31 05:45:48 EDT 2006  kevind@bu.edu
1766]
1767[Fix bug in type checking interface DataAlts
1768Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060920175707
1769 Mon Sep 18 17:05:56 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1770   * Fix bug in type checking interface DataAlts
1771   Sun Aug  6 20:11:56 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1772     * Fix bug in type checking interface DataAlts
1773     Mon Jul 31 05:30:02 EDT 2006  kevind@bu.edu
1774]
1775[fix default case filling-in for GADTs
1776Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060920175632
1777 Mon Sep 18 17:04:19 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1778   * fix default case filling-in for GADTs
1779   Sun Aug  6 20:09:06 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1780     * fix default case filling-in for GADTs
1781     Fri Jul 28 13:19:40 EDT 2006  kevind@bu.edu
1782]
1783[fix big-lambda eta expansion, add comments
1784Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060920175454
1785 Mon Sep 18 17:02:49 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1786   * fix big-lambda eta expansion, add comments
1787   Sun Aug  6 20:07:36 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1788     * fix big-lambda eta expansion, add comments
1789     Fri Jul 28 13:16:51 EDT 2006  kevind@bu.edu
1790]
1791[Fix Lint for alts involving shadowing of type variables; add comments
1792Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060920175334
1793 Mon Sep 18 17:02:14 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1794   * Fix Lint for alts involving shadowing of type variables; add comments
1795   Sun Aug  6 20:06:39 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1796     * Fix Lint for alts involving shadowing of type variables; add comments
1797     Fri Jul 28 12:11:55 EDT 2006  simonpj@microsoft.com
1798]
1799[Fix a couple of stage-2 bogosities
1800Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060920175026
1801 Mon Sep 18 16:58:39 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1802   * Fix a couple of stage-2 bogosities
1803   Sun Aug  6 20:00:08 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1804     * Fix a couple of stage-2 bogosities
1805     Fri Jul 28 06:27:06 EDT 2006  simonpj@microsoft.com
1806]
1807[fixing record selectors
1808Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060920174947
1809 Mon Sep 18 16:50:18 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1810   * fixing record selectors
1811   Sun Aug  6 19:56:29 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1812     * fixing record selectors
1813     Fri Jul 28 10:24:28 EDT 2006  kevind@bu.edu
1814     - Bad conflict in tcIfaceDataAlt, at a place where the monster patch had a
1815       conflict, too.  I have no idea what the right code is.  -=chak
1816   NB (at time of 2nd merge): previous conflict resolution was fine
1817]
1818[GADT selector bugfix, bits of cleanup
1819Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060920174855
1820 Mon Sep 18 16:48:32 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1821   * GADT selector bugfix, bits of cleanup
1822   Sun Aug  6 19:43:47 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1823     * GADT selector bugfix, bits of cleanup
1824     Thu Jul 27 08:10:58 EDT 2006  kevind@bu.edu
1825]
1826[fix some GADT record selector bugs (still some remaining)
1827Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060920174820
1828 Mon Sep 18 16:47:22 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1829   * fix some GADT record selector bugs (still some remaining)
1830   Sun Aug  6 19:42:50 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1831     * fix some GADT record selector bugs (still some remaining)
1832     Thu Jul 27 07:04:29 EDT 2006  kevind@bu.edu
1833]
1834[clean up Coercion kinding functions, rename coercionKindTyConApp
1835Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060920174748
1836 Mon Sep 18 16:46:14 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1837   * clean up Coercion kinding functions, rename coercionKindTyConApp
1838   Sun Aug  6 17:37:06 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1839     * clean up Coercion kinding functions, rename coercionKindTyConApp
1840     Wed Jul 26 10:55:38 EDT 2006  kevind@bu.edu
1841]
1842[Better pretty printing for CoPat
1843Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060920174710
1844 Mon Sep 18 16:45:13 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1845   * Better pretty printing for CoPat
1846   Sun Aug  6 17:25:19 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1847     * Better pretty printing for CoPat
1848     Wed Jul 26 08:22:22 EDT 2006  simonpj@microsoft.com
1849]
1850[Make data con wrappers for GADTs express the user type directly
1851Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060920174638
1852 Mon Sep 18 16:44:29 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1853   * Make data con wrappers for GADTs express the user type directly
1854   Sun Aug  6 17:24:17 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1855     * Make data con wrappers for GADTs express the user type directly
1856     Wed Jul 26 08:19:09 EDT 2006  simonpj@microsoft.com
1857]
1858[Comments only
1859Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060920174525
1860 Mon Sep 18 16:43:36 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1861   * Comments only
1862   Sun Aug  6 17:18:44 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1863     * Comments only
1864     Tue Jul 25 12:06:00 EDT 2006  simonpj@microsoft.com
1865]
1866[fix bugs, add boolean flag to identify coercion variables
1867Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060920173927
1868 Mon Sep 18 16:41:32 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1869   * fix bugs, add boolean flag to identify coercion variables
1870   Sun Aug  6 17:04:02 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1871     * fix bugs, add boolean flag to identify coercion variables
1872     Tue Jul 25 06:20:05 EDT 2006  kevind@bu.edu
1873]
1874[fix some coercion kind representation things, extend exprIsConApp_maybe to non-vanilla
1875Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060920173856
1876 Mon Sep 18 14:51:33 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1877   * fix some coercion kind representation things, extend exprIsConApp_maybe to non-vanilla
1878   Sat Aug  5 21:48:21 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1879     * fix some coercion kind representation things, extend exprIsConApp_maybe to non-vanilla
1880     Wed Jul 19 08:06:28 EDT 2006  kevind@bu.edu
1881]
1882[fixed bug in product unboxing
1883Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060920173827
1884 Mon Sep 18 14:48:53 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1885   * fixed bug in product unboxing
1886   Sat Aug  5 21:46:18 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1887     * fixed bug in product unboxing
1888     Mon Jul 17 09:10:34 EDT 2006  kevind@bu.edu
1889]
1890[finished product unboxing through newtypes and proper demand analysis of newtypes
1891Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060920173724
1892 Mon Sep 18 14:48:02 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1893   * finished product unboxing through newtypes and proper demand analysis of newtypes
1894   Sat Aug  5 21:45:32 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1895     * finished product unboxing through newtypes and proper demand analysis of newtypes
1896     Mon Jul 17 06:52:11 EDT 2006  kevind@bu.edu
1897]
1898[Comment
1899Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060920173649
1900 Mon Sep 18 14:47:19 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1901   * Comment
1902   Sat Aug  5 21:44:13 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1903     * Comment
1904     Fri Jul 14 12:49:37 EDT 2006  simonpj@microsoft.com
1905]
1906[towards unboxing through newtypes
1907Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060920173526
1908 Mon Sep 18 14:44:50 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1909   * towards unboxing through newtypes
1910   Sat Aug  5 21:42:05 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1911     * towards unboxing through newtypes
1912     Fri Jul 14 12:02:32 EDT 2006  kevind@bu.edu
1913]
1914[fix out-of-scope vars
1915Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060920173425
1916 Mon Sep 18 14:44:11 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1917   * fix out-of-scope vars
1918   Sat Aug  5 21:41:02 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1919     * fix out-of-scope vars
1920     Thu Jul 13 04:27:42 EDT 2006  kevind@bu.edu
1921]
1922[Complete the evidence generation for GADTs
1923Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060920170528
1924 Mon Sep 18 14:43:22 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1925   * Complete the evidence generation for GADTs
1926   Sat Aug  5 21:39:51 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1927     * Complete the evidence generation for GADTs
1928     Thu Jul 13 17:18:07 EDT 2006  simonpj@microsoft.com
1929       
1930       This patch completes FC evidence generation for GADTs.
1931       
1932       It doesn't work properly yet, because part of the compiler thinks
1933        (t1 :=: t2) => t3
1934       is represented with FunTy/PredTy, while the rest thinks it's represented
1935       using ForAllTy.  Once that's done things should start to work.
1936]
1937[bugs
1938Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060920165958
1939 Mon Sep 18 14:34:44 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1940   * bugs
1941   Sat Aug  5 21:36:50 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1942     * bugs
1943     Thu Jul 13 04:20:58 EDT 2006  kevind@bu.edu
1944]
1945[some bug-fixes, newtype deriving might work now
1946Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060920165851
1947 Mon Sep 18 14:33:01 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1948   * some bug-fixes, newtype deriving might work now
1949   Sat Aug  5 21:29:28 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1950     * some bug-fixes, newtype deriving might work now
1951     Tue Jul 11 12:16:13 EDT 2006  kevind@bu.edu
1952]
1953[newtype deriving still not working
1954Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060920165746
1955 Mon Sep 18 14:31:59 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1956   * newtype deriving still not working
1957   Sat Aug  5 21:25:43 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1958     * newtype deriving still not working
1959     Mon Jul 10 10:27:20 EDT 2006  kevind@bu.edu
1960]
1961[newtype deriving dicts, compiling at least
1962Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060920165709
1963 Mon Sep 18 14:31:19 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1964   * newtype deriving dicts, compiling at least
1965   Sat Aug  5 21:24:54 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1966     * newtype deriving dicts, compiling at least
1967     Fri Jul  7 13:07:32 EDT 2006  kevind@bu.edu
1968]
1969[..and a bit more
1970Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060920165610
1971 Mon Sep 18 14:30:11 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1972   * ..and a bit more
1973   Sat Aug  5 21:23:16 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1974     * ..and a bit more
1975     Fri Jul  7 10:40:40 EDT 2006  simonpj@microsoft.com
1976]
1977[More on newtype deriving
1978Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060920165459
1979 Mon Sep 18 14:29:16 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1980   * More on newtype deriving
1981   Sat Aug  5 21:22:29 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1982     * More on newtype deriving
1983     Fri Jul  7 10:37:55 EDT 2006  simonpj@microsoft.com
1984]
1985[towards newtype deriving dicts
1986Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060920165348
1987 Mon Sep 18 14:27:57 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1988   * towards newtype deriving dicts
1989   Sat Aug  5 21:21:13 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1990     * towards newtype deriving dicts
1991     Fri Jul  7 09:26:44 EDT 2006  kevind@bu.edu
1992]
1993[newtype fixes, coercions for non-recursive newtypes now optional
1994Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060920165313
1995 Mon Sep 18 14:24:27 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1996   * newtype fixes, coercions for non-recursive newtypes now optional
1997   Sat Aug  5 21:19:58 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
1998     * newtype fixes, coercions for non-recursive newtypes now optional
1999     Fri Jul  7 06:11:48 EDT 2006  kevind@bu.edu
2000]
2001[Massive patch for the first months work adding System FC to GHC #34
2002Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060920164916
2003 Fri Sep 15 18:56:58 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
2004   * Massive patch for the first months work adding System FC to GHC #34
2005   Fri Aug  4 18:20:57 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
2006     * Massive patch for the first months work adding System FC to GHC #34
2007     
2008     Broken up massive patch -=chak
2009     Original log message: 
2010     This is (sadly) all done in one patch to avoid Darcs bugs.
2011     It's not complete work... more FC stuff to come.  A compiler
2012     using just this patch will fail dismally.
2013]
2014[Remove mi_package from moved pprModIface
2015Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060920164118
2016 Mon Aug  7 12:40:55 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
2017   * Remove mi_package from moved pprModIface
2018]
2019[Massive patch for the first months work adding System FC to GHC #20
2020Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060920163857
2021 Fri Aug  4 17:43:25 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
2022   * Massive patch for the first months work adding System FC to GHC #20
2023   
2024   Broken up massive patch -=chak
2025   Original log message: 
2026   This is (sadly) all done in one patch to avoid Darcs bugs.
2027   It's not complete work... more FC stuff to come.  A compiler
2028   using just this patch will fail dismally.
2029]
2030[Adapt Simplify to conditional envs
2031Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060919181058]
2032[Adapt TcRnDriver to moved tyThingToIfaceDecl
2033Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060919180948]
2034[Adapt SimplUtils.getContArgs to conditional SubstEnv
2035Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060919012528]
2036[Adapt new SpecConstr functionality to GADT datacons
2037Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060919011243]
2038[Type tags in import/export lists
2039Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060918235147
2040 Tue Sep 12 16:57:32 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
2041   * Type tags in import/export lists
2042   - To write something like GMapKey(type GMap, empty, lookup, insert)
2043   - Requires -findexed-types
2044]
2045[comment for getLocalDeclBinders
2046Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060918234717
2047 Sat Sep  9 20:46:25 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
2048   * comment for getLocalDeclBinders
2049]
2050[Check for repeated tyvars in AT family decls
2051Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060918231542
2052 Sat Aug 26 19:49:55 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
2053   * Check for repeated tyvars in AT family decls
2054]
2055[Improve pretty printing for indexed type decls
2056Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060918230046
2057 Wed Aug 16 17:01:59 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
2058   * Improve pretty printing for indexed type decls
2059]
2060[Use family and instance keyword to identify indexed types
2061Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060918225551
2062 Tue Aug 15 20:16:00 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
2063   * Use family and instance keyword to identify indexed types
2064]
2065[Remove checkTopTypeD
2066Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060918225332
2067 Tue Aug 15 17:02:53 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
2068   * Remove checkTopTypeD
2069]
2070[Remove argument variance info of tycons
2071Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060918215052
2072 Fri Aug 11 13:53:24 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
2073   * Remove argument variance info of tycons
2074   - Following SPJ's suggestion, this patch removes the variance information from
2075     type constructors.  This information was computed, but never used.
2076   
2077   ** WARNING: This patch changes the format of interface files **
2078   **          You will need to rebuild from scratch.           **
2079]
2080[Don't lift ATs out of classes and instances before tc
2081Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060918214652
2082 Wed Aug  9 15:31:08 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
2083   * Don't lift ATs out of classes and instances before tc
2084]
2085[Indexed type defs are not declaring type names
2086Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060918214032
2087 Tue Aug  8 19:27:31 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
2088   * Indexed type defs are not declaring type names
2089]
2090[Deriving Eq for OverlapFlag again
2091Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060918212611
2092 Mon Aug  7 11:15:21 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
2093   * Deriving Eq for OverlapFlag again
2094]
2095[fix out-of-scope variable
2096Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060918210458
2097 Sun Aug  6 20:09:58 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
2098   * fix out-of-scope variable
2099   Fri Jul 28 13:40:36 EDT 2006  kevind@bu.edu
2100]
2101[GADT pattern matching fix
2102Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060918204038
2103 Sun Aug  6 17:01:59 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
2104   * GADT pattern matching fix
2105   Wed Jul 19 10:53:09 EDT 2006  kevind@bu.edu
2106]
2107[Simplify mkDataCon slightly
2108Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060918184621
2109 Sat Aug  5 21:42:48 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
2110   * Simplify mkDataCon slightly
2111   Fri Jul 14 12:48:50 EDT 2006  simonpj@microsoft.com
2112]
2113[Partial changes for derived newtype instances
2114Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060918181621
2115 Sat Aug  5 21:16:57 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
2116   * Partial changes for derived newtype instances
2117   Fri Jul  7 05:45:15 EDT 2006  simonpj@microsoft.com
2118]
2119[Massive patch for the first months work adding System FC to GHC #3
2120Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060918181317
2121 Fri Aug  4 15:21:36 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
2122   * Massive patch for the first months work adding System FC to GHC #3
2123   
2124   Broken up massive patch -=chak
2125   Original log message: 
2126   This is (sadly) all done in one patch to avoid Darcs bugs.
2127   It's not complete work... more FC stuff to come.  A compiler
2128   using just this patch will fail dismally.
2129]
2130[Massive patch for the first months work adding System FC to GHC #1
2131Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060918181054
2132 Fri Aug  4 15:11:01 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
2133   * Massive patch for the first months work adding System FC to GHC #1
2134   Broken up massive patch -=chak
2135   Original log message: 
2136   This is (sadly) all done in one patch to avoid Darcs bugs.
2137   It's not complete work... more FC stuff to come.  A compiler
2138   using just this patch will fail dismally.
2139]
2140[Massive patch for the first months work adding System FC to GHC #31
2141Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060915213331
2142 Fri Aug  4 18:13:56 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
2143   * Massive patch for the first months work adding System FC to GHC #31
2144   
2145   Broken up massive patch -=chak
2146   Original log message: 
2147   This is (sadly) all done in one patch to avoid Darcs bugs.
2148   It's not complete work... more FC stuff to come.  A compiler
2149   using just this patch will fail dismally.
2150]
2151[Massive patch for the first months work adding System FC to GHC #30
2152Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060915212458
2153 Fri Aug  4 18:13:20 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
2154   * Massive patch for the first months work adding System FC to GHC #30
2155   
2156   Broken up massive patch -=chak
2157   Original log message: 
2158   This is (sadly) all done in one patch to avoid Darcs bugs.
2159   It's not complete work... more FC stuff to come.  A compiler
2160   using just this patch will fail dismally.
2161]
2162[Massive patch for the first months work adding System FC to GHC #14
2163Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060915211918
2164 Fri Aug  4 15:59:09 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
2165   * Massive patch for the first months work adding System FC to GHC #14
2166   
2167   Broken up massive patch -=chak
2168   Original log message: 
2169   This is (sadly) all done in one patch to avoid Darcs bugs.
2170   It's not complete work... more FC stuff to come.  A compiler
2171   using just this patch will fail dismally.
2172]
2173[Added error checks & fixed bugs
2174Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060915210428
2175 Thu Aug  3 19:29:38 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
2176   * Added error checks & fixed bugs
2177]
2178[Fix class construction
2179Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060915210206
2180 Wed Aug  2 13:34:58 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
2181   * Fix class construction
2182]
2183[Renaming of indexed types
2184Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060915210106
2185 Tue Aug  1 23:51:38 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
2186   * Renaming of indexed types
2187]
2188[Renaming of kind signatures (rnTySig)
2189Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060915210010
2190 Tue Aug  1 16:39:51 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
2191   * Renaming of kind signatures (rnTySig)
2192]
2193[Revised kind signatures
2194Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060915205439
2195 Tue Aug  1 14:10:39 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
2196   * Revised kind signatures
2197]
2198[Cleanup (re type function parsing)
2199Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060915205154
2200 Mon Jul 31 17:20:56 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
2201   * Cleanup (re type function parsing)
2202]
2203[Parser support for assoc synonyms
2204Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060915204930
2205 Fri Jul 28 21:52:46 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
2206   * Parser support for assoc synonyms
2207]
2208[Fix migrated AT support
2209Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060915204537
2210 Wed Jul 26 18:16:25 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
2211   * Fix migrated AT support
2212   - Make it compile
2213   - Successfully parses and renames simple AT declarations
2214   - Should not affect non-AT programs
2215]
2216[Migrate cvs diff from fptools-assoc branch
2217Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060915204338
2218 Wed Jul 26 17:46:55 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
2219   * Migrate cvs diff from fptools-assoc branch
2220   - Syntactic support for associated types
2221   - Renamer support for associated types
2222   - ATs are only allowed with -fglasgow-exts
2223   - Handle ATs in the type and class declaration kinding knot-tying exercise
2224]
2225[Comment on the commoning up of CoPats in Match
2226simonpj@microsoft.com**20060906114223]
2227[Add comment for the invariant that DataAlt is never a newtype
2228simonpj@microsoft.com**20060906114155]
2229[Comments only
2230simonpj@microsoft.com**20060904135513]
2231[Change ASSERT to WARN
2232simonpj@microsoft.com**20060809084620]
2233[OccName->FS in tyThingToIfaceDecl that moved to MkIface
2234Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060807173839]
2235[Fix pattern w/o location in Check
2236Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060807170953]
2237[OccName->FS change over for equalities in GADTs
2238Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060807151634]
2239[Comments only
2240Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060807004613
2241 Wed Aug  2 05:00:03 EDT 2006  kevind@bu.edu
2242]
2243[Correct grevious bug in mkSymCoercion
2244Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060807003140
2245 Tue Aug  1 08:53:05 EDT 2006  simonpj@microsoft.com
2246]
2247[GADT tweaks
2248Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060807002345
2249 Mon Jul 31 12:42:07 EDT 2006  kevind@bu.edu
2250]
2251[Configure changes to make testsuite work better on MSys
2252Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060807000518
2253 Fri Jul 28 06:49:35 EDT 2006  simonpj@microsoft.com
2254]
2255[Remove Control-M from Coercion.hs
2256Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060806235925
2257 Thu Jul 27 04:07:46 EDT 2006  simonpj@microsoft.com
2258]
2259[Add Coercion.lhs
2260Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060806214025
2261 - Extra patch as diff doesn't capture add files
2262]
2263[Adding TcGadt.lhs
2264Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060806213523
2265 - Seperate patch as diff doesn't capture file adds
2266 - Includes the patch:
2267   Wed Jul 26 08:23:35 EDT 2006  simonpj@microsoft.com
2268   Add a missing mkSymCoercion in TcGadt.uVar
2269]
2270[Add a missing prime, to fix desugaring of CoPats
2271Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060806212711
2272 Wed Jul 26 08:23:11 EDT 2006  simonpj@microsoft.com
2273]
2274[Comments and tidy-up
2275Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060806212628
2276 Wed Jul 26 08:22:50 EDT 2006  simonpj@microsoft.com
2277]
2278[Fix a lint bug with coercions
2279Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060806212111
2280 Wed Jul 26 08:18:25 EDT 2006  simonpj@microsoft.com
2281]
2282[GADT fixes
2283Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060806212026
2284 Wed Jul 26 06:00:53 EDT 2006  kevind@bu.edu
2285]
2286[Add CoPat stuff
2287Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060806210058
2288 Wed Jul 19 09:55:27 EDT 2006  kevind@bu.edu
2289]
2290[Resolve conflict in MkExternalCore
2291Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060806011028
2292 Thu Jul  6 09:55:27 EDT 2006  simonpj@microsoft.com
2293]
2294[Massive patch for the first months work adding System FC to GHC #36
2295Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060804222436
2296 
2297 Broken up massive patch -=chak
2298 Original log message: 
2299 This is (sadly) all done in one patch to avoid Darcs bugs.
2300 It's not complete work... more FC stuff to come.  A compiler
2301 using just this patch will fail dismally.
2302]
2303[Massive patch for the first months work adding System FC to GHC #35
2304Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060804222351
2305 
2306 Broken up massive patch -=chak
2307 Original log message: 
2308 This is (sadly) all done in one patch to avoid Darcs bugs.
2309 It's not complete work... more FC stuff to come.  A compiler
2310 using just this patch will fail dismally.
2311]
2312[Massive patch for the first months work adding System FC to GHC #33
2313Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060804221455
2314 
2315 Broken up massive patch -=chak
2316 Original log message: 
2317 This is (sadly) all done in one patch to avoid Darcs bugs.
2318 It's not complete work... more FC stuff to come.  A compiler
2319 using just this patch will fail dismally.
2320]
2321[Massive patch for the first months work adding System FC to GHC #32
2322Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060804221423
2323 
2324 Broken up massive patch -=chak
2325 Original log message: 
2326 This is (sadly) all done in one patch to avoid Darcs bugs.
2327 It's not complete work... more FC stuff to come.  A compiler
2328 using just this patch will fail dismally.
2329]
2330[Massive patch for the first months work adding System FC to GHC #29
2331Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060804221221
2332 
2333 Broken up massive patch -=chak
2334 Original log message: 
2335 This is (sadly) all done in one patch to avoid Darcs bugs.
2336 It's not complete work... more FC stuff to come.  A compiler
2337 using just this patch will fail dismally.
2338]
2339[Massive patch for the first months work adding System FC to GHC #28
2340Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060804221148
2341 
2342 Broken up massive patch -=chak
2343 Original log message: 
2344 This is (sadly) all done in one patch to avoid Darcs bugs.
2345 It's not complete work... more FC stuff to come.  A compiler
2346 using just this patch will fail dismally.
2347]
2348[Massive patch for the first months work adding System FC to GHC #27
2349Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060804221001
2350 
2351 Broken up massive patch -=chak
2352 Original log message: 
2353 This is (sadly) all done in one patch to avoid Darcs bugs.
2354 It's not complete work... more FC stuff to come.  A compiler
2355 using just this patch will fail dismally.
2356]
2357[Massive patch for the first months work adding System FC to GHC #26
2358Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060804220614
2359 
2360 Broken up massive patch -=chak
2361 Original log message: 
2362 This is (sadly) all done in one patch to avoid Darcs bugs.
2363 It's not complete work... more FC stuff to come.  A compiler
2364 using just this patch will fail dismally.
2365]
2366[Massive patch for the first months work adding System FC to GHC #25
2367Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060804220526
2368 
2369 Broken up massive patch -=chak
2370 Original log message: 
2371 This is (sadly) all done in one patch to avoid Darcs bugs.
2372 It's not complete work... more FC stuff to come.  A compiler
2373 using just this patch will fail dismally.
2374]
2375[Massive patch for the first months work adding System FC to GHC #24
2376Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060804220423
2377 
2378 Broken up massive patch -=chak
2379 Original log message: 
2380 This is (sadly) all done in one patch to avoid Darcs bugs.
2381 It's not complete work... more FC stuff to come.  A compiler
2382 using just this patch will fail dismally.
2383]
2384[Massive patch for the first months work adding System FC to GHC #23
2385Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060804215846
2386 
2387 Broken up massive patch -=chak
2388 Original log message: 
2389 This is (sadly) all done in one patch to avoid Darcs bugs.
2390 It's not complete work... more FC stuff to come.  A compiler
2391 using just this patch will fail dismally.
2392]
2393[Massive patch for the first months work adding System FC to GHC #22
2394Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060804215642
2395 
2396 Broken up massive patch -=chak
2397 Original log message: 
2398 This is (sadly) all done in one patch to avoid Darcs bugs.
2399 It's not complete work... more FC stuff to come.  A compiler
2400 using just this patch will fail dismally.
2401]
2402[Massive patch for the first months work adding System FC to GHC #21
2403Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060804215414
2404 
2405 Broken up massive patch -=chak
2406 Original log message: 
2407 This is (sadly) all done in one patch to avoid Darcs bugs.
2408 It's not complete work... more FC stuff to come.  A compiler
2409 using just this patch will fail dismally.
2410]
2411[Massive patch for the first months work adding System FC to GHC #19
2412Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060804213946
2413 
2414 Broken up massive patch -=chak
2415 Original log message: 
2416 This is (sadly) all done in one patch to avoid Darcs bugs.
2417 It's not complete work... more FC stuff to come.  A compiler
2418 using just this patch will fail dismally.
2419]
2420[Massive patch for the first months work adding System FC to GHC #18
2421Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060804213610
2422 
2423 Broken up massive patch -=chak
2424 Original log message: 
2425 This is (sadly) all done in one patch to avoid Darcs bugs.
2426 It's not complete work... more FC stuff to come.  A compiler
2427 using just this patch will fail dismally.
2428]
2429[Massive patch for the first months work adding System FC to GHC #17
2430Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060804212140
2431 
2432 Broken up massive patch -=chak
2433 Original log message: 
2434 This is (sadly) all done in one patch to avoid Darcs bugs.
2435 It's not complete work... more FC stuff to come.  A compiler
2436 using just this patch will fail dismally.
2437]
2438[Massive patch for the first months work adding System FC to GHC #16
2439Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060804211912
2440 
2441 Broken up massive patch -=chak
2442 Original log message: 
2443 This is (sadly) all done in one patch to avoid Darcs bugs.
2444 It's not complete work... more FC stuff to come.  A compiler
2445 using just this patch will fail dismally.
2446]
2447[Massive patch for the first months work adding System FC to GHC #15
2448Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060804200105
2449 
2450 Broken up massive patch -=chak
2451 Original log message: 
2452 This is (sadly) all done in one patch to avoid Darcs bugs.
2453 It's not complete work... more FC stuff to come.  A compiler
2454 using just this patch will fail dismally.
2455]
2456[Massive patch for the first months work adding System FC to GHC #13
2457Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060804195734
2458 
2459 Broken up massive patch -=chak
2460 Original log message: 
2461 This is (sadly) all done in one patch to avoid Darcs bugs.
2462 It's not complete work... more FC stuff to come.  A compiler
2463 using just this patch will fail dismally.
2464]
2465[Massive patch for the first months work adding System FC to GHC #12
2466Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060804195607
2467 
2468 Broken up massive patch -=chak
2469 Original log message: 
2470 This is (sadly) all done in one patch to avoid Darcs bugs.
2471 It's not complete work... more FC stuff to come.  A compiler
2472 using just this patch will fail dismally.
2473]
2474[Massive patch for the first months work adding System FC to GHC #11
2475Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060804195406
2476 
2477 Broken up massive patch -=chak
2478 Original log message: 
2479 This is (sadly) all done in one patch to avoid Darcs bugs.
2480 It's not complete work... more FC stuff to come.  A compiler
2481 using just this patch will fail dismally.
2482]
2483[Massive patch for the first months work adding System FC to GHC #10
2484Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060804195145
2485 
2486 Broken up massive patch -=chak
2487 Original log message: 
2488 This is (sadly) all done in one patch to avoid Darcs bugs.
2489 It's not complete work... more FC stuff to come.  A compiler
2490 using just this patch will fail dismally.
2491]
2492[Massive patch for the first months work adding System FC to GHC #9
2493Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060804194908
2494 
2495 Broken up massive patch -=chak
2496 Original log message: 
2497 This is (sadly) all done in one patch to avoid Darcs bugs.
2498 It's not complete work... more FC stuff to come.  A compiler
2499 using just this patch will fail dismally.
2500]
2501[Massive patch for the first months work adding System FC to GHC #8
2502Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060804193905
2503 
2504 Broken up massive patch -=chak
2505 Original log message: 
2506 This is (sadly) all done in one patch to avoid Darcs bugs.
2507 It's not complete work... more FC stuff to come.  A compiler
2508 using just this patch will fail dismally.
2509]
2510[Massive patch for the first months work adding System FC to GHC #7
2511Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060804193719
2512 
2513 Broken up massive patch -=chak
2514 Original log message: 
2515 This is (sadly) all done in one patch to avoid Darcs bugs.
2516 It's not complete work... more FC stuff to come.  A compiler
2517 using just this patch will fail dismally.
2518]
2519[Massive patch for the first months work adding System FC to GHC #6
2520Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060804193530
2521 
2522 Broken up massive patch -=chak
2523 Original log message: 
2524 This is (sadly) all done in one patch to avoid Darcs bugs.
2525 It's not complete work... more FC stuff to come.  A compiler
2526 using just this patch will fail dismally.
2527]
2528[Massive patch for the first months work adding System FC to GHC #5
2529Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060804192400
2530 
2531 Broken up massive patch -=chak
2532 Original log message: 
2533 This is (sadly) all done in one patch to avoid Darcs bugs.
2534 It's not complete work... more FC stuff to come.  A compiler
2535 using just this patch will fail dismally.
2536]
2537[Massive patch for the first months work adding System FC to GHC #4
2538Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060804192302
2539 
2540 Broken up massive patch -=chak
2541 Original log message: 
2542 This is (sadly) all done in one patch to avoid Darcs bugs.
2543 It's not complete work... more FC stuff to come.  A compiler
2544 using just this patch will fail dismally.
2545]
2546[Massive patch for the first months work adding System FC to GHC #2
2547Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060804191937
2548 
2549 Broken up massive patch -=chak
2550 Original log message: 
2551 This is (sadly) all done in one patch to avoid Darcs bugs.
2552 It's not complete work... more FC stuff to come.  A compiler
2553 using just this patch will fail dismally.
2554]
2555[Comments only
2556simonpj@microsoft.com**20060804082403]
2557[Add new field to TySynonym
2558Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060802171052]
2559[Make 'iso' special in the parser
2560Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060802140630]
2561[Add missing Cast cases to libCase and scExpr
2562kevind@bu.edu**20060801105031]
2563[Make mkApps etc infix, and left-associative
2564simonpj@microsoft.com**20060726121807]
2565[A somewhat subtle (FC-related) bug concerning the monomorphism restriction
2566simonpj@microsoft.com**20060726094655]
2567[Add some type signatures
2568simonpj@microsoft.com**20060714165011]
2569[A class in an interface file defines the CoTyCon of its class tyocn
2570simonpj@microsoft.com**20060713213418]
2571[Tiny comment change (darcs test only)
2572simonpj@microsoft.com**20060706165102]
2573[TAG Before FC branch merge
2574Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060920210412]
2575[TAG Before FC branch merge
2576Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060920210355]
2577[Currently we don't build cabal-setup
2578sven.panne@aedion.de**20060919081759]
2579[Packages cleanup, and allow new packages to be loaded with :set again
2580Simon Marlow <simonmar@microsoft.com>**20060919012448
2581 
2582 This cleans up the package subsystem a little.  There are some
2583 changes to the GHC API as a result.
2584 
2585   - GHC.init and GHC.initFromArgs are no longer necessary.
2586 
2587   - GHC.newSession takes the root of the GHC tree as an argument
2588     (previously passed to GHC.init).
2589 
2590   - You *must* do GHC.setSessionDynFlags after GHC.newSession,
2591     this is what loads the package database.
2592 
2593   - Several global vars removed from SysTools
2594 
2595   - The :set command in GHCi can now cause new packages to be loaded,
2596     or can hide/ignore existing packages.
2597]
2598[one more boring file
2599Simon Marlow <simonmar@microsoft.com>**20060919011849]
2600[fix one boring file
2601Simon Marlow <simonmar@microsoft.com>**20060919011823]
2602[unused imports
2603Simon Marlow <simonmar@microsoft.com>**20060919011746]
2604[add boring files from a build tree
2605Simon Marlow <simonmar@microsoft.com>**20060919011722]
2606[remove old comment
2607Simon Marlow <simonmar@microsoft.com>**20060919010333]
2608[unused import
2609Simon Marlow <simonmar@microsoft.com>**20060919010303]
2610[some updates
2611Simon Marlow <simonmar@microsoft.com>**20060918232924]
2612[use ghc-pkg --force-files, and update command-line syntax
2613Simon Marlow <simonmar@microsoft.com>**20060918232903]
2614[add --force-files, like --force but doesn't allow missing dependencies
2615Simon Marlow <simonmar@microsoft.com>**20060918232834]
2616[emit an error if the user ran autoconf instead of autoreconf
2617Simon Marlow <simonmar@microsoft.com>**20060916084205]
2618[Sanity check that all the core packages are present
2619Simon Marlow <simonmar@microsoft.com>**20060916070529
2620 To catch the case of not running darcs-all get.
2621]
2622[reformat import
2623Simon Marlow <simonmar@microsoft.com>**20060913103512]
2624[minor reformatting
2625Simon Marlow <simonmar@microsoft.com>**20060913103427]
2626[compiler/ isn't boring
2627Simon Marlow <simonmar@microsoft.com>**20060913021300]
2628[Added parsing rule for BangPattern in case expr
2629Markus Lauer <markus.lauer@acm.org>**20060918161850]
2630[Fix a bug in subsumption, and tweak error messages
2631simonpj@microsoft.com**20060918005223
2632 
2633 This commit does two largely-unrelated things, but they hit the same code.
2634 
2635 First, I tweaked the error messages a bit, to give better errors
2636 for impredicative polymorphism.  This added the mb_fun argument to
2637 tc_sub.
2638 
2639 Second, I fixed a long-standing bug in tc_sub.  In the isBoxyTyVar case
2640 of tc_sub (rule F2) I was not recursing to tc_sub as the rule suggests,
2641 but rather calling u_tys.  This is plain wrong, because the first
2642 arugment might have more foralls.   
2643 
2644 The solution is to recurse to tc_sub, but that in turn requires a parameter,
2645 exp_ib, which says when we are inside a box.
2646 
2647 Test is tc210.
2648 
2649]
2650[Comments
2651simonpj@microsoft.com**20060918005142]
2652[Ensure that only zonked poly_ids are passed to tcSpecPrag
2653simonpj@microsoft.com**20060918004805
2654 
2655 This is a long-standing bug really (Trac #900).  The poly_id passed
2656 to tcSpecPrag should be zonked, else it calls tcSubExp with a non-zonked
2657 type; but that contradicts the latter's invariant.
2658 
2659 I ended up doing a bit of refactoring too.  The extra lines are
2660 comments I think; the code line count is reduced.
2661 
2662 Test is tc212.hs
2663 
2664]
2665[Comments only
2666simonpj@microsoft.com**20060918004109]
2667[Add a missing renamer dump (related to Template Haskell)
2668simonpj@microsoft.com**20060917171707]
2669[Instantiate data constructor type variables with the type constructor type variables in constraints for derived class instances. Fixes instance deriving for GADTs which declar H98 types, closing ticket #902.
2670bringert@cs.chalmers.se**20060915233315]
2671[Fixed error in user's manual, gadt section, part about deriving. Data constructor type was Maybe, should be Maybe1.
2672bringert@cs.chalmers.se**20060915230517]
2673[Replace "&" with "and" as this also gets pulled into the docbook docs
2674Ian Lynagh <igloo@earth.li>**20060912125617]
2675[move the "meat" into the wiki, this file just contains pointers now
2676Simon Marlow <simonmar@microsoft.com>**20060911135037]
2677[Another s/autrijus/audreyt/ in comments.
2678audreyt@audreyt.org**20060912121323]
2679[Take away XXXs in GADT records related code that are no longer TODOs.
2680audreyt@audreyt.org**20060912120942]
2681[Fix ~2000 second profiling time wrapping bug
2682Ian Lynagh <igloo@earth.li>**20060911223210]
2683[Add postfix ops to the release notes
2684simonpj@microsoft.com**20060912081104]
2685[Document postfix operators
2686simonpj@microsoft.com**20060911162843]
2687[Simplify desugaring of left sections
2688simonpj@microsoft.com**20060911083510
2689 
2690        MERGE TO 6.6 branch!
2691 
2692 Some while ago I made the type checker a tiny bit more lenient about
2693 left sections, so that
2694        (x !)
2695 would typecheck iff
2696        ((!) x)
2697 typechecks. 
2698 
2699 Strictly, Haskell 98 requires that the section typechecks iff
2700        (\y. (!) x y)
2701 typechecks, and I should really have made the relaxation dependent on a
2702 flag, but I didn't.
2703 
2704 Anyway, this commit fixes the *desugarer* so that it correctly desugars
2705 the programs that the typechecker passes.
2706 
2707 
2708]
2709[Add comment
2710simonpj@microsoft.com**20060911083440]
2711[Fix warnings traceBegin/traceEnd implicitly declared
2712Ian Lynagh <igloo@earth.li>**20060910200611]
2713[Fix linking to expf on Windows
2714Ian Lynagh <igloo@earth.li>**20060910141506]
2715[adapt stylesheet to example-contents class used by xsltproc
2716Ross Paterson <ross@soi.city.ac.uk>**20060910143941]
2717[8 byte align data. Fixes SIBGUSs on HPPA/Linux.
2718Ian Lynagh <igloo@earth.li>**20060909102445]
2719[We now need alex >= 2.0.1
2720Ian Lynagh <igloo@earth.li>**20060908191706]
2721[remove generated files in a 'finally' manner
2722sof@galois.com**20060909144432]
2723[Catch errors in pattern matching for unboxed tuples
2724simonpj@microsoft.com**20060908095217
2725 
2726 When fiddling with pattern-matching for unboxed tuples, I'd messed up
2727 the slightly-tricky tests for pattern matching on unboxed tuples, notably
2728        case (# foo, bar #) of r -> ...r...
2729 
2730 The fix is in TcPat, and test are tcfail115, tcfail120, and tc209
2731 
2732]
2733[Typo, spotted by Bulat Ziganshin
2734Ian Lynagh <igloo@earth.li>**20060908014947]
2735[Release note tweaks suggested by Bulat Ziganshin
2736Ian Lynagh <igloo@earth.li>**20060908014050]
2737[Doc fix: generic classes are no longer broken
2738Ian Lynagh <igloo@earth.li>**20060907205426
2739 Spotted by Bulat Ziganshin.
2740]
2741[Fixed typo in users guide section about lexically scoped type variables.
2742bringert@cs.chalmers.se**20060907214626]
2743[If we get an unknown or unimplemented opcode, say what it is
2744Ian Lynagh <igloo@earth.li>**20060907171038]
2745[remove __HUGS__ #if's (Hugs uses the standalone version)
2746Ross Paterson <ross@soi.city.ac.uk>**20060907152930]
2747[Remove the -optP-P from .raw-hs generation
2748Simon Marlow <simonmar@microsoft.com>**20060907151855
2749 We need the #line directives left in, so that Haddock can figure out
2750 what the name of the original source file was called, which is
2751 necessary for generating source links.  You probably now need an
2752 updated Haddock to generate HTML from the libraries, but a release
2753 will be forthcoming shortly.
2754 
2755]
2756[Fix the handling of names in declaration brackets
2757simonpj@microsoft.com**20060907141845
2758 
2759 The handling of top-level names in declaration brackets is a bit tricky.
2760 This commit fixes Trac #977;  test is TH_spliceD2.
2761 
2762 The changes are commented in RnExpr.rnBracket and RdrName.hideSomeUnquals
2763 
2764 
2765]
2766[urk, the dependencies added in the last commit don't really work properly
2767Simon Marlow <simonmar@microsoft.com>**20060907113702
2768 first, I got the dependencies wrong (should be the .o file, not the
2769 .hs), and secondly GHC's recompilation checker refuses to recompile
2770 these files anyway.  I haven't done anything about the second problem
2771 yet, except to comment it.
2772 
2773]
2774[Remove trailing CRs with sed rather than relying on diff in nofib
2775Ian Lynagh <igloo@earth.li>**20060907112027
2776 Some diffs don't understand --strip-trailing-cr.
2777]
2778[Documentation for impredicative polymorphism
2779simonpj@microsoft.com**20060907111540]
2780[Comments only
2781simonpj@microsoft.com**20060907105705]
2782[Remove result type signatures from documentation
2783simonpj@microsoft.com**20060907104301]
2784[Fix bug in error message
2785simonpj@microsoft.com**20060907103052]
2786[Result type signatures are no longer supported (partial)
2787simonpj@microsoft.com**20060907102718
2788 
2789 I had failed to remove the bit where result type signatures bind
2790 lexical type variables.  And now we are planning to remove them entirely.
2791 
2792 This commit therefore does a partial removal (to avoid destablising 6.6).
2793 It also arranges that
2794        f :: sig = rhs
2795 means a *pattern* binding (not a function binding with no arguments
2796 and a result signature), which makes sense.
2797 
2798]
2799[Add dependencies on .h files #included into Haskell source
2800Simon Marlow <simonmar@microsoft.com>**20060907094751
2801 Our .depend machinery doesn't automatically generate these, so we have
2802 to add them manually.  (this fixes one instance of missing
2803 dependencies in the GHC build tree, there are lots more...).
2804]
2805[Remove CONSTR_CHARLIKE and CONSTR_INTLIKE closure types
2806Simon Marlow <simonmar@microsoft.com>**20060907093005
2807 These closure types aren't used/needed, as far as I can tell.  The
2808 commoning up of Chars/Ints happens by comparing info pointers, and
2809 the info table for a dynamic C#/I# is CONSTR_0_1.  The RTS seemed
2810 a little confused about whether CONSTR_CHARLIKE/CONSTR_INTLIKE were
2811 supposed to be static or dynamic closures, too.
2812]
2813[document -V in the +RTS --help outpout
2814Simon Marlow <simonmar@microsoft.com>**20060907084445]
2815[Pattern-match warning police
2816simonpj@microsoft.com**20060906220417]
2817[Improve error reporting for SigTvs, and add comments
2818simonpj@microsoft.com**20060906220309]
2819[Check that top-level binders are unqualified names
2820simonpj@microsoft.com**20060906220101
2821 
2822 Not having this check led to strange error messages.
2823 See test rnfail046.
2824 
2825]
2826[Don't fail on missing happy/alex if we don't need them
2827Ian Lynagh <igloo@earth.li>**20060906195415]
2828[Make record selection look cheap
2829simonpj@microsoft.com**20060906115242
2830 
2831 exprIsCheap was already making record selection look cheap, esp for
2832 dictionary selection; e.g.
2833    (==) dEq
2834 
2835 The idea is to allow those record selections to migrate inside a
2836 lambda, because on the whole it's more expensive to share than
2837 repeat them.
2838 
2839 But sometimes dictionary selection is nested; e.g.
2840    (==) ($p1Num dNum)
2841 
2842 This turned out to make a (fragile) rewrite rule fire a little
2843 more robustly, but it seems like a good idea in any case.
2844 
2845 This patch makes nested record selections also look cheap.
2846 
2847]
2848[Documentation for lexically-scoped type variables
2849simonpj@microsoft.com**20060906164103
2850 
2851 GHC's design for lexically scoped type variables has changed.
2852 Here, belatedly, is the documentation.
2853 
2854]
2855[Fix the Windows "VirtualAlloc MEM_COMMIT failed" bug
2856Ian Lynagh <igloo@earth.li>**20060906112750
2857 We had
2858     base=01100000 size=1048576 size_delta=0 it->size=2097152
2859     it->base=00F00000 base-it->base=00200000
2860 in commitBlocks.
2861 Esa Ilari Vuokko identified this inequality test as the cause.
2862]
2863[Now in the wiki
2864Simon Marlow <simonmar@microsoft.com>**20060906104022]
2865[-threaded and -prof do not currently work together
2866Simon Marlow <simonmar@microsoft.com>**20060906093158]
2867[Correct the Cabal version number and remove features.
2868Duncan Coutts <duncan.coutts@worc.ox.ac.uk>**20060905232047
2869 We're not going to include cabal-setup and cabal-install in this release.
2870]
2871[Strip trailing CRs when comparing output for nofib. Fixes #797.
2872Ian Lynagh <igloo@earth.li>**20060905184910]
2873[new RTS flag: -V to modify the resolution of the RTS timer
2874Ian Lynagh <igloo@earth.li>**20060905141545
2875 Fixed version of an old patch by Simon Marlow. His description read:
2876  Also, now an arbitrarily short context switch interval may now be
2877  specified, as we increase the RTS ticker's resolution to match the
2878  requested context switch interval.  This also applies to +RTS -i (heap
2879  profiling) and +RTS -I (the idle GC timer).  +RTS -V is actually only
2880  required for increasing the resolution of the profile timer.
2881]
2882[Fix dependency analysis (notably bindInstsOfLocalFuns) in TcBinds
2883simonpj@microsoft.com**20060905105143
2884 
2885 GHC 6.5 does enhanced dependency analysis for recursive bindings, to
2886 maximise polymorphism based on type signatures.  (See Mark Jones's
2887 THIH paper.) 
2888 
2889 I didn't do the bindInstsOfLocalFuns part correctly though, and jhc
2890 showed up the bug.  (It only matters when you have a recursive group
2891 of two or more functions with a type signature, not at top level, which
2892 is why it hasn't shown up till now.)
2893 
2894 Test is tc207.hs
2895 
2896 
2897]
2898[Add note about overlapping instances
2899simonpj@microsoft.com**20060905092201]
2900[Record that TH doesn't support pattern types signature
2901simonpj@microsoft.com**20060905091834]
2902[Fix typos.
2903Ian Lynagh <igloo@earth.li>**20060904190958]
2904[Refactoring for derived Read
2905simonpj@microsoft.com**20060904132212
2906 
2907 There are no functional changes in this commit.  But the code for
2908 derived Read is refactored to make it tidier --- and also to make
2909 it very easy if we want derived Read to parse the prefix form of
2910 infix ocnstructors. 
2911 
2912 For example,
2913        data T = Int `T1` Int
2914 According to the H98 report, the derived Read instance will parse
2915 infix uses of T1, but not prefix uses (T1 4 3).  It's arguable that it
2916 should parse both -- and easy to implement, but it would cause a little bit
2917 of code bloat.
2918 
2919 Similarly records.
2920 
2921 Anyway this commit doesn't implement the change; just makes it easy
2922 to do so.
2923 
2924]
2925[Enable bang-patterns only when the flag says so (had missed a case before)
2926simonpj@microsoft.com**20060904131412]
2927[Improve pretty-printing for HsExpr
2928simonpj@microsoft.com**20060904131334]
2929[Remove linear implicit parameters, and document in release notes
2930simonpj@microsoft.com**20060904125105]
2931[Release notes should mention better newtype-deriving
2932simonpj@microsoft.com**20060904124458]
2933[Documentation for bang patterns, and other improvements
2934simonpj@microsoft.com**20060904123438]
2935[Add a hint on tab completion
2936Ian Lynagh <igloo@earth.li>**20060903224823]
2937[Add :main docs to ghci commands page
2938Ian Lynagh <igloo@earth.li>**20060903223107]
2939[Ambiguities are now allowed in ghci command names
2940Ian Lynagh <igloo@earth.li>**20060903222115]
2941[More output updates
2942Ian Lynagh <igloo@earth.li>**20060903221933]
2943[Add docs for :main
2944Ian Lynagh <igloo@earth.li>**20060903220130]
2945[More doc output fixes
2946Ian Lynagh <igloo@earth.li>**20060903215748]
2947[Update ghci output in docs
2948Ian Lynagh <igloo@earth.li>**20060903214128]
2949[Fix typo
2950Ian Lynagh <igloo@earth.li>**20060903212651]
2951[Update ghci output in docs
2952Ian Lynagh <igloo@earth.li>**20060903210805]
2953[Remove a tab causing ghci's :? alignment to go wrong
2954Ian Lynagh <igloo@earth.li>**20060903210349]
2955[Don't lose linked list tail
2956Esa Ilari Vuokko <ei@vuokko.info>**20060831223315]
2957[Fix Windows MBlock alloctor bookkeeping bug
2958Esa Ilari Vuokko <ei@vuokko.info>**20060830185540]
2959[-fglasgow-exts no longer implies -fbang-patterns
2960simonpj@microsoft.com**20060901125714]
2961[Fix error in release notes, spotted by Esa Ilari Vuokko
2962Ian Lynagh <igloo@earth.li>**20060901125841]
2963[Remove changes in packages we don't build
2964Ian Lynagh <igloo@earth.li>**20060901125436]
2965[Don't enable SMP if we are unregisterised
2966Ian Lynagh <igloo@earth.li>**20060829123228]
2967[Add a pointer to the fundeps paper
2968simonpj@microsoft.com**20060831135511]
2969[free the task *after* calling closeCond and closeMutex
2970Simon Marlow <simonmar@microsoft.com>**20060831103648]
2971[add missing ghc_ge_605
2972Simon Marlow <simonmar@microsoft.com>**20060831101813]
2973[don't closeMutex() the Capability lock
2974Simon Marlow <simonmar@microsoft.com>**20060831085728
2975 There might be threads in foreign calls that will attempt to return
2976 via resumeThread() and grab this lock, so we can't safely destroy it.
2977 
2978 Fixes one cause of
2979 
2980    internal error: ASSERTION FAILED: file Capability.c, line 90
2981 
2982 although I haven't repeated that assertion failure in the wild, only
2983 with a specially crafted test case, so I can't be sure I really got
2984 it.
2985]
2986[fix Unix build
2987Simon Marlow <simonmar@microsoft.com>**20060830141529]
2988[add sysErrorBelch() for reporting system call errors
2989Simon Marlow <simonmar@microsoft.com>**20060830140252]
2990[call ShutdownIOManager() before closing handles
2991Simon Marlow <simonmar@microsoft.com>**20060830123131
2992 To avoid IO requests completing only to discover that the
2993 completed_table_sema has been CloseHandle()'d.  This all looks a bit
2994 wrong, though: we shouldn't really be waiting for these requests to
2995 complete, they might take forever.
2996]
2997[Windows: make some soft failures into fatal errors
2998Simon Marlow <simonmar@microsoft.com>**20060830091859
2999 Some of the memory allocation calls were being checked for error, but
3000 the RTS was printing a message and continuing.  These error cases
3001 lead to crashes later, so better to just fail immediately.
3002]
3003[MAYBE_GC: initialise HpAlloc
3004Simon Marlow <simonmar@microsoft.com>**20060830091529
3005 HpAlloc was not being set when returning to the scheduler via MAYBE_GC(),
3006 which at the least was just wrong (the scheduler might allocate a large
3007 block more than once), and at worst could lead to crashes if HpAlloc contains
3008 garbage.
3009 
3010 Fixes at least one threaded2 test on Windows.
3011]
3012[FILL_SLOP: don't fill slop for BLACKHOLE/CAF_BLACKHOLE
3013Simon Marlow <simonmar@microsoft.com>**20060830083311
3014 This affects -debug only, avoids crash with test conc012.
3015]
3016[oops, got the sense of the error case wrong
3017Simon Marlow <simonmar@microsoft.com>**20060829151751]
3018[fix some rerrors in the worker counting
3019Simon Marlow <simonmar@microsoft.com>**20060829135150]
3020[add missing case for BlockedOnDoProc
3021Simon Marlow <simonmar@microsoft.com>**20060829113345]
3022[omit HGL on Windows
3023Simon Marlow <simonmar@microsoft.com>**20060829104921]
3024[Don't trust "ln -sf" to do the right thing (it doesn't on Solaris)
3025Simon Marlow <simonmar@microsoft.com>**20060829093735
3026 Patch from: Roman Leshchinskiy
3027]
3028[don't include HaXml, Japi and monads in a GHC checkout
3029Simon Marlow <simonmar@microsoft.com>**20060829085946
3030 They aren't built as part of a GHC build anyway, it doesn't make much
3031 sense to include them in checkouts or source tarballs.
3032]
3033[don't include .depend (attempt to fix Windows stage2 build failure)
3034Simon Marlow <simonmar@microsoft.com>**20060829083842]
3035[Add mipsel case to configure.ac
3036Ian Lynagh <igloo@earth.li>**20060825193603]
3037[incremented versions of arrows and X11
3038Ross Paterson <ross@soi.city.ac.uk>**20060825162415]
3039[omit Control.Sequential.STM
3040Ross Paterson <ross@soi.city.ac.uk>**20060825161645
3041 
3042 It's an internal module used by non-GHC implementations only.
3043]
3044[various minor tweaks, and rearrange to put "important" changes near the top
3045Simon Marlow <simonmar@microsoft.com>**20060825154955]
3046[mention -fno-mono-pat-binds, since this is a diversion from Haskell 98
3047Simon Marlow <simonmar@microsoft.com>**20060825152613]
3048[Document SMP support
3049Simon Marlow <simonmar@microsoft.com>**20060825151236]
3050[Load the target of a dynamic foreign call into a temporary
3051Simon Marlow <simonmar@microsoft.com>**20060825140906
3052 Fixes ffi011(opt) on x86_64.  I don't know why this has only just
3053 appeared today, it's apparently been broken for some time.
3054]
3055[Sparc supports SMP too
3056Simon Marlow <simonmar@microsoft.com>**20060825133628]
3057[Fix rewriting of Control.Exception.Assert; fixes 875
3058Ian Lynagh <igloo@earth.li>**20060825010219]
3059[Add the regex reshuffle to the release notes
3060Ian Lynagh <igloo@earth.li>**20060825110520]
3061[parsec is now a core library
3062Ian Lynagh <igloo@earth.li>**20060825102418]
3063[Add a default case to pprDynamicLinkerAsmLabel
3064Roman Leshchinskiy <rl@cse.unsw.edu.au>**20060825101846
3065 
3066 This is mainly for the benefit of Solaris. I'll fix this properly later.
3067]
3068[Reserve a register for REG_Base on the Sparc
3069Roman Leshchinskiy <rl@cse.unsw.edu.au>**20060825101820]
3070[Add atomic SMP primitives for the Sparc
3071Roman Leshchinskiy <rl@cse.unsw.edu.au>**20060825101753]
3072[Make sure GCC uses the Sparc V9 instruction set
3073Roman Leshchinskiy <rl@cse.unsw.edu.au>**20060825101646
3074 
3075 We only support Sparc V9 and better as V8 lacks an atomic CAS instruction
3076 which we need for SMP. This means that we have to pass -mcpu=v9 to GCC when
3077 compiling and assembling. Hardcoding the flag is hackish but seems to be
3078 our best bet at the moment. It can still be overridden by the user as GCC
3079 picks the best -mcpu flag regardless of the ordering.
3080]
3081[shutdownCapability(): don't bail out after 50 iterations
3082Simon Marlow <simonmar@microsoft.com>**20060825100244
3083 See comments for details.  Fixes assertion failures in stage 3 build
3084 which appeared after recent closeMutex() addidion.  May fix other
3085 shutdown issues.
3086]
3087[add dependency on regex-compat
3088Simon Marlow <simonmar@microsoft.com>**20060825093226]
3089[move parsec into $(GhcBootLibs); tidy up
3090Simon Marlow <simonmar@microsoft.com>**20060825091013]
3091[Mips registerised support
3092Simon Marlow <simonmar@microsoft.com>**20060825085712
3093 Contributed by: Thiemo Seufer <ths@networkno.de>
3094]
3095[parsec is required to be a core package, genprimopcode uses it
3096Simon Marlow <simonmar@microsoft.com>**20060825084607]
3097[Free Win32 Handles on shutdown
3098Simon Marlow <simonmar@microsoft.com>**20060825084435
3099 patch from #878
3100]
3101[Fix unregisterised builds, and building on non-x86/amd64/powerpc
3102Ian Lynagh <igloo@earth.li>**20060825003945]
3103[Release notes for GHC 6.6
3104Ian Lynagh <igloo@earth.li>**20060824211646]
3105[Update for changes to packages
3106Simon Marlow <simonmar@microsoft.com>**20060824153500
3107 Not much has changed really: just the removal of the overlap
3108 restriction, and the re-instatement of the requirement that
3109 -package-name must be used when compiling a package now.
3110]
3111[somehow I lost the unix subdir; recover it
3112Simon Marlow <simonmar@microsoft.com>**20060824152529]
3113[expand the section on getting the source.
3114Simon Marlow <simonmar@microsoft.com>**20060824150647]
3115[config in regex-posix too
3116Simon Marlow <simonmar@microsoft.com>**20060824145717]
3117[make all AC_CONFIG_SUBDIRS optional
3118Simon Marlow <simonmar@microsoft.com>**20060824143016]
3119[Add dynCompileExpr
3120Esa Ilari Vuokko <ei@vuokko.info>**20060823221828]
3121[Remove duplicate documentation of -package flag
3122Ian Lynagh <igloo@earth.li>**20060824121806]
3123[Remove a reference to -fglobalise-toplev-names that got left behind
3124Ian Lynagh <igloo@earth.li>**20060824121442]
3125[Add closeMutex and use it on clean up
3126Esa Ilari Vuokko <ei@vuokko.info>**20060823194604]
3127[Add shared Typeable support
3128Esa Ilari Vuokko <ei@vuokko.info>**20060823003041]
3129[Ignore sections generated from .ident
3130Esa Ilari Vuokko <ei@vuokko.info>**20060823155023]
3131[update with respect to darcs-all changes
3132Simon Marlow <simonmar@microsoft.com>**20060824115535]
3133[divide packages into "core" and "extra" packages
3134Simon Marlow <simonmar@microsoft.com>**20060824114902
3135 The following packages are now "core" packages:
3136 
3137   base, Cabal, haskell98, readline, regex-base, regex-compat
3138   regex-posix, stm, template-haskell, unix, Win32
3139 
3140 Core packages are those packages required to bootstrap GHC, or are
3141 closely tied to GHC (stm, template-haskell).  These are the packages
3142 that will be provided in a source distribution from now on.
3143 
3144 All other packages are classified as "extra" packages.  As far as
3145 binary distributions and nightly builds go, nothing will change -
3146 we'll still build and include all these packages in the distributions.
3147 
3148 NOTE: 'sh darcs-all get' will now get the core packages only.  To get
3149 the extra packages too, use 'sh darcs-all --extra get'.
3150]
3151[Sparc fix: work around gcc optimising away the reserved stack chunk
3152Simon Marlow <simonmar@microsoft.com>**20060824113750
3153 This bug causes crashse on Sparc when calling foreign functions with
3154 more than 13 arguments.
3155]
3156[add new regex packages
3157Simon Marlow <simonmar@microsoft.com>**20060824094443]
3158[Clean up coding style
3159Esa Ilari Vuokko <ei@vuokko.info>**20060823075822]
3160[Use stgMallc and stgFree instead of malloc/free
3161Esa Ilari Vuokko <ei@vuokko.info>**20060823002902]
3162[Remove wrong VirtualAlloc MEM_DECOMMITs on cleanup
3163Esa Ilari Vuokko <ei@vuokko.info>**20060821180332]
3164[Remove few format-warnings by adding casts
3165Esa Ilari Vuokko <ei@vuokko.info>**20060813111029]
3166[Remove warning: Correct includes for mingw
3167Esa Ilari Vuokko <ei@vuokko.info>**20060813002216]
3168[Add few more guesses where to find bits of mingw-gcc
3169Esa Ilari Vuokko <ei@vuokko.info>**20060812020901]
3170[in the GHCi prompt, print ModuleNames not Modules
3171Simon Marlow <simonmar@microsoft.com>**20060823095258]
3172[In the Compiling/Skipping message, print ModuleNames not Modules
3173Simon Marlow <simonmar@microsoft.com>**20060823095225
3174 These modules are always home modules, by definition, so the package
3175 name is redundant.
3176 
3177]
3178[Fix typo
3179Ian Lynagh <igloo@earth.li>**20060822163300]
3180[Fix typo
3181Ian Lynagh <igloo@earth.li>**20060822163212]
3182[FastString and StringBuffer need -funbox-strict-fields too
3183Simon Marlow <simonmar@microsoft.com>**20060822143337
3184 For the benefit of old GHCs that don't understand {-# UNPACK #-}
3185]
3186[minor fix to the clashing export error message
3187Simon Marlow <simonmar@microsoft.com>**20060822112518
3188 The ordering of items in the parsed export list is now correct, so we
3189 have to compensate to get the right output again.
3190]
3191[findModule: add a fallthrough error case
3192Simon Marlow <simonmar@microsoft.com>**20060822112409]
3193[notes about which versions of GHC can be used to bootstrap
3194Simon Marlow <simonmar@microsoft.com>**20060822093554]
3195[disable .ident generation on darwin_TARGET_OS
3196Simon Marlow <simonmar@microsoft.com>**20060822090349]
3197[fix typo
3198Simon Marlow <simonmar@microsoft.com>**20060822073731]
3199[fixes to PPC version of cas(), from David Kirkman <dkirkman@gmail.com>
3200Simon Marlow <simonmar@microsoft.com>**20060821153136
3201 
3202 From David's email:
3203 The problem is that the inline assembler code was placing the result
3204 of an operation in a register that is used as input later in the code.
3205 At the bottom of this message I've extracted a short short code
3206 fragment that you can run through gcc (on a powerpc machine) to see
3207 the generated assembly output.
3208 
3209 The changes to fix the problem are fairly simple.  The first adds an
3210 ampersand to the output list of the assembly fragment ("=r" (result)
3211 --> "=&r" (result)) The ampersand just tells gcc that result can not
3212 be placed in a register used for any of the input parameters (o, n, or
3213 p).  Otherwise, it feels free to place output parameters in the same
3214 registers used by the inputs -- but because of the flow of control
3215 here we need everything in a distinct register.  This change fixes the
3216 TVar program above.
3217 
3218 The second change adds a clobber list (the :"cc", "memory").  This
3219 tells gcc that the condition code (due to the compare) and memory (due
3220 to the store) might be changed during the asm execution.  The lack of
3221 a clobber list did not seem to be causing any trouble, but without it
3222 gcc is free to assume that no state is changed during the execution.
3223]
3224[Always use -funbox-strict-fields for Binary
3225Simon Marlow <simonmar@microsoft.com>**20060821152111
3226 For some reason this was only enabled when $(bootstrapped)=YES.  This
3227 would be one reason why the stage1 compiler is slow.  I guess we'll
3228 find out if anything goes wrong.
3229]
3230[disable automagic building of GHCi in stage1
3231Simon Marlow <simonmar@microsoft.com>**20060821151957]
3232[remove ancient file with incorrect information
3233Simon Marlow <simonmar@microsoft.com>**20060821141946]
3234[new option -a (append) for hasktags
3235Martin Grabmueller <magr@cs.tu-berlin.de>**20060816091427]
3236[ugly hack to cause ghc_boot_platform.h to be built before primops.txt
3237Simon Marlow <simonmar@microsoft.com>**20060821120630]
3238[add libraries/cgi and libraries/xhtml
3239Simon Marlow <simonmar@microsoft.com>**20060821102908]
3240[(temp) #814 - More flexible memory allocation in Windows
3241Esa Ilari Vuokko <ei@vuokko.info>**20060820150720]
3242[fix export/import list parsing (allow (,)), and remove unnecessary reverses
3243Simon Marlow <simonmar@microsoft.com>**20060821102633]
3244[comply with Haskell 98 by not allowing extra commas in import/export lists
3245Simon Marlow <simonmar@microsoft.com>**20060821095912]
3246[Missing stage1's in hc-build
3247Ian Lynagh <igloo@earth.li>**20060821092226
3248 Add mising stage1/ directories to object files touched by hc-build, and
3249 give stage=1 as an argument to make install.
3250]
3251[remove spurious commas in imports
3252Ross Paterson <ross@soi.city.ac.uk>**20060819173423]
3253[whitespace cleanup only
3254Ross Paterson <ross@soi.city.ac.uk>**20060818224014]
3255[remove gcj libs from bin dist
3256sof@galois.com**20060818214155]
3257[I don't thing we want to add a call-context here; it just clutters the output
3258simonpj@microsoft.com**20060818160729]
3259[Avoid duplicate "In type ..." in error messages
3260simonpj@microsoft.com**20060818160611]
3261[Better pretty-printing for TvSubst
3262simonpj@microsoft.com**20060818160551]
3263[Fall over more gracefully when there's a Template Haskell error
3264simonpj@microsoft.com**20060818110702
3265 
3266 For a long time, Template Haskell has fallen over in a very un-graceful
3267 way (i.e. panic) even when it encounters a programmer error.  In particular,
3268 when DsMeta converts HsSyn to TH syntax, it may find Haskell code that
3269 TH does not understand. This should be reported as a normal programmer
3270 error, not with a compiler panic!
3271 
3272 Originally the desugarer was supposed to never generate error
3273 messages, but this TH desugaring thing does make it do so.  And in
3274 fact, for other reasons, the desugarer now uses the TcRnIf monad, the
3275 common monad used by the renamer, typechecker, interface checker, and
3276 desugarer. 
3277 
3278 This patch completes the job, by
3279  - allowing the desugarer to generate errors
3280  - re-plumbing the error handling to take account of this
3281  - making DsMeta use the new facilities to report error gracefully
3282 
3283 Quite a few lines of code are touched, but nothing deep is going on.
3284 
3285 Fixes Trac# 760.
3286 
3287]
3288[Fix typo (fst --> head) in docs on implicit parameters
3289simonpj@microsoft.com**20060818075937]
3290[One last hs-boot update
3291simonpj@microsoft.com**20060817134216]
3292[Missing import for stage 2
3293simonpj@microsoft.com**20060817133247]
3294[One more hs-boot file
3295simonpj@microsoft.com**20060817133220]
3296[Refactoring for valid rule checking
3297simonpj@microsoft.com**20060817130141]
3298[Do not CSE in INLINE and NOINLINE things
3299simonpj@microsoft.com**20060817130005
3300 
3301 See extensive comments with Note [INLINE and NOINLINE] in this file.
3302 
3303]
3304[Update lhs-boot files
3305simonpj@microsoft.com**20060817132003
3306 
3307 A consequence of my recent meddling with hs-boot files is that GHC is
3308 more picky about the correpondence between the hs-boot file and the hs file.
3309 In particular, you must use the same type synonyms.
3310 
3311 This patche fixes up GHC's own hs-boot files to match the restriction.
3312 
3313]
3314[Add ad-hoc typing checks for tagToEnum#
3315simonpj@microsoft.com**20060816203156
3316 
3317 The problem with tagToEnum# is that it is not overloaded (in the
3318 Haskell sense) but you are only supposed to apply it to a TyCon
3319 that is an enumeration (isEnumerationTyCon).
3320 
3321 The Real Way to do this is to have some special kind of type constraint
3322 for the purpose, but that is wild overkill. So this patch adds a small
3323 rather ad-hoc check to TcExpr.instFun.  Crude, simple, but it works fine.
3324 
3325 Fixes Trac #786
3326 Test is tcfail164
3327 
3328]
3329[Get dead-ness right in knownCon
3330simonpj@microsoft.com**20060816164216]
3331[Tuning for argToPat
3332simonpj@microsoft.com**20060816164103
3333 
3334 argToPat is a crucial function for SpecConstr, because it decides
3335 what patterns are worth specialising.  I was being much too gung-ho about
3336 constants.  This patch makes it much better.
3337 
3338]
3339[Re-factor mkAtomicArgs and completeNonRecX
3340simonpj@microsoft.com**20060816163645
3341 
3342 This refactoring ensures that when mkAtomicArgs adds new bindings,
3343 it does so using completeNonRecX, which adds unfoldings etc.  More
3344 modular, and saves passes too.
3345 
3346 (This was important when getting rules to work right.  We want tob
3347 fire a rule as soon as possible, taking into account all inlinings,
3348 else a less-good rule applies.  That's what I found when doing
3349 stream fusion anyway.)
3350 
3351 Regardless, this is an improvement.
3352 
3353]
3354[Another try at the continuation-swapping stuff
3355simonpj@microsoft.com**20060816105042
3356 
3357 I have spent altogether too long on my attempt to avoid case-of-case
3358 in situations where it is a Bad Thing.  All the action is in the
3359 case for mkDupableAlt that handles cases with a single alternative.
3360 
3361 I've added rather extensive comments, and it finally seems to be working
3362 more or less right.  If you compile (say) GHC/Real.o you'll see quite a
3363 few case-of-cases remain (which didn't happen before), and they mostly look
3364 pretty sensible to me.
3365 
3366]
3367[Don't build unnecessary lets in knownCon
3368simonpj@microsoft.com**20060816104831
3369 
3370 Faced with
3371        case x of y { (a,b) -> rhs }
3372 
3373 where x is bound to (c,d), we were generating
3374       
3375        let y = (c,d) in rhs
3376 
3377 and thenn hoping to get rid of the y binding by CSE or some such.  It's
3378 better simply not to build it in the first place, by generating
3379 
3380        let y = x in rhs
3381 
3382 This patch does the job.
3383 
3384]
3385[Comments only
3386simonpj@microsoft.com**20060816104817]
3387[Refactoring, plus record recursive-function *components* as RecArg too
3388simonpj@microsoft.com**20060816085809]
3389[Record constructor arg occs correctly (bug-fix)
3390simonpj@microsoft.com**20060816085628
3391 
3392 I was forgetting the non-pattern-matched type args of a constructor.
3393 
3394]
3395[Disable form-checking for rule LHSs
3396simonpj@microsoft.com**20060816085612
3397 
3398 Previously we checked the form of the arguments of a RULE lhs, to
3399 ensure that they were simple applications. There was no good reason
3400 for that, save to prevent you writing LHSs that were unlikely to match.
3401 
3402 And Don Stewart found he wanted to do something we didn't allow (a section,
3403 I think).  So I have just disabled the check.
3404 
3405]
3406[Allow class and instance decls in hs-boot files
3407simonpj@microsoft.com**20060815123402
3408 
3409 For some reason, in 6.5 the manual said you could put a class decl in
3410 an interface file, but not an instance decl; whereas the implementation
3411 was exactly the othe way round.
3412 
3413 This patch makes it possible to put *both* class and instance decls
3414 in an interface file.
3415 
3416 I also did a bit of re-factoring; comparing the declarations in the
3417 hs-boot and hs file is now done by converting to IfaceSyn, because we
3418 have good comparison operations for IfaceSyn already implemented.
3419 This fixed a bug that previously let through an inconsistent declaration
3420 of a data type.
3421 
3422 The remaining infelicity concerns "abstract" TyCons.  They are a bit
3423 of a hack anyway; and Classes are not handled in the same way.  Need
3424 to think about this, but I think it's probably ok as it stands.
3425 
3426 
3427]
3428[Reject derivable type classes with higher-rank methods
3429simonpj@microsoft.com**20060815075928
3430 
3431 Trac #864 suggested a derivable type class with a higher-rank method.
3432 
3433 In principle this is quite do-able, but in practice the mechanism works
3434 by generating source code and then doing type inference.  To make this work
3435 with higher-rank types would require impredicative polymorphism. And we
3436 do have that, so it could probably be made to work by generating (source-level)
3437 type annotations.  But it's real work, so I'm settling for generating a
3438 decent error message rather than crashing.
3439 
3440 
3441]
3442[SpecConstr now specialises on constants and lambdas
3443simonpj@microsoft.com**20060815162605
3444 
3445 Roman inspired me to beef up SpecConstr to deal with
3446 a) constant arguments
3447 b) lambda arguments
3448 
3449 This is described in elaborate comments in the file:
3450        Note [Specialising for constant parameters]
3451        Note [Specialising for lambda parameters]
3452 
3453 I also took the opportunity to fix the usage analysis done by
3454 SpecConstr, which was only handling the top-level correctly.
3455 Now it does nesting too.
3456 
3457 
3458]
3459[Fix two bugs in rule-matching
3460simonpj@microsoft.com**20060815162030
3461 
3462 These two typo-like bugs have been there for a long time!
3463 
3464   One concerns the selection of overlapping rules,
3465   which was back to front
3466 
3467   The other was name-lining-up bug in the Case case of matching
3468 
3469 This patch also arranges to export matchN.
3470   (Not a good name, but still!)
3471 
3472 
3473]
3474[Moving list-length code from one place in the file to another
3475simonpj@microsoft.com**20060815161947]
3476[Make UniqSM into a proper monad
3477simonpj@microsoft.com**20060815161829]
3478[Typo in patch that dealt with duplicating continuations in Simplify
3479simonpj@microsoft.com**20060815070246]
3480[Be more conservative about duplicating continuations
3481simonpj@microsoft.com**20060814165424
3482 
3483 Roman found that GHC was duplicating continuations that arose (essentially)
3484 from uses of 'seq', or strict constructors.  This fixes the problem;
3485 see the comments mkDupableCont (the Select case with a single alternative).
3486 
3487 I'm a little concerned that this may also miss useful case-of-case
3488 tranformations, so I'd like to know if anyone finds that this patch
3489 makes performance worse.
3490 
3491 To make it a bit more gung-ho, one could check for all the binders
3492 being dead, before choosing this new, conservative alternative.
3493 
3494 
3495]
3496[Inline into tail-called constructor args
3497simonpj@microsoft.com**20060814165127
3498 
3499 Consider
3500        x = case y of { True -> (p,q); ... }
3501 
3502 The occurrence analyser was marking p,q as 'Many', because they args
3503 of a constructor in an RhsCtxt.  But actually they aren't in a RhsCtxt,
3504 and in this case it's better to inline.
3505 
3506]
3507[Improve exprIsCheap
3508simonpj@microsoft.com**20060814165043
3509 
3510 exprIsCheap is meant to return True iff it's ok to push the expression
3511 inside a lambda.  But the previous version would return True of a nested
3512 construtor application like (1:2:3:[]), which isn't right.
3513 
3514 This patch re-factors the code somewhat, and fixes the bug.
3515 
3516]
3517[Added xhtml and cgi as default libraries.
3518bringert@cs.chalmers.se**20060814113242]
3519[Improve error message in TcHsType
3520simonpj@microsoft.com**20060814095617
3521 
3522 Fixes Trac #863.
3523 Test is tcfail162
3524 
3525]
3526[Warning police: Removed overlapped pattern warnings
3527sven.panne@aedion.de**20060811151353]
3528[Complete -fmono-pat-binds patch
3529simonpj@microsoft.com**20060811142842
3530 
3531 When adding the experimental -fmono-pat-binds, I forgot to check
3532 for type signatures of the now-monomorphic patterns.  This patch
3533 completes the job.
3534 
3535 I documented the design too:
3536    http://haskell.galois.com/cgi-bin/haskell-prime/trac.cgi/wiki/MonomorphicPatternBindings
3537 
3538]
3539[Avoid warning about overlapped pattern for Linux target
3540sven.panne@aedion.de**20060811140512]
3541[Improve error message layouts
3542simonpj@microsoft.com**20060811133317]
3543[Add type signature
3544simonpj@microsoft.com**20060811133302]
3545[Improve the "could not find module" error message
3546Simon Marlow <simonmar@microsoft.com>**20060811132135
3547 In particular, if we're searching for the profiling version of a
3548 module in another package, then suggest that perhaps it might not have
3549 been installed.
3550]
3551[On FreeBSD, use -lthr instead of -pthread for now (see comments)
3552Simon Marlow <simonmar@microsoft.com>**20060811113453]
3553[Two more error message indendations
3554simonpj@microsoft.com**20060811110435]
3555[Go back to calling type veriables t
3556simonpj@microsoft.com**20060811110412]
3557[Indent an error message
3558simonpj@microsoft.com**20060811110347]
3559[Improve error message (imported from Prelude at Implicit import declaration)
3560simonpj@microsoft.com**20060811110301]
3561[don't qualify module name for importedSrcLoc
3562Simon Marlow <simonmar@microsoft.com>**20060811101327]
3563[use "Defined in" rather than "Imported from" when printing ImportedSrcLoc
3564Simon Marlow <simonmar@microsoft.com>**20060811101159]
3565[Now that we have an "html" package, put the Haddock docs somewhere else
3566sven.panne@aedion.de**20060811092609]
3567[Nuked hschooks.h in favour of cutils.h, which has the prototypes we need
3568sven.panne@aedion.de**20060810154225]
3569[Match format strings and arguments for printf-like functions
3570sven.panne@aedion.de**20060810153624]
3571[Warning police: Make prototype for LDV_recordDead_FILL_SLOP_DYNAMIC visible
3572sven.panne@aedion.de**20060810144837]
3573[Warning police: Make strlen and friends known
3574sven.panne@aedion.de**20060810144729]
3575[Tweak GCC's inlining parameters to get thread_obj inlined
3576sven.panne@aedion.de**20060810144505]
3577[Add an IAmDead case to postInlineUnconditionally, and comments
3578simonpj@microsoft.com**20060810142034]
3579[Do not repeatedly simplify an argument more than once
3580simonpj@microsoft.com**20060810141526
3581 
3582 A very important invariant of the simplifier is that we do not simplify
3583 an arbitrarily large expression more than once in a single pass. If this
3584 can happen, then we can get exponential behaviour, when the large expression
3585 itself has a large sub-expression which is simplified twice, and so on.
3586 
3587 GHC has a long-standing bug which allows this repeated simplification to
3588 happen.  It shows up when we have a function like this
3589 
3590        f d BIG
3591 where f's unfolding looks like
3592        \x -> case x of (a,b) -> a
3593 Of course this is v common for overloaded functions.
3594 
3595 Before this patch we simplified all the args (d and BIG) before
3596 deciding to unfold f.  Then we push back the simplified BIG onto the
3597 continuation stack, inline f, so now we have
3598        (case d of (a,b) -> a) BIG
3599 After we reduce the case a bit, we'll simplify BIG a second time.  And
3600 that's the problem.
3601 
3602 The quick-and-dirty solution is to keep a flag in the ApplyTo continuation
3603 to say whather the arg has already been simplified.  An alternative would
3604 be to simplify it when first encountered, but that's a bigger change.
3605 
3606 
3607]
3608[Do not call preInlineUnconditionally in simplNonRecX
3609simonpj@microsoft.com**20060810141340
3610 
3611 This looks to me like a long-standing bug. simplNonRecX was calling
3612 preInlineUnconditionally, even though it was given an already-simplified
3613 expression.  Exponential behaviour beckons.
3614 
3615]
3616[Make postInlineUnconditaionally more conservative
3617simonpj@microsoft.com**20060810141145
3618 
3619 I'm being more paranoid about repeatedly simplifying things (to avoid
3620 exponential behaviour.)  postInlineUnconditionally looks as if it
3621 could repeated simplify the same expression; this patch stops it doing
3622 so.
3623 
3624 The extra lines are all comments!
3625 
3626 
3627]
3628[Control.Exception.unblock wasn't unblocking exceptions
3629Simon Marlow <simonmar@microsoft.com>**20060810132307]
3630[remove out of date comment
3631Simon Marlow <simonmar@microsoft.com>**20060810130154]
3632[move html before network, for now
3633Simon Marlow <simonmar@microsoft.com>**20060810121930]
3634[add html package
3635Simon Marlow <simonmar@microsoft.com>**20060810113719]
3636[Egregious bug in tcLHsConResTy
3637simonpj@microsoft.com**20060810120828
3638 
3639 This terrible bug in tcLHsConTy is pretty much guaranteed to show up
3640 on an program involving a GADT with more than one type parameter.
3641 
3642 This bug isn't present in the STABLE branch.
3643 
3644 Manuel: it is *not* necesary to merge this patch into the FC branch;
3645 just ignore it.
3646 
3647]
3648[Comments about improvements to SpecConstr
3649simonpj@microsoft.com**20060810120759]
3650[Remove HasBounds-instance and implement MArray.getBounds instead
3651Esa Ilari Vuokko <ei@vuokko.info>**20060809163012]
3652[Fix Array imports
3653Esa Ilari Vuokko <ei@vuokko.info>**20060809161341]
3654[Where we use $(GhcHcOpts), also add $(GhcStage1HcOpts)
3655Simon Marlow <simonmar@microsoft.com>**20060809144845
3656 This fixes building the compiler with -prof in $(GhcStage1HcOpts)
3657]
3658[fixes to the stage2 build following removal of old FFI syntax
3659Simon Marlow <simonmar@microsoft.com>**20060809143153]
3660[fix bug in task freeing
3661Simon Marlow <simonmar@microsoft.com>**20060809141225]
3662[add some more options to stage 2
3663Simon Marlow <simonmar@microsoft.com>**20060809141058]
3664[remove debugging code accidentally left in
3665Simon Marlow <simonmar@microsoft.com>**20060809102936]
3666[remember that old FFI syntax has been dropped
3667Simon Marlow <simonmar@microsoft.com>**20060809101655]
3668[only define GHCI if $(GhcWithInterpreter)=YES, also add -threaded
3669Simon Marlow <simonmar@microsoft.com>**20060809101634]
3670[move altzone test to base package
3671Ross Paterson <ross@soi.city.ac.uk>**20060809124215]
3672[remove unused FPTOOLS_CHECK_HTYPE macro
3673Ross Paterson <ross@soi.city.ac.uk>**20060809124036]
3674[Remove the artifical cap on the number of workers
3675Simon Marlow <simonmar@microsoft.com>**20060809095908
3676 See #805.  This was here to catch bugs that resulted in an infinite
3677 number of worker threads being created.  However, we can't put a
3678 reasonable bound on the number of worker threads, because legitimate
3679 programs may need to create large numbers of (probably blocked) worker
3680 threads.  Furthermore, the OS probably has a bound on the number of
3681 threads that a process can create in any case.
3682 
3683 
3684 
3685]
3686[Remove old FFI syntax
3687Simon Marlow <simonmar@microsoft.com>**20060809095201
3688 See #815
3689]
3690[make exit() overridable, for use in DLLs
3691Simon Marlow <simonmar@microsoft.com>**20060809092439
3692 See #753
3693]
3694[More fixes to pre-matching and pre-subsumption
3695simonpj@microsoft.com**20060808224924
3696 
3697 Actually this patch fixes two errors. one was a trivial typo in
3698 tha last patch (b_ty should be b_tau), which led to an infinite loop
3699 when compiling Data.Generic.Twins. 
3700 
3701 Fixing that revealed a more serious error in the same function.
3702 I was sloppy about dealing robsutly with name-capture for nested
3703 quantifiers in pre-subsumption and pre-matching; and sure enough
3704 I got bitten.  Sigh.  I think it is right now.
3705 
3706]
3707[Group exports so that all length functions are together; no semantic change
3708simonpj@microsoft.com**20060808224808]
3709[Check that lazy patterns are for lifted types
3710simonpj@microsoft.com**20060808135910
3711 
3712 A lazy pattern match must be for a lifted type. This is illegal:
3713 
3714        f x = case g x of
3715                 ~(# x,y #) -> ...
3716 
3717 This commit fixes the problem.  Trac #845, test is tcfail159
3718 
3719]
3720[Spelling in a comment
3721simonpj@microsoft.com**20060808123514]
3722[Remove srcSpanStartLine/srcSpanEndLine crash
3723simonpj@microsoft.com**20060808123211
3724 
3725 srcSpanStartLine/srcSpanEndLine panic on UnhelpfulLoc. They should not
3726 really be exported by SrcLoc at all, but unfortunately they are used in
3727 Lexer.x, which knows enough to avoid the panic.
3728 
3729 However the call in RnEnv didn't know, and the panic was triggered
3730 by Template Haskell spliced code.  This patch fixes it by exporting
3731 the predicate RnEnv wanted, namely isOneLineSpan.
3732 
3733]
3734[Replace deprecated AC_TRY_COMPILE macro with the reccomended replcament
3735Duncan Coutts <duncan.coutts@worc.ox.ac.uk>**20060706114902
3736 See: http://www.gnu.org/software/autoconf/manual/html_node/Obsolete-Macros.html
3737]
3738[Add ghc and version number in .ident directive in NCG
3739Duncan Coutts <duncan.coutts@worc.ox.ac.uk>**20060706114712
3740 Just because we can and because every other compiler does,
3741 lets stick in an identifier directive: .ident "GHC x.y.z"
3742 into the assembly output of the NCG.
3743]
3744[Support the GNU non-exec stack annotation system
3745Duncan Coutts <duncan.coutts@worc.ox.ac.uk>**20060706114331
3746 On recent GNU ELF systems one can mark an object file as not
3747 requiring an executable stack. If all objects- linked into a
3748 program have this note then the program will not use an executable
3749 stack, which is good for security (and some distros have it as a
3750 QA policy). GHC generated code does not need an executable stack
3751 so add the note to the assembly output of the native code
3752 generator (conditional on a configure test).
3753]
3754[Complain more loudly if any of the hsc2hs phases fail
3755Duncan Coutts <duncan.coutts@worc.ox.ac.uk>**20060703234356
3756 previously hsc2hs just exits with a non-zero exit code, now if any of
3757 the compilation, linking or runing phases fail then we get a message
3758 saying so and the failing command is printed.
3759]
3760[Remember to free() memory on exit
3761Simon Marlow <simonmar@microsoft.com>**20060808103110
3762 Patch mostly from Lennart Augustsson in #803, with additions to
3763 Task.c by me.
3764]
3765[Fix pre-subsumption and pre-matching
3766simonpj@microsoft.com**20060808091108
3767 
3768 The pre-subsuption and pre-matching functions should NEVER make bogus
3769 bindings of type variables, although they are free to bale out and make
3770 too few bindings.
3771 
3772 I hadn't been thiking carefully enough about this, and there were two
3773 separate bugs. 
3774 
3775 - Firstly, in pre-subsumption we must ignore the 'theta'
3776   part of any overloaded type. 
3777 
3778 - Second, in pre-matching, we must return the empty subustition
3779   on a mis-match, rather than returning the substitution so far.
3780 
3781 This bug showed up when compiling Data.Generics.Schemes.hs, and is
3782 imortalised in test tc206
3783 
3784]
3785[Improve error message
3786simonpj@microsoft.com**20060808080255
3787 
3788 Improve a little-used error message.  Given
3789        f :: a -> a
3790        f x y = e
3791 the error says
3792 
3793        The equations for f have two arguments
3794        but its type `a -> a' has only one
3795 
3796 (Before, it said "its type `a' has only one" which is bogus.
3797 
3798]
3799[Pull out common removal code, and detect does-not-exist correctly
3800Ian Lynagh <igloo@earth.li>**20060710214308]
3801[Create our own directory in the temporary directory to avoid various races
3802Ian Lynagh <igloo@earth.li>**20060710204424]
3803[Merge SysTools import declarations
3804Ian Lynagh <igloo@earth.li>**20060709183850]
3805[Don't freeze the dynamic flags used for filename generation before the pipeline starts
3806Ian Lynagh <igloo@earth.li>**20060709145101]
3807[#807: Removed double fclose of prof_file
3808Ian Lynagh <igloo@earth.li>**20060708152424
3809 prof_file was being fclose'd in both gen_XML_logfile and hs_exit, leading
3810 to glibc complaining of a double free.
3811]
3812[Add -fextended-default-rules and -fmono-pat-binds
3813simonpj@microsoft.com**20060807112107
3814 
3815 Add -fextended-deafult-rules (in response to Don Stewart's message below),
3816 and document them.
3817 
3818 Also doucument -fmono-pat-binds/-fno-mono-pat-binds, which has been in
3819 GHC a few weeks now.
3820 
3821 (The two are in one patch because the diffs were so close together
3822 that Darcs combined them.)
3823 
3824 Simon
3825 
3826 
3827 From: Donald Bruce Stewart [mailto:dons@cse.unsw.edu.au]
3828 Sent: 07 August 2006 10:52
3829 
3830 While we're thinking about defaulting, I have a question..
3831 
3832 ghci uses an extended defaulting system, to allow things like:
3833         Prelude> reverse []
3834         []
3835 to work, and to have the right instance of Show found. The manual says:
3836 
3837     "..it is tiresome for the user to have to specify the type, so GHCi extends
3838     Haskell's type-defaulting rules (Section 4.3.4 of the Haskell 98 Report
3839     (Revised)) as follows. If the expression yields a set of type constraints
3840     that are all from standard classes (Num, Eq etc.), and at least one is
3841     either a numeric class or the Show, Eq, or Ord class, GHCi will try to use
3842     one of the default types, just as described in the Report. The standard
3843     defaulting rules require that one of the classes is numeric; the difference
3844     here is that defaulting is also triggered at least one is Show, Eq, or Ord."
3845 
3846 Currently, there is no way to get at this "extended" defaulting for compiled
3847 modules. However, I have a use case for in fact doing this.
3848 
3849 With runtime evaluated Haskell, embedding 'interpreters' (over hs-plugins) is
3850 easy. lambdabot, for example, implements a sandboxed haskell eval system. But
3851 it doesn't have access to the defaulting mechanism of ghci, so we have:
3852 
3853     dons:: > reverse []
3854     lambdabot:: Add a type signature
3855     dons:: > reverse [] :: [()]
3856     lambdabot:: []
3857 
3858 Which is annoying -- newbies wonder why they have to add these extra
3859 constraints to get a Show instance.
3860 
3861 I'm wondering, since the extended defaulting mechanisms are already
3862 implemented, could they be made available to compiled modules as well,
3863 perhaps using a flag, -fextended-defaulting?
3864 
3865]
3866[add a comment
3867Simon Marlow <simonmar@microsoft.com>**20060807143102]
3868[Do pre-subsumption in the main subsumption check
3869simonpj@microsoft.com**20060804214942
3870 
3871 This patch improves the subsumption check (in TcUnify.tc_sub) so that
3872 it does pre-subsumption first.  The key code is in the case with
3873 guard (isSigmaTy actual_ty); note the new call to preSubType.
3874 
3875 Shorn of details, the question is this.  Should this hold?
3876 
3877        forall a. a->a   <=   Int -> (forall b. Int)
3878 
3879 Really, it should; just instantiate 'a' to Int.  This is just what
3880 the pre-subsumption phase (which used in function applications),
3881 will do.
3882 
3883 I did a bit of refactoring to achieve this.
3884 
3885 Fixes Trac #821.  Test tc205 tests.
3886 
3887]
3888[Make unification robust to a boxy type variable meeting itself
3889simonpj@microsoft.com**20060801214302
3890 
3891 Previously, the implicit assumption in unification is that a boxy
3892 type variable could never occur on both sides of the unification,
3893 so that we'd never find
3894        bx5 :=: bx5
3895 
3896 But the pre-subsumption stuff really means that the same variable
3897 can occur on both sides.  Consider
3898        forall a. a->Int <= bx5->Int
3899 Then pre-subumption will find a->bx5; and the full subsumption step
3900 will find bx5:=bx5.
3901 
3902 However, I think there is still no possiblity of a full occurs-check
3903 failure; that is,
3904        bx5 :=: Tree bx5
3905 Although I can't quite see how to prove it!  So I've added a
3906 DEBUG test in uMetaVar to check for this case.
3907 
3908]
3909[Added cabal-setup
3910sven.panne@aedion.de**20060804142149]
3911[Don't include the package name in a cost centre's module name
3912Simon Marlow <simonmar@microsoft.com>**20060803093337
3913 This is mainly to restore the old behaviour, but also we shouldn't
3914 normally need the package name in a cost centre because only the
3915 "main" package normally has cost centres.
3916]
3917[Add a new section "Getting the Source" to both HACKING and README. But what about win32 users?
3918shae@ScannedInAvian.com**20060720152929]
3919[savingOldConfig: add Exception.block for extra paranoia
3920Simon Marlow <simonmar@microsoft.com>**20060801131027
3921 
3922]
3923[Refactor ghc-pkg
3924Ian Lynagh <igloo@earth.li>**20060729192946
3925 This patch fixes a couple of issues with the
3926     Be lazier in user config creation, and don't fail on missing configs.
3927 patch. It puts the createDirectoryIfMissing back in and removes assumptions
3928 that the package.conf file already exists.
3929]
3930[No functionality changes
3931Ian Lynagh <igloo@earth.li>**20060730105256
3932 Consistently used spaces rather than tabs.
3933 Removed trailing whitespace.
3934 Wrapped comments to fit in a standard terminal.
3935]
3936[Add notes about unsafeCoerce
3937simonpj@microsoft.com**20060731080922]
3938[.hi-boot-5 is obsolete; the earliest GHC we support uses .hi-boot-6
3939Simon Marlow <simonmar@microsoft.com>**20060728140809
3940 
3941 
3942]
3943[update to match .lhs-boot
3944Simon Marlow <simonmar@microsoft.com>**20060728140607]
3945[get ReadP from the right place.
3946Simon Marlow <simonmar@microsoft.com>**20060728140444
3947 
3948]
3949[Improve error message for deriving
3950simonpj@microsoft.com**20060727160832]
3951[Lazy patterns are like wild-cards for overlap warnings
3952simonpj@microsoft.com**20060727155009
3953 
3954        MERGE TO STABLE
3955 
3956 Fixes Trac #827
3957 Test is should_compiler/ds058
3958 
3959]
3960[fix some problems with wired-in packages
3961Simon Marlow <simonmar@microsoft.com>**20060727153802]
3962[oops, remove old packages when updating
3963Simon Marlow <simonmar@microsoft.com>**20060727150650]
3964[fix symbols for GHC.PrimopWrappers
3965Simon Marlow <simonmar@microsoft.com>**20060727134755]
3966[a couple more symbols need package names
3967Simon Marlow <simonmar@microsoft.com>**20060727102129]
3968[Add missing import
3969simonpj@microsoft.com**20060727085605]
3970[Make -fcontext-stack into a dynamic flag
3971simonpj@microsoft.com**20060727080422
3972 
3973   This allows you to put -fcontext-stack into an options pragma,
3974   as requested by Trac #829
3975   
3976   While I was at it, I added OptIntPrefix to the forms allowed
3977   in CmdLineParser.
3978 
3979]
3980[Deal correctly with infix type constructors in GADT decls
3981simonpj@microsoft.com**20060726225304]
3982[Improve pretty printing of ConDecl
3983simonpj@microsoft.com**20060726225223]
3984[fix parse error (merge-o, I think)
3985Simon Marlow <simonmar@microsoft.com>**20060726103526]
3986[fix DEBUG build
3987Simon Marlow <simonmar@microsoft.com>**20060726103433]
3988[missed one symbol that needs a package name
3989Simon Marlow <simonmar@microsoft.com>**20060726085844]
3990[change wired-in Haskell symbols to include the package name
3991Simon Marlow <simonmar@microsoft.com>**20060726084659]
3992[Unbox the Unique stored in a Name
3993Simon Marlow <simonmar@microsoft.com>**20060725141747
3994 I measured that this makes the comiler allocate a bit more, but it
3995 might also make it faster and reduce residency.  The extra allocation
3996 is probably just because we're not inlining enough somewhere, so I
3997 think this change is a step in the right direction.
3998]
3999[optimisations to newUnique
4000Simon Marlow <simonmar@microsoft.com>**20060725140816
4001 
4002 It turned out that newUnique was wasting one node of the splittable
4003 uniq supply per invocation: it took the current supply, split it, used
4004 the unique from one half and stored the other half in the monad.  In
4005 other words, the unique in the supply stored in the monad was never
4006 used. 
4007 
4008 This optimisation fixes that and adds a bit of strictness, which
4009 together lead to small reduction in allocations by the compiler, and
4010 possibly an improvement in residency (hard to tell for sure when GCs
4011 move around).
4012]
4013[tiny bit of extra strictness
4014Simon Marlow <simonmar@microsoft.com>**20060725131201]
4015[Make a SplitUniqSupply contain an Int# rather than an Int
4016Simon Marlow <simonmar@microsoft.com>**20060725120252
4017 The I# constructor is always removed when we make a unique later
4018 anyway, so this just saves a bit of time and allocation.
4019]
4020[Use -package-name rather than -ignore-package
4021Simon Marlow <simonmar@microsoft.com>**20060725130913]
4022[Remove most of the conflict checking and auto-hiding
4023Simon Marlow <simonmar@microsoft.com>**20060725130850
4024 Now that the module restriction has been lifted, the auto-hiding is
4025 mostly not required.  GHC itself automatically hides old versions of a
4026 package.
4027]
4028[Generalise Package Support
4029Simon Marlow <simonmar@microsoft.com>**20060725130154
4030 
4031 This patch pushes through one fundamental change: a module is now
4032 identified by the pair of its package and module name, whereas
4033 previously it was identified by its module name alone.  This means
4034 that now a program can contain multiple modules with the same name, as
4035 long as they belong to different packages.
4036 
4037 This is a language change - the Haskell report says nothing about
4038 packages, but it is now necessary to understand packages in order to
4039 understand GHC's module system.  For example, a type T from module M
4040 in package P is different from a type T from module M in package Q.
4041 Previously this wasn't an issue because there could only be a single
4042 module M in the program.
4043 
4044 The "module restriction" on combining packages has therefore been
4045 lifted, and a program can contain multiple versions of the same
4046 package.
4047 
4048 Note that none of the proposed syntax changes have yet been
4049 implemented, but the architecture is geared towards supporting import
4050 declarations qualified by package name, and that is probably the next
4051 step.
4052 
4053 It is now necessary to specify the package name when compiling a
4054 package, using the -package-name flag (which has been un-deprecated).
4055 Fortunately Cabal still uses -package-name.
4056 
4057 Certain packages are "wired in".  Currently the wired-in packages are:
4058 base, haskell98, template-haskell and rts, and are always referred to
4059 by these versionless names.  Other packages are referred to with full
4060 package IDs (eg. "network-1.0").  This is because the compiler needs
4061 to refer to entities in the wired-in packages, and we didn't want to
4062 bake the version of these packages into the comiler.  It's conceivable
4063 that someone might want to upgrade the base package independently of
4064 GHC.
4065 
4066 Internal changes:
4067 
4068   - There are two module-related types:
4069 
4070         ModuleName      just a FastString, the name of a module
4071         Module          a pair of a PackageId and ModuleName
4072 
4073     A mapping from ModuleName can be a UniqFM, but a mapping from Module
4074     must be a FiniteMap (we provide it as ModuleEnv).
4075 
4076   - The "HomeModules" type that was passed around the compiler is now
4077     gone, replaced in most cases by the current package name which is
4078     contained in DynFlags.  We can tell whether a Module comes from the
4079     current package by comparing its package name against the current
4080     package.
4081 
4082   - While I was here, I changed PrintUnqual to be a little more useful:
4083     it now returns the ModuleName that the identifier should be qualified
4084     with according to the current scope, rather than its original
4085     module.  Also, PrintUnqual tells whether to qualify module names with
4086     package names (currently unused).
4087 
4088 Docs to follow.
4089]
4090[comment formatting
4091Simon Marlow <simonmar@microsoft.com>**20060725110519
4092 
4093]
4094[unused import
4095Simon Marlow <simonmar@microsoft.com>**20060706141349]
4096[unused import
4097Simon Marlow <simonmar@microsoft.com>**20060706141205]
4098[remove more Addr bits
4099Simon Marlow <simonmar@microsoft.com>**20060704151217]
4100[unused import
4101Simon Marlow <simonmar@microsoft.com>**20060704141319]
4102[add default cases
4103Simon Marlow <simonmar@microsoft.com>**20060704135444]
4104[redundant import
4105Simon Marlow <simonmar@microsoft.com>**20060704135435]
4106[unused imports
4107Simon Marlow <simonmar@microsoft.com>**20060704135117]
4108[unused import
4109Simon Marlow <simonmar@microsoft.com>**20060704134557]
4110[remove unused bits, mostly to do with the Addr type
4111Simon Marlow <simonmar@microsoft.com>**20060704124912]
4112[In interface files, store FastStrings rather than OccNames where possible
4113Simon Marlow <simonmar@microsoft.com>**20060724154826
4114 In all cases the namespace is known from the context, so this saves 1
4115 byte per variable binding/occurrence (a few percent per iface file).
4116]
4117[Add -fmono-pat-binds, and make it the default
4118simonpj@microsoft.com**20060722102245
4119 
4120 In Haskell 98, pattern bindings are generalised.  Thus in
4121        (f,g) = (\x->x, \y->y)
4122 both f and g will get polymorphic types.  I have become convinced
4123 that generalisation for pattern-bound variables is just a bridge
4124 toof far. It is (I claim) almost never needed, and it adds significant
4125 complication.  (All the more so if we add bang patterns.)
4126 
4127 So the flag -fmono-pat-binds switches off generalisation for pattern
4128 bindings.  (A single variable is treated as a degnerate funtction
4129 binding.) 
4130 
4131 Furthremore, as an experiment, I'm making it the default.  I want
4132 to see how many progarms fail with monomorphic pattern bindings.
4133 
4134 You can recover the standard behaviour with -fno-mono-pa-binds.
4135 
4136]
4137[Fix RULES lossage
4138simonpj@microsoft.com**20060722101756
4139 
4140 Don Stewart and Duncan Coutts encountered the following situation.
4141        f = <rhs>
4142        {-# RULES f ... #-}
4143 where f is not exported, but appears in the inlinings of other
4144 functions that are exported.  Then what happened was that the desugarer
4145 produced this:
4146        M.f = f
4147        f = <rhs>
4148 where the rules get attached to the M.f. But since M.f's RHS is trivial
4149 (just f) it was unconditionally inlinined at all its call sites,
4150 thereby losing the RULES attached to it.
4151 
4152 This *is* a fragile aspect of rules. However this fix solves the
4153 problem by instead generating
4154        f = M.f
4155        M.f = <rhs>
4156 
4157 A pretty small chanage to the desugarer does the job.  It still feels
4158 a little fragile, bt it's certainly more robust than before.
4159 
4160]
4161[Fix broken regex
4162Simon Marlow <simonmar@microsoft.com>**20060721111144
4163 Don't know how I managed to use this before... maybe a different regex
4164 library.
4165]
4166[fix bug in sample code
4167Simon Marlow <simonmar@microsoft.com>**20060721083200]
4168[fix eran error message by reordering a couple of tests
4169simonmar@microsoft.com**20060719111638]
4170[Use a recursive error handler in case the exception causes more exceptions.
4171Lemmih <lemmih@gmail.com>**20060717232553]
4172[Check for overlap-flag differences in hi files
4173simonpj@microsoft.com**20060714163843
4174 
4175        MERGE TO STABLE
4176 
4177 I'd forgotten to compare the per-instance overlap flag when
4178 comparing interface files, and that meant that consequential
4179 recompilations weren't being triggered when the only change
4180 was to add -fallow-overlapping-instances
4181 
4182 Fixes Trac bug #824
4183 
4184 
4185]
4186[Add a clarification about overlapping instances in the manual
4187simonpj@microsoft.com**20060714143220]
4188[Comments and import trimming
4189simonpj@microsoft.com**20060712153306]
4190[Experimental flag -fdicts-cheap
4191simonpj@microsoft.com**20060712153204
4192 
4193 This experimental flag, -fdicts-cheap, makes a let-binding that bind a
4194 value of dictionary type look cheap.  That in turn leads to more
4195 eta expansion.  Instead of
4196        f = /\a. \(d1:Ord a). let d2:Ord [a] = dfOrd a d1 in
4197                  \(x:a). <stuff>
4198 which has arity 1, you get
4199        f = /\a. \(d1:Ord a). \(x:a).
4200                 let d2:Ord [a] = dfOrd a d1 in <stuff>
4201 Now f has arity 2.
4202 
4203 This can cretainly waste dictionary-construction work, if f is
4204 partially applied to its dictionary argument.  However it has knock-on
4205 effects.  Because f has arity 2, we won't float (f Int d) out of
4206        \x. h (f Int d)
4207 Floating f out of this lambda makes it impossible for an h/f fusion
4208 rule to fire; and this unexpected loss of RULE application was the
4209 immediate reason for implementing this flag. (Roman Leshchinskiy came
4210 across this when working on array fusion.)
4211 
4212 
4213 I've implemented the change only in CoreUtils.arityType, which
4214 only affects eta expansion.  I thought of putting the change in
4215 exprIsCheap, which is a more systematic place (the former calls
4216 the latter) but
4217 
4218        a) I wanted this under flag control, and the flags
4219        are not readily available to all callers of exprIsCheap
4220 
4221        b) I'm not 100% convinced that this change is a good
4222        idea, so it's reasonable to do the narrowest change
4223        that solves the immediate problem.
4224]
4225[document that -fglasgow-exts is needed for RULES to work
4226Malcolm.Wallace@cs.york.ac.uk**20060712093907]
4227[do a better job of ignoring unrecognised pragmas
4228Simon Marlow <simonmar@microsoft.com>**20060712083550]
4229[Don't z-encode module names in external-core output
4230Jan Rochel <jan.rochel@stud.uka.de>**20060706131109]
4231[re-add -fvia-C
4232Simon Marlow <simonmar@microsoft.com>**20060710081522
4233 There are still some fixes required to get the threaded RTS compilable
4234 with the NCG, and apparently there are problems on 32-bit archs too.
4235 
4236]
4237[Be lazier in user config creation, and don't fail on missing configs.
4238Ian Lynagh <igloo@earth.li>**20060624230800]
4239[Z-Encode external-core output
4240Jan Rochel <jan.rochel@stud.uka.de>**20060702214438
4241 
4242 HEAD doesn't z-encode external-core output (unlike 6.4). I suppose, that
4243 this is unwanted behaviour. It probably results from this patch:
4244 
4245 ========================================================================
4246 Fri Jan  6 17:30:19 CET 2006  simonmar
4247   * [project @ 2006-01-06 16:30:17 by simonmar]
4248   Add support for UTF-8 source files
4249 
4250 [...]   
4251 
4252 Z-encoding has been moved right to the back end.  Previously we
4253 used to Z-encode every identifier on the way in for simplicity,
4254 and only decode when we needed to show something to the user.
4255 Instead, we now keep every string in its UTF-8 encoding, and
4256 Z-encode right before printing it out.
4257 
4258 [...]
4259 ========================================================================
4260 
4261 Greetings
4262 Jan
4263]
4264[Add %local-tag to external core output
4265Jan Rochel <jan.rochel@stud.uka.de>**20060702204559
4266 
4267 Hello, this is my first patch contributed to GHC. If there are any
4268 inadequacies about it (maybe like this introductory disclaimer), please
4269 let me know about it.
4270 
4271 So, the need for this patch arose, while I was involved with processing
4272 hcr files (external core output) and I noticed, that the output didn't
4273 fully conform to the specification [1].
4274 No %local-tags were used, which turned out to be a real nuisance as it
4275 was not possible to determine which VDEFs can be erased in a further
4276 optimization process and which ones are exported by the module.
4277 
4278 Since the specification does not define the meaning of the %local-tag, I
4279 assume, it makes sense, that it tags all functions, that are not
4280 exported by the module.
4281 
4282 The patch does not fully comply to the specification, as in my
4283 implementation a local tag may appear before a VDEF but not before a
4284 VDEFG.
4285 
4286 [1] An External Representation for the GHC Core Language
4287     (DRAFT for GHC5.02), page 3, line 1
4288 
4289 Greetings
4290 Jan
4291]
4292[Remove bashisms from darcs-all
4293Alec Berryman <alec@thened.net>**20060703012911
4294 
4295 darcs-all may now be run with any POSIX-compatible /bin/sh.
4296]
4297[Fix for warning message (bug #812)
4298Duncan Coutts <duncan.coutts@worc.ox.ac.uk>**20060704163413
4299 say "{-# SOURCE #-}" rather than "{- SOURCE -}" in warning message.
4300 Fixes http://hackage.haskell.org/trac/ghc/ticket/812
4301]
4302[The dict-bindings in an IPBinds need not be in dependency order
4303simonpj@microsoft.com**20060703151517
4304 
4305 This appears to be a long-standing bug, discovered by BlueSpec
4306 (ravi@bluespec.com), Trac bug #795
4307 
4308 The problem was that in an IP binding group, the dict bindings
4309 aren't necessarily in dependency order; and if they aren't
4310 we get a core-lint error.
4311 
4312 Test tc203 checks this case.  (Though whether it shows up at
4313 all depends a bit on accidental factors of binding ordering.)
4314 
4315]
4316[x86 needs -fno-unit-at-a-time too
4317Simon Marlow <simonmar@microsoft.com>**20060704083308
4318 Fixes #809
4319]
4320[x86-64: fix a problem exposed by negative offsets in vector tables
4321Simon Marlow <simonmar@microsoft.com>**20060629140608
4322 static relative offsets (eg .long l1-l2) are restricted to 32 bits on
4323 x86-64 due to lack of support in the linker.  The codegen, NCG and
4324 runtime work around this, using 32-bit offsets instead of 64.
4325 However, we were missing a workaround for vector tables, and it
4326 happened to work by accident because the offsets were always positive
4327 and resolved by the assembler.  The bug was exposed by using the NCG
4328 to compile the RTS, where the offsets became negative, again by
4329 accident.
4330]
4331[No longer force -fvia-C for the RTS, it can now be compiled with the NCG
4332Simon Marlow <simonmar@microsoft.com>**20060629135836]
4333[Replace inline C functions with C-- macros in .cmm code
4334Simon Marlow <simonmar@microsoft.com>**20060629134726
4335 So that we can build the RTS with the NCG.
4336]
4337[remove conditionals from definition of StgRegTable
4338Simon Marlow <simonmar@microsoft.com>**20060629134405
4339 so that we can calculate deterministic offsets to some of the fields
4340 of Capability.
4341]
4342[mpz_foo() functions are really called __gmpz_foo() in GMP
4343Simon Marlow <simonmar@microsoft.com>**20060629122217
4344 gmp.h #defines mpz_foo to __gmpz_foo, so the real ABI is __gmpz_foo,
4345 so that is what we must invoke in order to be portable here.
4346 Similarly for mpn --> __gmpn.
4347]
4348[use the new "prim %write_barrier()" in .cmm instead of calls to wb()
4349Simon Marlow <simonmar@microsoft.com>**20060629120526]
4350[fix some problems with the fixup block code
4351Simon Marlow <simonmar@microsoft.com>**20060629120210
4352 We weren't handling InBoth properly.  InBoth needs to be expanded to
4353 appropriate InReg/InMem locations *before* building the interference
4354 graph, otherwise an InBoth will not be seen to conflict with other
4355 InReg/InMem locations.
4356]
4357[small optimisation: eliminate more register-to-register moves
4358Simon Marlow <simonmar@microsoft.com>**20060629120029]
4359[new syntax: "prim %OP (args)"  for using CallishMachOps in .cmm
4360Simon Marlow <simonmar@microsoft.com>**20060629115949
4361 
4362 
4363]
4364[add MO_WriteBarrier to CallishMachOps
4365Simon Marlow <simonmar@microsoft.com>**20060629115837
4366 This will let us express write barriers in C--
4367]
4368[Use -fno-strict-aliasing for *all* C files in the runtime
4369Simon Marlow <simonmar@microsoft.com>**20060629082902
4370 as a precautionary measure.  It is definitely required for GC.c,
4371 but it may well become necessary for other files in the future due to
4372 our (mis-)use of the C "type system".
4373]
4374[the unlifted kind
4375Simon Marlow <simonmar@microsoft.com>**20060623152626]
4376[fix a lint-o
4377Simon Marlow <simonmar@microsoft.com>**20060620151901]
4378[fix sloppy conditionals
4379Simon Marlow <simonmar@microsoft.com>**20060620151758]
4380[fix sloppy conditionals
4381Simon Marlow <simonmar@microsoft.com>**20060620151039]
4382[fix a few sloppy conditionals caught by new test in CmmLint
4383Simon Marlow <simonmar@microsoft.com>**20060620150618]
4384[flattenCgStmts: fix a case of empty code blocks being generated
4385Simon Marlow <simonmar@microsoft.com>**20060620150520]
4386[improve a panic message
4387Simon Marlow <simonmar@microsoft.com>**20060620141219]
4388[check that the argument to CmmCondBranch is really a conditional
4389Simon Marlow <simonmar@microsoft.com>**20060620141204]
4390[Generate a new unique for each label
4391Simon Marlow <simonmar@microsoft.com>**20060620140106]
4392[Remove long-redundant FieldLabel.lhs
4393simonpj@microsoft.com**20060629105321]
4394[Add comments to SpecConstr
4395simonpj@microsoft.com**20060627161520]
4396[fix up slop-overwriting for THUNK_SELECTORS in DEBUG mode
4397Simon Marlow <simonmar@microsoft.com>**20060627123951]
4398[Make SpecConstr work better for nested functions
4399simonpj@microsoft.com**20060627094742
4400 
4401 In SpecConstr.scBind, we should pass the optimised body (body') to
4402 specialise, not the un-optimised one. In this way we'll benefit from
4403 specialising any nested functions inside body.
4404 
4405 Discovered by Roman.
4406 
4407]
4408[More SpecConstr tuning
4409simonpj@microsoft.com**20060626201709
4410 
4411 For some reason, SpecConstr wasn't taking account of let-bound constructors:
4412        let v = Just 4
4413        in ...(f v)...
4414 
4415 Now it does.  An easy fix fortunately.
4416 
4417]
4418[Improve consistency checking for derived instances
4419simonpj@microsoft.com**20060626100034
4420 
4421 This patch arranges that derived instances use the same instance-decl
4422 checking code as user-defined instances.  That gives greater consistency
4423 in error messages.
4424 
4425 Furthermore, the error description if this consistency check fails is now
4426 much more explicit.  For example, drvfail003 now says
4427      Variable occurs more often in a constraint than in the instance head
4428        in the constraint: Show (v (v a))
4429      (Use -fallow-undecidable-instances to permit this)
4430      In the derived instance
4431        instance (Show (v (v a))) => Show (Square_ v w a)
4432 
4433]
4434[Slight improvement in TH error reporting
4435simonpj@microsoft.com**20060626095952]
4436[Improve location info when typechecking interface fiels
4437simonpj@microsoft.com**20060614114813]
4438[Fix a bug in the pretty printing of class declarations
4439davve@dtek.chalmers.se**20060625160826]
4440[Improve RULE matching a bit more
4441simonpj@microsoft.com**20060624160421
4442 
4443 Consider this example (provided by Roman)
4444 
4445        foo :: Int -> Maybe Int -> Int
4446        foo 0 (Just n) = n
4447        foo m (Just n) = foo (m-n) (Just n)
4448 
4449 SpecConstr sees this fragment:
4450 
4451        case w_smT of wild_Xf [Just A] {
4452          Data.Maybe.Nothing -> lvl_smf;
4453          Data.Maybe.Just n_acT [Just S(L)] ->
4454            case n_acT of wild1_ams [Just A] { GHC.Base.I# y_amr [Just L] ->
4455            $wfoo_smW (GHC.Prim.-# ds_Xmb y_amr) wild_Xf
4456            }};
4457 
4458 and correctly generates the rule
4459 
4460        RULES: "SC:$wfoo1" [0] __forall {y_amr [Just L] :: GHC.Prim.Int#
4461                                          sc_snn :: GHC.Prim.Int#}
4462          $wfoo_smW sc_snn (Data.Maybe.Just @ GHC.Base.Int (GHC.Base.I# y_amr))
4463          = $s$wfoo_sno y_amr sc_snn ;]
4464 
4465 BUT we must ensure that this rule matches in the original function!
4466 Note that the call to $wfoo is
4467            $wfoo_smW (GHC.Prim.-# ds_Xmb y_amr) wild_Xf
4468 
4469 During matching we expand wild_Xf to (Just n_acT).  But then we must also
4470 expand n_acT to (I# y_amr).  And we can only do that if we look up n_acT
4471 in the in-scope set, because in wild_Xf's unfolding it won't have an unfolding
4472 at all.
4473 
4474 Happily, fixing the bug is easy: add a call to 'lookupRnInScope' in the
4475 (Var v2) case of 'match'.
4476 
4477]
4478[--enable-src-tree-haddock and friends are no longer required
4479Simon Marlow <simonmar@microsoft.com>**20060623113303
4480 Happy, Alex and Haddock are built separately using Cabal now.
4481]
4482[fix a couple of bugs in markSparkQueue (#799)
4483Simon Marlow <simonmar@microsoft.com>**20060623092044]
4484[pull in STABLE(!) tweaks
4485sof@galois.com**20060622202734]
4486[fix for when path to GHC contains spaces, from #695
4487Simon Marlow <simonmar@microsoft.com>**20060622131700]
4488[Comment only
4489simonpj@microsoft.com**20060621223940]
4490[Transfer INLINE to specialised functions
4491simonpj@microsoft.com**20060621223637
4492 
4493 When the Specialise pass generates a specialised copy of a function,
4494 it should transfer the INLINE information to the specialised function.
4495 Otherwise, whether or not the INLNE happens can depend on whether
4496 specialisation happens, which seems wrong.  See Note [Inline specialisation]
4497 in Specialise.lhs
4498 
4499 Here's the example Roman reported
4500 
4501     primWriteMU :: UAE e => MUArr e s -> Int -> e -> ST s ()
4502     {-# INLINE primWriteMU #-}
4503     primWriteMU = writeMBU . unMUAPrim
4504     ------
4505     
4506     The problem is that primWriteMU doesn't get inlined *sometimes*, which
4507     results in code like
4508     
4509     case Data.Array.Parallel.Unlifted.Flat.UArr.$sprimWriteMU
4510            @ s11_X1nJ
4511            marr_s25s
4512            (GHC.Base.I# sc_s27F)
4513            GHC.Base.False
4514            new_s_a1Db
4515            of wild3_a1Dd { (# new_s1_X1F9, r_a1Dc #) -> ...
4516 
4517 Note the fact that we have a call to the *specialised* $sprimWriteMU.
4518 
4519]
4520[Arity and eta-expansion tuning
4521simonpj@microsoft.com**20060621205855
4522 
4523 Roman found that
4524     loop :: STRef s a -> Int -> ST s Int
4525     loop ref n = case n of
4526                    0 -> return n
4527                    n -> loop ref (n-1)
4528 wasn't eta-expanding nicely, despite the 'state hack'
4529 (see Id.isStateHackType).  The reason was two-fold:
4530 
4531   a) a bug in CoreUtils.arityType (the Var case)
4532 
4533   b) the arity of a recursive function was not being
4534        exposed in its RHS (see commments with
4535        SimplEnv.addLetIdInfo
4536 
4537 The commit fixes both. 
4538 
4539]
4540[documentation for TH w/ profiling
4541Simon Marlow <simonmar@microsoft.com>**20060621112523]
4542[Allow Template Haskell to be used with -prof
4543Simon Marlow <simonmar@microsoft.com>**20060621110436
4544 
4545 In order for this to work, you need to build the program first in the
4546 normal way (without -prof), and then again with -prof and a suitable
4547 -osuf (eg. -osuf p_o).  The compiler will pick up the object files
4548 from the normal way for running TH expressions, when it sees -prof
4549 together with -osuf.  If you omit the -osuf, you get an error message:
4550 
4551 TH_genEx.hs:12:2:
4552     Dynamic linking required, but this is a non-standard build (eg. prof).
4553     You need to build the program twice: once the normal way, and then
4554     in the desired way using -osuf to set the object file suffix.
4555 
4556 If you use -osuf, but haven't built the program the normal way first,
4557 then you see:
4558 
4559 TH_genEx.hs:12:2:
4560     cannot find normal object file `TH_genExLib.o'
4561     while linking an interpreted expression
4562 
4563 Documentation to follow.
4564 
4565 Fixes: #651
4566]
4567[add decl for stg_block_throwto_ret
4568Simon Marlow <simonmar@microsoft.com>**20060620083410]
4569[comment out a non-true assertion
4570Simon Marlow <simonmar@microsoft.com>**20060616140750]
4571[make compilation a little less noisy
4572Simon Marlow <simonmar@microsoft.com>**20060616140652]
4573[allow the max number of workers to scale with +RTS -N
4574Simon Marlow <simonmar@microsoft.com>**20060616140633]
4575[fix one-character error in stack check
4576Simon Marlow <simonmar@microsoft.com>**20060616135621]
4577[add STM support to the new throwTo mechanism
4578Simon Marlow <simonmar@microsoft.com>**20060616111937]
4579[remove duplicate way names (-debug -debug didn't work)
4580Simon Marlow <simonmar@microsoft.com>**20060616110258]
4581[Asynchronous exception support for SMP
4582Simon Marlow <simonmar@microsoft.com>**20060616103342
4583 
4584 This patch makes throwTo work with -threaded, and also refactors large
4585 parts of the concurrency support in the RTS to clean things up.  We
4586 have some new files:
4587 
4588   RaiseAsync.{c,h}     asynchronous exception support
4589   Threads.{c,h}         general threading-related utils
4590 
4591 Some of the contents of these new files used to be in Schedule.c,
4592 which is smaller and cleaner as a result of the split.
4593 
4594 Asynchronous exception support in the presence of multiple running
4595 Haskell threads is rather tricky.  In fact, to my annoyance there are
4596 still one or two bugs to track down, but the majority of the tests run
4597 now.
4598]
4599[make rmp_tmp_w an StgWord instead of StgInt
4600Simon Marlow <simonmar@microsoft.com>**20060616102311]
4601[__compat_long_path_size(): have proto and defn agree on return type
4602sof@galois.com**20060614164650]
4603[call wakeUpRts() in the correct place
4604Simon Marlow <simonmar@microsoft.com>**20060614134728]
4605[readerProc: split up text output using host's line termination convention
4606sof@galois.com**20060613232605]
4607[Improve pretty-printing for bags
4608simonpj@microsoft.com**20060612114020]
4609[Make scoped type variables work for default methods
4610simonpj@microsoft.com**20060612113855
4611 
4612 Consider
4613   class C a where
4614     op :: forall b. a -> b -> b
4615     op = <rhs>
4616 
4617 Then 'b' should be in scope in <rhs>.  I had omitted this case.
4618 This patch fixes it.
4619 
4620]
4621[And move 'Chasing ...' messages into verbosity 2 as well
4622Don Stewart <dons@cse.unsw.edu.au>**20060612084656]
4623[Emit 'linking not required' messages only with -v 2 or above.
4624Don Stewart <dons@cse.unsw.edu.au>**20060611071041
4625 
4626 Similar in philosophy to the 'Skipping' patch, this is another case of
4627 printing noisy messages when no work is being done. This patch makes the
4628 building-when-nothing-to-do case smoother.
4629 
4630]
4631[Don't emit 'Skipping' messages unless -v2 or higher is on
4632Don Stewart <dons@cse.unsw.edu.au>**20060610145713
4633 
4634 Following GNU make, this patch makes GHC not emit messages about modules
4635 its skipping. This makes builds much quieter, and its a lot easier to
4636 work out what effects a change had on the code.
4637 
4638 The current behaviour can be recovered with -v2
4639 
4640]
4641[fix the stage3 build
4642Simon Marlow <simonmar@microsoft.com>**20060612084114]
4643[oops, undo accidental commit of version number
4644Simon Marlow <simonmar@microsoft.com>**20060612083520]
4645[Move readline configuration into the readline package
4646Simon Marlow <simonmar@microsoft.com>**20060609135840]
4647[fix possible ^C problems
4648Simon Marlow <simonmar@microsoft.com>**20060608144457
4649 Calling prodAllCapabilities() from interruptStgRts() was wrong, for
4650 the same reasons that we stopped doing it in handle_tick().  We now
4651 use the same mechanism (send a byte down the pipe to the IO manager
4652 thread), but abstract it in a wakeUpRts() function in the scheduler.
4653]
4654[New tracing interface
4655Simon Marlow <simonmar@microsoft.com>**20060608144210
4656 A simple interface for generating trace messages with timestamps and
4657 thread IDs attached to them.  Most debugging output goes through this
4658 interface now, so it is straightforward to get timestamped debugging
4659 traces with +RTS -vt.  Also, we plan to use this to generate
4660 parallelism profiles from the trace output.
4661]
4662[fix warnings
4663Simon Marlow <simonmar@microsoft.com>**20060608143635]
4664[fix warnings
4665Simon Marlow <simonmar@microsoft.com>**20060608143520]
4666[Make it so that StgWord/StgInt are longs
4667Simon Marlow <simonmar@microsoft.com>**20060608143438
4668 This means we can use a %ld format specifier for StgWord/StgInt with
4669 printf and not get shouted at by gcc.
4670]
4671[more warning fixage
4672Simon Marlow <simonmar@microsoft.com>**20060608142844]
4673[fix a warning
4674Simon Marlow <simonmar@microsoft.com>**20060608141903]
4675[fix some warnings
4676Simon Marlow <simonmar@microsoft.com>**20060608140201]
4677[Add new RTS flags for tracing:
4678Simon Marlow <simonmar@microsoft.com>**20060608130101
4679 
4680   -vs       Trace scheduler events (see also -Ds with -debug)
4681   -vt       Time-stamp trace messages
4682 
4683 the intention is that we will pipe the -vs output into a
4684 profile-generating tool.  This commit includes the flags only,
4685 functionality to follow.
4686]
4687[codegen debug flag (+RTS -Dc) was unused; remove it
4688Simon Marlow <simonmar@microsoft.com>**20060607145848]
4689[add 'const' modifiers to types where appropriate
4690Simon Marlow <simonmar@microsoft.com>**20060607145800]
4691[rearrange casts to avoid gcc warnings
4692Simon Marlow <simonmar@microsoft.com>**20060607145626]
4693[warning fix
4694Simon Marlow <simonmar@microsoft.com>**20060607141013]
4695[remove //@ stuff
4696Simon Marlow <simonmar@microsoft.com>**20060607134553]
4697[Gather timing stats for a Task when it completes.
4698Simon Marlow <simonmar@microsoft.com>**20060607124407
4699 Previously we did this just for workers, now we do it for the main
4700 thread and for forkOS threads too.
4701]
4702[Remove unnecessary SCHED_INTERRUPTED scheduler state
4703Simon Marlow <simonmar@microsoft.com>**20060607115105
4704 
4705]
4706[fix a warning
4707Simon Marlow <simonmar@microsoft.com>**20060427130048]
4708[re-enable time package on Windows
4709simonmar@microsoft.com**20060606124656]
4710[fix a case of "naughty I386 byte reg"
4711Simon Marlow <simonmar@microsoft.com>**20060606112357
4712 The fix is a little hacky, because we don't have support for register
4713 classes in general, but it's an improvement.
4714]
4715[A better icon for GHCi
4716Neil Mitchell <http://www.cs.york.ac.uk/~ndm/>**20060602145913]
4717[markSignalHandlers(): implementation was unnecessary, and had a bug
4718simonmar@microsoft.com**20060606085805
4719 
4720 There's no need to mark the signal handler here, because it is stored
4721 in a StablePtr and hence is a root anyway.  Furthermore, the call to
4722 evac() was passing the address of a local variable, which turned out
4723 to be harmless for copying GC, but fatal for compacting GC: compacting
4724 GC assumes that the addresses of the roots are the same each time.
4725 
4726 Fixes: possibly #783, possibly #776, definitely #787
4727]
4728[disable time package on mingw to unblock builds.
4729sof@galois.com**20060605165125]
4730[Remove one more IfaceInlineCall
4731simonpj@microsoft.com**20060605154305]
4732[Remove InlinePlease and add inline function and RULE
4733simonpj@microsoft.com**20060605114900
4734 
4735 For a long time GHC has had some internal mechanism designed to support
4736 a call-site inline directive, thus
4737        inline f xs
4738 makes f be inlined at the call site even if f is big.
4739 
4740 However, the surface syntax seems to have gone, and in any case it
4741 can be done more neatly using a RULE.
4742 
4743 This commit:
4744   * Removes the InlineCall constructor for Note
4745     and InlinePlease for SimplCont
4746 
4747   * Adds a new known-key Id called 'inline', whose definition in
4748     GHC.Base is just the identity function
4749 
4750   * Adds a built-in RULE in PrelRules that rewrites (inline f) to
4751     the body of f, if possible
4752 
4753   * Adds documentation
4754 
4755 NOTE: I have not tested this (aeroplane work).  Give it a try!
4756 
4757]
4758[Fix typo
4759simonpj@microsoft.com**20060605114719]
4760[fix type of allocateExec
4761Simon Marlow <simonmar@microsoft.com>**20060601125406]
4762[stgMallocBytesRWX --> allocateExec
4763Simon Marlow <simonmar@microsoft.com>**20060601123314]
4764[fix non-Windows build
4765Simon Marlow <simonmar@microsoft.com>**20060601121435]
4766[Win32: set up the console code pages
4767simonmar@microsoft.com**20060601115423
4768 This may help with entering non-ASCII characters at the GHCi prompt,
4769 but as usual with Unicode there's no simple solution that just works.
4770 See commentary in InteractiveUI.hs for more details.
4771]
4772[add a type signature
4773simonmar@microsoft.com**20060601115335]
4774[improvements to lexical error reporting
4775simonmar@microsoft.com**20060601115306]
4776[commented-out debugging code
4777simonmar@microsoft.com**20060601115247]
4778[understand Latin-1 symbols
4779simonmar@microsoft.com**20060601115149]
4780[stgMallocBytesRWX --> allocateExec
4781Simon Marlow <simonmar@microsoft.com>**20060531091202
4782 Not sure how I left this out of the previous patch, oh well.
4783]
4784['time' depends on 'Win32' when Windows=YES; mirror that
4785sof@galois.com**20060530223009
4786 when setting up SUBDIRS.
4787]
4788[Win32: add _imp__tzname
4789simonmar@microsoft.com**20060530101452]
4790[fix Win32 build
4791simonmar@microsoft.com**20060530101418]
4792[replace stgMallocBytesRWX() with our own allocator
4793Simon Marlow <simonmar@microsoft.com>**20060530100211
4794 
4795 See bug #738
4796 
4797 Allocating executable memory is getting more difficult these days.  In
4798 particular, the default SELinux policy on Fedora Core 5 disallows
4799 making the heap (i.e. malloc()'d memory) executable, although it does
4800 apparently allow mmap()'ing anonymous executable memory by default.
4801 
4802 Previously, stgMallocBytesRWX() used malloc() underneath, and then
4803 tried to make the page holding the memory executable.  This was rather
4804 hacky and fails with Fedora Core 5. 
4805 
4806 This patch adds a mini-allocator for executable memory, based on the
4807 block allocator.  We grab page-sized blocks and make them executable,
4808 then allocate small objects from the page.  There's a simple free
4809 function, that will free whole pages back to the system when they are
4810 empty.
4811 
4812]
4813[add time subdir
4814Simon Marlow <simonmar@microsoft.com>**20060530070721]
4815[Make rule-matching robust to lets
4816simonpj@microsoft.com**20060525154447
4817 
4818 Consider a RULE like
4819        forall arr. splitD (joinD arr) = arr
4820 
4821 Until now, this rule would not match code of form
4822        splitD (let { d = ... } in joinD (...d...))
4823 because the 'let' got in the way.
4824 
4825 This patch makes the rule-matcher robust to lets.  See comments with
4826 the Let case of Rules.match.
4827 
4828 This improvement is highly desirable in the fusion rules for NDP
4829 stuff that Roman is working on, where we are doing fusion of *overloaded*
4830 functions (which may look lazy).  The let expression that Roman tripped
4831 up on was a dictioary binding.
4832 
4833]
4834[Improve error reporting in interface typechecking
4835simonpj@microsoft.com**20060525094545]
4836[Fix egregious and long-standing tidying bug
4837simonpj@microsoft.com**20060525094300
4838 
4839 A typo in tidyAlt meant that we could get shadowing of occurrence names
4840 in the output of tidying.  (Specifically, of existentially bound type
4841 variables.)  That in turn meant that an IfaceExpr could have shadowing, so
4842 when the IfaceExpr was read in, it meant something different.
4843 That in turn led to an obscure crash like:
4844        Panic: tcIfaceTyVar
4845 
4846 Anyway, this fixes it.  MERGE into 6.4.3.
4847 
4848 
4849]
4850[Prune imports
4851simonpj@microsoft.com**20060525094251]
4852[performGC_(): don't use the existing Task, always grab a new one
4853Simon Marlow <simonmar@microsoft.com>**20060525090035]
4854[Better control of the IO manager thread; improvements to deadlock checking
4855Simon Marlow <simonmar@microsoft.com>**20060524122839
4856     
4857 In the threaded RTS on *nix platforms:
4858     
4859  - we now start the IO manager thread eagerly at startup time
4860    (previously was started on demand).
4861 
4862  - we now ask the IO manager thread to stop at shutdown
4863     
4864  - In Timer.c:handle_tick, if it looks like we might be in a
4865    deadlock, instead of calling prodOneCapability() which was known to be
4866    wrong, we now send a byte down the IO manager's pipe to wake it up.
4867   
4868 This also avoids a case of double-acquisition of a mutex, which
4869 happened if prodOneCapability() was called while the current thread
4870 was holding a mutex.
4871]
4872[TARGET_OS ==> HOST_OS
4873Simon Marlow <simonmar@microsoft.com>**20060524122103]
4874[fix a _TARGET_ARCH that should be _HOST_ARCH
4875Simon Marlow <simonmar@microsoft.com>**20060524122022]
4876[we don't need OutOfHeapHook(), and the version in the RTS has a better message
4877Simon Marlow <simonmar@microsoft.com>**20060524112007]
4878[Bug-fix to patch "Run simplifier before SpecConstr"
4879simonpj@microsoft.com**20060523130022]
4880[Run simplifier before SpecConstr
4881simonpj@microsoft.com**20060523085546
4882 
4883 Arrange to run the simplifier before SpecConstr, to (almost entirely)
4884 eliminate shadowing.
4885 
4886 Reason: otherwise SpecConstr can generate a RULE that never
4887 files; and LiberateCase specifically *does* generate lots of shadowing.
4888 
4889 See Note [Shadowing] in SpecConstr.lhs
4890 
4891 
4892]
4893[Prune imports
4894simonpj@microsoft.com**20060522192532]
4895[Add deShadowBinds
4896simonpj@microsoft.com**20060522192404
4897 
4898 Add CoreSubst.deShadowBinds, which removes shadowing from
4899 a Core term.  I thought we wanted it for SpecConstr, but in
4900 fact decided not to use it. Nevertheless, it's a useful sort
4901 of function to have around, and it has a particularly simple
4902 definition!
4903 
4904]
4905[Inline in a call argument if the caller has RULES
4906simonpj@microsoft.com**20060522163255
4907 
4908 This is an experimental change suggested by Roman.  Consider
4909       
4910        {-# INLINE f #-}
4911        f x y = ...
4912 
4913        ....(g (f a b))...
4914 
4915 where g has RULES.  Then we'd like to inline f, even though the context of
4916 the call is otherwise 100% boring -- g is lazy and we know nothing about
4917 x and y.
4918 
4919 This patch just records in the continuation that f has rules.  And does so
4920 somewhat recursively...e.g.
4921 
4922        ...(g (h (f a b)))...
4923 
4924 where g has rules. 
4925 
4926 
4927]
4928[Add idHasRules
4929simonpj@microsoft.com**20060522163109
4930 
4931 Add Id.idHasRules :: Id -> Bool, with the obvious semantics.
4932 This patch makes sense by itself, but it's just a tidy-up.
4933 
4934 
4935]
4936[Transmit inline pragmas faithfully
4937simonpj@microsoft.com**20060522110256
4938 
4939 *** WARNING: you will need to recompile your libraries
4940 ***         when you pull this patch (make clean; make)
4941 
4942 The inline pragma on wrapper-functions was being lost; this patch
4943 makes it be transmitted faithfully.
4944 
4945 The reason is that we don't write the full inlining for a wrapper into
4946 an interface file, because it's generated algorithmically from its strictness
4947 info.  But previously the inline pragma as being written out only when we
4948 wrote out an unfolding, and hence it was lost for a wrapper.
4949 
4950 This makes a particular difference when a function has a NOINLINE[k] pragma.
4951 Then it may be w/w'd, and we must retain the pragma.  It's the only consistent
4952 thing to do really.
4953 
4954 The change does change the binary format of interface files, slightly.
4955 So you need to recompile all your libraries.
4956 
4957]
4958[Improved RULE lhs typechecking; less dictionary sharing
4959simonpj@microsoft.com**20060519103433
4960 
4961 See long comment with Simplify.tcSimplifyRuleLhs.
4962 
4963 Here's the key example:
4964 
4965   RULE "g"  forall x y z. g (x == y) (y == z) = ...
4966 
4967 Here, the two dictionaries are *identical*, but we do NOT WANT to
4968 generate the rule
4969 
4970 RULE   forall x::a, y::a, z::a, d1::Eq a
4971          f ((==) d1 x y) ((>) d1 y z) = ...
4972 
4973 Instead we want
4974 
4975 RULE   forall x::a, y::a, z::a, d1::Eq a, d2:Eq a
4976          f ((==) d1 x y) ((>) d2 y z) = ...
4977 
4978]
4979[Bug-fix for infix function definitions (parse/rename)
4980simonpj@microsoft.com**20060519095022
4981   
4982 Fix a crash provoked by
4983 
4984        x `op` y = x
4985        op       = True
4986 
4987 The trouble was that there is currently a single 'infix' flag for the
4988 whole group; and RnTypes.checkPrecMatch was therefore expecting the
4989 second eqn to have two args.
4990 
4991 This fixes the crash, and also or-s the infix flags for the various
4992 eqns together; previously it was just taken from the first eqn, which
4993 was wrong.
4994 
4995 
4996]
4997[Remove misleading comments
4998simonpj@microsoft.com**20060519094936]
4999[Fix a nasty continuation-duplication bug
5000simonpj@microsoft.com**20060518163617
5001 
5002 For a long-time mkDupableCont has had a bug that allows it to duplicate
5003 an arbitrary continuation, which it should not do, of course.
5004 
5005 The bug was that in the Select case of mkDupableCont we were calling
5006 prepareCaseCont, which did not duplicate the continuation if there is
5007 but a single alternative.  This is quite right in the case of the call
5008 in rebuildCase, but quite wrong in mkDupableCont.
5009 
5010 The bug manifest as follows. In the expression
5011        f (case ... of { ..several alts.. })
5012 (when f is strict), we should transform to
5013        f (...transformed arg...)
5014 The application of f should not be pushed down (see notes with the
5015 ArgOf case of mkDupableCont.  But that was not happening in an example
5016 like this (see how the call to f is pushed inwards).
5017 
5018 f (a `div` abs (b::Int))
5019        --->
5020     case b_afT of wild_aHa { GHC.Base.I# x_aHc ->
5021     let {
5022       $j_sIe :: GHC.Prim.Int# -> GHC.Base.Int
5023       []
5024       $j_sIe =
5025        \ (ds1_aHr [Nothing OneShot] :: GHC.Prim.Int#) ->
5026          Foo7.f
5027            (case ds1_aHr of ds2_aHq {
5028               __DEFAULT ->
5029                 case a_afS of wild1_aHM { GHC.Base.I# x_aHO ->
5030                 GHC.Base.I# (GHC.Base.divInt# x_aHO ds2_aHq)
5031                 };
5032               0 -> GHC.Err.divZeroError @ GHC.Base.Int
5033             })
5034     } in
5035       case GHC.Prim.>=# x_aHc 0 of wild1_aHe [Dead Nothing] {
5036        GHC.Base.False ->
5037          let {
5038            ds1_aHr :: GHC.Prim.Int#
5039            []
5040            ds1_aHr = GHC.Prim.negateInt# x_aHc
5041          } in  $j_sIe ds1_aHr;
5042        GHC.Base.True -> $j_sIe x_aHc
5043       }
5044     }
5045 
5046 
5047]
5048[Make simplifier report which phase it is doing in -ddump output
5049simonpj@microsoft.com**20060518163448]
5050[Comments only
5051simonpj@microsoft.com**20060518163425]
5052[take parsec out of $(GhcBootLibs)
5053Simon Marlow <simonmar@microsoft.com>**20060518131506]
5054[Improve documentation of INLINE pragmas
5055simonpj@microsoft.com**20060518113212]
5056[a couple of additions
5057Simon Marlow <simonmar@microsoft.com>**20060518104025]
5058[#define _REENTRANT 1   (needed to get the right errno on some OSs)
5059Simon Marlow <simonmar@microsoft.com>**20060518103715
5060 Partial fix for hanging problems on Solaris and possibly *BSD.
5061 A similar fix is also required to libraries/base/includes/HsBase.h.
5062]
5063[Declare this file to be POSIX
5064Simon Marlow <simonmar@microsoft.com>**20060518102858
5065 This is simpler than using _POSIX_THREAD_SEMANTICS on Solaris to get
5066 the right version of ctime_r().
5067]
5068[somewhere to keep track of release notes for 6.6
5069Simon Marlow <simonmar@microsoft.com>**20060518074415]
5070[Newtype data constructors get a compulsory unfolding
5071simonpj@microsoft.com**20060517155009
5072 
5073 With this change, newtype data constructors get a "compulsory" unfolding,
5074 which means that they *must* be inlined, and no top-level definition of
5075 the constructor is provided at all.  Since these constructors are no-ops,
5076 I'm not sure why this wasn't the case all along.
5077 
5078]
5079[White space only
5080simonpj@microsoft.com**20060517154936]
5081[Retain InlinePragInfo on wrappers
5082simonpj@microsoft.com**20060517154725
5083 
5084 For some reason, when doing the worker/wrapper split, we transferred the
5085 InlinePragInfo from the original function, but expunging it from the wrapper.
5086 This meant, for example, that a NOINLINE function would have its wrapper
5087 inlined, which isn't sensible.
5088 
5089 For a change, fixing a bug involves only deleting code!
5090 
5091]
5092[Spelling correction
5093simonpj@microsoft.com**20060517154710]
5094[Retain INLINE pragma information during indirection-shorting
5095simonpj@microsoft.com**20060517154449
5096 
5097 During indirection-shorting, we were dropping the InlinePragInfo,
5098 although were were carefully retaining strictness info etc. 
5099 I think this is a long-standing bug.
5100 
5101]
5102[Improve pretty-printing
5103simonpj@microsoft.com**20060517154349]
5104[Comments only
5105simonpj@microsoft.com**20060517154304]
5106[Improve pretty-printing slightly
5107simonpj@microsoft.com**20060517154204]
5108[Let GHCi work with with Sparc32+/V8+ .o files
5109Duncan Coutts <duncan.coutts@worc.ox.ac.uk>**20060516090430
5110 Currently the GHCi linker looks exclusively for V7 ABI .o files.
5111 
5112 You can generate V8+ ABI .o files using flags to gcc such as:
5113  -optc-mcpu=ultrasparc -opta-mcpu=ultrasparc
5114 
5115 Note that this allows gcc to generate hardware integer division and
5116 hardware floating point instructions rather than using software emulation.
5117 All recent sparc hardware is V8+ or later. Perhaps we should check for the
5118 cpu generation in configure and use the later ABI if possible.
5119 
5120 Tested briefly on a SunBlade 100 (TI UltraSparc IIe) sparc-unknown-linux
5121]
5122[match up more closely with compiler/main/DynFlags.hs:machdepCCOpts
5123Simon Marlow <simonmar@microsoft.com>**20060515090031
5124 In particular, add -fno-builtin to x86 and x86_64, which was missing.
5125]
5126[set $(GhcVersion) and $(GhcPatchLevel) correctly when $(UseStage1)==YES
5127Simon Marlow <simonmar@microsoft.com>**20060510124621]
5128[.raw_s and .s live in $(odir), not the source dir
5129Simon Marlow <simonmar@microsoft.com>**20060510121524]
5130[additions from Reilly Hayes
5131Simon Marlow <simonmar@microsoft.com>**20060510120000]
5132[some tweaks to the HC bootstrapping instructions
5133Simon Marlow <simonmar@microsoft.com>**20060510115236]
5134[Ignore unboxed values in breakpoints.
5135Lemmih <lemmih@gmail.com>**20060510072722]
5136[Don't read ~/.ghci on breakpoints.
5137Lemmih <lemmih@gmail.com>**20060509223455]
5138[make it possible to define an alias for :quit
5139Simon Marlow <simonmar@microsoft.com>**20060509083124]
5140[Do not put wired-in things in interface files
5141simonpj@microsoft.com**20060508142946
5142 
5143 There is no need for wired-in things to go into interface files; the compiler
5144 knows about them anyway.  Worse, it turns ou that if they are in an interface
5145 file, they may get read in with not-quite-right type info (e.g. GHC.Err.error),
5146 and the not-quite-right thing gets into the type envt.  Than it gets used
5147 instead of the wired in thing.
5148 
5149 Best all round never to put them into interface files.  This is the way
5150 it used to be, but it looks as if it rotted away some time ago.
5151 
5152 (I noticed this when fixing unsafePerformIO stuff, becuase 'lazy' was getting
5153 an unfolding when it shouldn't.)
5154 
5155]
5156[Remove NOINLINE strictness hack
5157simonpj@microsoft.com**20060508142834
5158 
5159 The stricteness analyser used to have a HACK which ensured that NOINLNE things
5160 were not strictness-analysed.  The reason was unsafePerformIO. Left to itself,
5161 the strictness analyser would discover this strictness for unsafePerformIO:
5162        unsafePerformIO:  C(U(AV))
5163 But then consider this sub-expression
5164        unsafePerformIO (\s -> let r = f x in
5165                               case writeIORef v r s of (# s1, _ #) ->
5166                               (# s1, r #)
5167 The strictness analyser will now find that r is sure to be eval'd,
5168 and may then hoist it out.  This makes tests/lib/should_run/memo002
5169 deadlock.
5170 
5171 Solving this by making all NOINLINE things have no strictness info is overkill.
5172 In particular, it's overkill for runST, which is perfectly respectable.
5173 Consider
5174        f x = runST (return x)
5175 This should be strict in x.
5176 
5177 So the new plan is to define unsafePerformIO using the 'lazy' combinator:
5178 
5179        unsafePerformIO (IO m) = lazy (case m realWorld# of (# _, r #) -> r)
5180 
5181 Remember, 'lazy' is a wired-in identity-function Id, of type a->a, which is
5182 magically NON-STRICT, and is inlined after strictness analysis.  So
5183 unsafePerformIO will look non-strict, and that's what we want.
5184 
5185 Now we don't need the hack in the strictness analyser.
5186 
5187]
5188[Trim imports
5189simonpj@microsoft.com**20060508141804]
5190[Trim imports
5191simonpj@microsoft.com**20060508141713]
5192[GHC_MANGLER-->MANGLER
5193Simon Marlow <simonmar@microsoft.com>**20060508111206]
5194[Fix bug #763: Breakpoint mechanism crashes when there's a type error.
5195Lemmih <lemmih@gmail.com>**20060505232158]
5196[breakpointCond
5197Lemmih <lemmih@gmail.com>**20060502174340]
5198[Preserve type variable names during type inference
5199simonpj@microsoft.com**20060505153753
5200 
5201 During unification we attempt to preserve the print-names of type variables,
5202 so that type error messages tend to mention type variables using the
5203 programmer's vocabulary. 
5204 
5205 This had bit-rotted a bit when I added impredicative polymorphism; especially
5206 when unBoxing a boxy type variable we should not gratuitously lose its name.
5207 
5208]
5209[Trim imports
5210simonpj@microsoft.com**20060505150506]
5211[fixup for new source tree layout
5212Simon Marlow <simonmar@microsoft.com>**20060505114100]
5213[FPTOOLS_TOP-->GHC_TOP, and remove some references to "fptools"
5214Simon Marlow <simonmar@microsoft.com>**20060505110520]
5215[$(FPTOOLS_TOP) is now known as $(GHC_TOP)
5216Simon Marlow <simonmar@microsoft.com>**20060505110127
5217 I kept $(FPTOOLS_TOP) as an alias for $(GHC_TOP) while we switch
5218]
5219[update the build system documentation
5220Simon Marlow <simonmar@microsoft.com>**20060505105843]
5221[update for new source tree layout
5222Simon Marlow <simonmar@microsoft.com>**20060505102903]
5223[partial update for new source tree layout
5224Simon Marlow <simonmar@microsoft.com>**20060505030218]
5225[update for new source tree layout (untested)
5226Simon Marlow <simonmar@microsoft.com>**20060505081549]
5227[Print a more helpful error for find_thing
5228simonpj@microsoft.com**20060504153337]
5229[Fix a bug in rule matching
5230simonpj@microsoft.com**20060504112430
5231 
5232 The rule matcher uses a "rough-match" pre-filter, which was being too
5233 aggressive.  The case looked like this:
5234 
5235        rule:   f True
5236        expr:   case e of x { True -> f x }
5237 
5238 Jues because x doesn't immediately look like True, we shouldn't say
5239 "can't match", but that is exactly what ruleCantMatch was doing.
5240 
5241 
5242]
5243[Fix constructor-specialisation bug
5244simonpj@microsoft.com**20060504112131
5245 
5246 The constructor-specialisation optimisation was not dealing with the case
5247 of
5248        (letrec ... in f) a1 a2
5249 
5250 We need to apply constructor specialisation in the letrec; previously
5251 we were leaving it untouched on the grounds that the function part of
5252 an application is almost always a variable.
5253 
5254 But in fact, float-in immediately precedes SpecConstr, so we can get
5255 these odd-looking applications.
5256 
5257 
5258]
5259[Fix precedence for records in derived Read
5260simonpj@microsoft.com**20060504111804
5261 
5262 The derived instance for Read of records wasn't quite right.
5263 Consider
5264        data T = T1 T | T2 { x::Int }
5265 
5266 The string "T1 T2 { x=2 }" should parse correctly as
5267        T1 (T2 {x=2})
5268 because of Haskell's odd precedence rules (record construction binds
5269 even more tightly than application), but the derived Read didn't take
5270 account of that.
5271 
5272 drvrun020 is the regression test
5273 
5274 
5275]
5276[Make rules available in RHS
5277simonpj@microsoft.com**20060504111500
5278 
5279 After some earlier re-factoring, the code that was carefully trying
5280 to make RULES available in a function's own RHS was plain wrong.
5281 
5282 This commit fixes it.  Some programs should go faster!
5283 
5284]
5285[Pretty printing instance for Unfolding
5286simonpj@microsoft.com**20060504111429]
5287[small clarification
5288Simon Marlow <simonmar@microsoft.com>**20060504103414]
5289[small fix to booting instructions from #762
5290Simon Marlow <simonmar@microsoft.com>**20060504083104]
5291[$(ProjectNameShort) => ghc
5292Simon Marlow <simonmar@microsoft.com>**20060503102419]
5293[only pass -fno-unit-at-a-time to gcc if it is supported
5294Simon Marlow <simonmar@microsoft.com>**20060503093614]
5295[Arrange that -fth is no longer implied by -fglasgow-exts
5296simonpj@microsoft.com**20060426182114
5297 
5298 Messages involving Template Haskell are deeply puzzling
5299 if you don't know about TH, so it seems better to make
5300 -fth an explicit flag.  It is no longer switched on
5301 by -fglasgow-exts.
5302 
5303]
5304[remove code not required in the new source tree layout
5305Simon Marlow <simonmar@microsoft.com>**20060502114235]
5306[move "compat" earlier in the build for .hc bootstrapping
5307Simon Marlow <simonmar@microsoft.com>**20060502112001]
5308[fix ctime_r problem on Solaris (I hope)
5309Simon Marlow <simonmar@microsoft.com>**20060502111231]
5310[fix whitespace problem that shows up on Solaris (x86)
5311Simon Marlow <simonmar@microsoft.com>**20060502110001]
5312[libraries/time is boring
5313Simon Marlow <simonmar@microsoft.com>**20060502105524]
5314[add time package to libraries Makefile
5315Ashley Yakeley <ashley@semantic.org>**20060501092241]
5316[add time package to default-packages
5317Ashley Yakeley <ashley@semantic.org>**20060426070445]
5318[Fix stage2 segfault on openbsd.
5319dons@cse.unsw.edu.au**20060428074811
5320 
5321 Somewhere along the 6.5 branch, gcc started compiling the rts such that
5322 it triggers the stack smash handler, causing stage2 to by kill'd
5323 immediately. This turns off the stack protector, which will do for now.
5324 
5325]
5326[fix quoting around ${FPTOOLS_TOP_ABS} (fixes #749)
5327Simon Marlow <simonmar@microsoft.com>**20060428085252]
5328[Fix bug shown in the mod77 test.
5329Lemmih <lemmih@gmail.com>**20060427113313]
5330[Don't init root pointers if they aren't gonna be used.
5331Lemmih <lemmih@gmail.com>**20060426111143]
5332[Fix recompilation checking.
5333Simon Marlow <simonmar@microsoft.com>**20060425140932
5334 One-shot compilation was throwing away the old iface read by
5335 checkOldIface, with the result that version numbers were never being
5336 incremented.  Fixes the recomp001 test too.
5337]
5338[Solaris needs -lrt for the threaded RTS
5339Simon Marlow <simonmar@microsoft.com>**20060425082823]
5340[fix problem with binary-dist docs
5341Simon Marlow <simonmar@microsoft.com>**20060424090159]
5342[Enable breakpoint support.
5343Lemmih <lemmih@gmail.com>**20060421113112]
5344[Fixing some lexer errors with extcore
5345Josef Svenningsson <josef.svenningsson@gmail.com>**20060420222625]
5346[Extcore can now handle data types without constructors
5347Josef Svenningsson <josef.svenningsson@gmail.com>**20060420213622]
5348[Comments only
5349Josef Svenningsson <josef.svenningsson@gmail.com>**20060420213555]
5350[Resurrect ProjectName
5351sven.panne@aedion.de**20060421085125]
5352[Remove the section on platform support, link to the wiki page
5353Simon Marlow <simonmar@microsoft.com>**20060420125555
5354 The section in the building guide was becoming out of date, a wiki
5355 page is much more likely to be kept fresh.
5356]
5357[Fix workaround for a GHC 6.4 bug
5358rl@cse.unsw.edu.au**20060420044223]
5359[hslibs is dead, Jim...
5360sven.panne@aedion.de**20060419144609]
5361[Synched .spec file with reality
5362sven.panne@aedion.de**20060419143138]
5363[Add .spec file to source distribution
5364sven.panne@aedion.de**20060419103725]
5365[remove paragraph about mutable objects that doesn't apply now
5366Simon Marlow <simonmar@microsoft.com>**20060419082038]
5367[HsBool should be HsInt, not StgBool
5368Simon Marlow <simonmar@microsoft.com>**20060418144214
5369 StgBool is mapped to C's int type.  GHC doesn't currently know the
5370 size of a C int on the target arch, it's easier to use StgInt instead.
5371 I guess nobody ever uses Bool arguments to foreign imports/exports.
5372]
5373[handle Bool arg to foreign import "wrapper"
5374Simon Marlow <simonmar@microsoft.com>**20060418143936
5375 Fixes #746
5376]
5377[update commentry for foreign import "wrapper" handling
5378Simon Marlow <simonmar@microsoft.com>**20060418143714]
5379[remove vestiges of ByteArray and MutableByteArray, which are no more
5380Simon Marlow <simonmar@microsoft.com>**20060418143641]
5381[Comment only
5382simonpj@microsoft.com**20060418125624]
5383[Fix rank-validity testing
5384simonpj@microsoft.com**20060418125350
5385 
5386 GHC does not now do "hoisting" as it used to.  Instead, it allows
5387 foralls to the right of fuction arrows, as well as to the left.
5388 
5389 But the type-validity tester hadn't caught up.  This commit fixes
5390 it. The test is tc203.
5391 
5392 Incidentally, GHC still doesn't let you write
5393        forall a. Eq a => forall b. b -> b
5394 because we get a zillion reduce/reduce errors if we allow that.  I'm
5395 sure it's fixable.  But meanwhile you have to use an auxiliary type
5396 synonym, which is a bit stupid.
5397 
5398 
5399]
5400[Make the initial rdr and type scope available in the ghc-api.
5401Lemmih <lemmih@gmail.com>**20060418023606]
5402[Fix minor bug in Linker.withExtendedLinkEnv
5403Lemmih <lemmih@gmail.com>**20060418023518]
5404[Export 'insertSymbol' and 'insertStableSymbol'.
5405Lemmih <lemmih@gmail.com>**20060418021806
5406 
5407 'insertStableSymbol' is used for exporting closures that are affected by the GC.
5408 
5409]
5410[Allow $x, as well as $(x), at top level in TH
5411simonpj@microsoft.com**20060414121907
5412 
5413 Bulat pointed out that in Template Haskell
5414    $x
5415 is allowed instead of
5416    $(x)
5417 in expressions, but not at the top level of modules.
5418 
5419 This commit fixes the omission.  Now you can say
5420 
5421        f x = x
5422        $h
5423        data T = T
5424 
5425 and the $h will run Template Haskell just as you'd expect.
5426 
5427]
5428[Fix TH erorr recovery (test is TH_recover)
5429simonpj@microsoft.com**20060414120411]
5430[Comments only
5431simonpj@microsoft.com**20060414120359]
5432[Recover gracefully from a Template Haskell programmers error
5433simonpj@microsoft.com**20060414115831
5434 
5435 If a TH programmer uses a type constructor as a data constructor,
5436 GHC simply crashed.  This commit makes it report the error in a
5437 graceful way.
5438 
5439]
5440[Document newtype-unwrapping for IO in FFI
5441simonpj@microsoft.com**20060414105212]
5442[Cosmetics in SpecConstr
5443simonpj@microsoft.com**20060412152721
5444 
5445 SpecConstr currently uses substExpr for tiresome reasons to do with
5446 GADTs.  Unfortunately the substExpr generates some WARNINGS (when DEBUG)
5447 is on, because we aren't adding all the in-scope Ids to the in-scope
5448 set of the substitution.
5449 
5450 When we move to FC these substExprs will go away, so I'm not going to
5451 worry about this now.
5452 
5453]
5454[Improve pruning of case alternatives to account for GADTs
5455simonpj@microsoft.com**20060412152327
5456 
5457 Consider
5458 
5459   data T a where
5460     T1 :: T Int
5461     T2 :: T Bool
5462     T3 :: T Char
5463 
5464   f :: T Bool -> Int
5465   f x = case x of
5466          DEFAULT -> ...
5467          T2 -> 3
5468 
5469 Here the DEFAULT case covers multiple constructors (T1,T3), but none
5470 of them can match a scrutinee of type (T Bool).  So we can prune away
5471 the default case altogether.
5472 
5473 In implementing this, I re-factored this bit of the simplifier, elminiating
5474 prepareAlts from SimplUtils, and putting all the work into simplAlts in
5475 Simplify
5476 
5477 The proximate cause was a program written by Manuel using PArrays
5478 
5479]
5480[Fix a bug in optimising division to shift right
5481Simon Marlow <simonmar@microsoft.com>**20060412144247
5482 Division by an integral log2 can't be directly optimised to a shift
5483 right, because shift right behaves like a division that rounds to
5484 negative infinity, whereas we want one that rounds to zero.  Fix this
5485 by adding (divisor-1) to the dividend when it is negative before
5486 shifting.  We do this without jumps, generating very slightly worse
5487 code than gcc, which uses conditional moves on CPUs that support it.
5488]
5489[Omit lndir on Windows, as it used to be
5490simonpj@microsoft.com**20060411135334]
5491[remove a trace
5492Simon Marlow <simonmar@microsoft.com>**20060411131531]
5493[Allow IO to be wrapped in a newtype in foreign import/export
5494simonpj@microsoft.com**20060411120441
5495 
5496 Up to now, the silent unwrapping of newtypes in foreign import/export
5497 has been limited to data values.  But it's useful for the IO monad
5498 itself:
5499 
5500        newtype MyIO a = MIO (IO a)
5501 
5502        foreign import foo :: Int -> MyIO Int
5503 
5504 This patch allows the IO monad to be
5505 wrapped too. This applies to foreign import "dynamic" and "wrapper",
5506 thus
5507    foreign import "wrapper" foo :: MyIO () -> HisIO (FunPtr (MyIO ()))
5508 
5509 Warning: I did on the plane, and I'm no longer sure if its 100%
5510 complete, so needs more testing.  In particular the wrapper/dynamic bit.
5511 
5512]
5513[Improve newtype deriving
5514simonpj@microsoft.com**20060402215911
5515 
5516 Ross Paterson pointed out a useful generalisation of GHC's
5517 newtype-deriving mechanism.  This implements it.  The idea
5518 is to allow
5519        newtype Wrap m a = Wrap (m a) deriving (Monad, Eq)
5520 where the representation type doesn't start with a type
5521 constructor.
5522 
5523 Actually GHC already *did* implement this, but the eta-ok
5524 check in TcDeriv missed a case, so there was a lurking bug.
5525 
5526 This patches fixes the documentation too.  drvrun019 tests.
5527 
5528 
5529]
5530[add take to the list of functions deforestable
5531Simon Marlow <simonmar@microsoft.com>**20060411090131]
5532[avoid versionitis in Numeric.showHex (should fix tcrun007)
5533Simon Marlow <simonmar@microsoft.com>**20060411085009]
5534[add a note about full-laziness
5535Simon Marlow <simonmar@microsoft.com>**20060410093824]
5536[robustify the test for the top of the tree a little
5537Simon Marlow <simonmar@microsoft.com>**20060410082224]
5538[Make darcs-all work without a ghc toplevel directory
5539Josef Svenningsson <josef.svenningsson@gmail.com>**20060407161738]
5540[Fix typo in darcsall warning
5541Josef Svenningsson <josef.svenningsson@gmail.com>**20060407161335]
5542[fix source dists
5543Simon Marlow <simonmar@microsoft.com>**20060407150045]
5544[add a README for binary dists
5545Simon Marlow <simonmar@microsoft.com>**20060407143832]
5546[fix binary dists
5547Simon Marlow <simonmar@microsoft.com>**20060407143822]
5548[remove the last bits of the ghc/ subdir
5549Simon Marlow <simonmar@microsoft.com>**20060407085219]
5550[TAG 07.04.06
5551Lemmih <lemmih@gmail.com>**20060407130411]
5552Patch bundle hash:
5553552f49eb9434f89c4df385d6e6d6f7af160ab899