Ticket #932: inliner3.dpatch

File inliner3.dpatch, 223.0 KB (added by samb, 9 years ago)
2New patches:
4[Teach the inliner about primitive comparisons against constants
5Samuel Bronson <[email protected]>**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 )
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)
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
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
59hunk ./compiler/coreSyn/CoreUnfold.lhs 280
61hunk ./compiler/coreSyn/CoreUnfold.lhs 317
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)
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
72+       where
73+         alt_sizes = map size_up_alt alts
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
94hunk ./compiler/prelude/PrimOp.lhs 16
96+        PrimOpInfo(..), primOpInfo,
99[Merge imports
100Samuel Bronson <[email protected]>**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
124[Count cased-over primops on the off chance that it will help
125Samuel Bronson <[email protected]>**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
137[Unlifted args are only interesting when we know what they are
138Samuel Bronson <[email protected]>**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
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?
155[Bump the HEAD to 6.7
156Ian Lynagh <[email protected]>**20061024003553]
157[Clean up debugging code in RnNames
158Manuel M T Chakravarty <[email protected]>**20061023180503]
159[wibble in parseStaticFlags
160Simon Marlow <[email protected]>**20061023145817
161 should fix profiling and unreg in HEAD
163[Improve error messages for indexed types
164Manuel M T Chakravarty <[email protected]>**20061022171212]
165[A little abstraction
166[email protected]**20061019152328]
167[Fix handling of family instances in the presense of this doc stuff
168Manuel M T Chakravarty <[email protected]>**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
174     data instance T pats = rhs
176   T is *not* a defining occurence of T (similarly as C is not a defining
177   occurence in "instance C Int").
179[TAG 2006-10-22
180Ian Lynagh <[email protected]>**20061022003640]
181[Fix parent position in RnNames.nubAvails
182Manuel M T Chakravarty <[email protected]>**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.
191[Fix export of associated families with new name parent story
192Manuel M T Chakravarty <[email protected]>**20061021002813
194 Given
196   module Exp (T)
197   where
199   class C a where
200     data T a :: *
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.
206[Fix processing of imports involving ATs with the new name parent code
207Manuel M T Chakravarty <[email protected]>**20061020180442
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:
214   class GMapKey a where
215     data GMap a :: * -> *
216   instance GMapKey Int where
217     data GMap Int v = GMapInt ...
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).
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.
229[Fix family instance bug due to the name parent elimination
230Manuel M T Chakravarty <[email protected]>**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).
236[Fix show-iface for family instances & add debug ppr for type declarations
237Manuel M T Chakravarty <[email protected]>**20061019165840]
238[Run dos2unix on all the outputs, and don't let it eat stderr
239Ian Lynagh <[email protected]>**20061019134818]
240[Fix stage1 build with 6.2.1 (from Andy Gill)
241Ian Lynagh <[email protected]>**20061019000807]
242[Fix the build with GHC 6.2.2
243Ian Lynagh <[email protected]>**20061018230555]
244[Cross-module consistency check for family instances
245Manuel M T Chakravarty <[email protected]>**20061018221300]
246[Fixed spelling error in compiler/ghci/InteractiveUI.hs and docs/users_guide/ghci.xml
247[email protected]**20061011204301]
248[Fix a bug in Lint (which wrongly complained when compiling Data.Sequence with -02)
249[email protected]**20061018120500]
250[Add the primitive type Any, and use it for Dynamics
251[email protected]**20061018115658
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
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).
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
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 []
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.]
277 Anyway, this fixes Trac #905
280[Add comment about arity
281[email protected]**20061018112418
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.
286 I rather think that arity is only relevant for
287        SynTyCon
288        AlgTyCon
289        CoercionTyCon
291 This comment (and commit message) is just an aide memoire.
294[Spelling in comment
295[email protected]**20061018112351]
296[Minor refactoring
297[email protected]**20061018112320]
298[Comments onl
299[email protected]**20061018112235]
300[fix build for 6.4.x and 6.6.x
301Simon Marlow <[email protected]>**20061018080526]
302[compensate for gmp/configure sometimes not being executable
303Simon Marlow <[email protected]>**20061017132215]
304[Rejig TABLES_NEXT_TO_CODE: the -unreg flag was broken by earlier changes
305Simon Marlow <[email protected]>**20061017094435
306 A GHC binary can generally build either registerised or unregisterised
307 code, unless it is unregisterised only. 
309 The previous changes broke this, but I think I've now restored it.
312[Stage 2 fix to "Keep track of family instance modules"
313Manuel M T Chakravarty <[email protected]>**20061016194048]
314[remove use of FiniteMap, use Text.Printf
315Simon Marlow <[email protected]>**20061016151935]
316[fix a regular expression in banner_re
317Simon Marlow <[email protected]>**20061016150802]
318[Don't squish "Inlined fn" into the right margin quite as much in trace output
319Samuel Bronson <[email protected]>**20061016130004]
320[Fix build on x86_64
321Simon Marlow <[email protected]>**20061016112045
324[Fix deadlock on second call to newSession
325Simon Marlow <[email protected]>**20061016111741
326 Tracked down by Krasimir Angelov
328[Build the GHC package in stage 3 too
329Simon Marlow <[email protected]>**20061016110926
330 This fixes the problem with the nightly builds not including the GHC
331 package.
333[more fixups to make a stage 3 build do the right thing with the ghc package
334Simon Marlow <[email protected]>**20061013135318]
335[use the correct $(HC)
336Simon Marlow <[email protected]>**20061013134443]
337[remove unused origPkgIdMap field from PackageState
338Simon Marlow <[email protected]>**20061006105148]
339[Cache the package database the first time it is read
340Simon Marlow <[email protected]>**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.
345[fix non-DEBUG build (probably my fault, sorry)
346Simon Marlow <[email protected]>**20061016105852]
347[Add assertion checks for mkCoVar/mkTyVar
348[email protected]**20061013162434
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.
353 And it adds fixes to places which were Wrong (and hence fired the
354 assertion)!
356 Also removed isCoVar from Coercion, since it's done by Var.isCoVar.
361[Uncomment code to emit a space in place of a '>' in literate scripts
362Ian Lynagh <[email protected]>**20061013131514
363 This fixes trac #210. Test is read041.
365[Change type of TcGadt.refineType, plus consequences
366[email protected]**20061013115801]
367[Try to get the right output for nofib-analyse
368Samuel Bronson <[email protected]>**20061014175855]
369[Get nofib-analyse to build with 6.4 at least...
370Samuel Bronson <[email protected]>**20061014163442]
371[More refactoring in RnNames
372[email protected]**20061013094230
374 I rather self-indulgently spent a chunk of yesterday working on
375 refactoring RnNames further.  The result is significantly simpler:
377 * A GlobalRdrElt gets an extra field, gre_par, which records
378   the parent (if any) of the name
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
385 I also did some tidying up; notably moving AvailEnv stuff from
386 TcRnTypes to RnNames.
388 The result is tha the compiler is some 130 lines shorter than before
391[Keep track of family instance modules
392Manuel M T Chakravarty <[email protected]>**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.
402 *** WARNING: This patch changes the interface file format! ***
403 ***          Recompile libraries and stage2 from scratch!  ***
405[Overlap check for family instances def'd in current module
406Manuel M T Chakravarty <[email protected]>**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.
411[Comments only
412[email protected]**20061012160254]
413[Make Inst into a record type to ease subsequent changes
414[email protected]**20061011112305]
415[Improve pretty-printing slightly
416[email protected]**20061011112242]
417[Add comments about primop rules
418[email protected]**20061011112224]
419[fix definition of fib in example code
420Simon Marlow <[email protected]>*-20061012110711]
421[Track changes in source packaging scheme
422[email protected]**20061012121213]
423[fix definition of fib in example code
424Simon Marlow <[email protected]>**20061012110711]
425[Partially fix GHCi when unregisterised
426Ian Lynagh <[email protected]>**20061012013901
427 We were constructing info tables designed for TABLES_NEXT_TO_CODE,
428 but were building without TABLES_NEXT_TO_CODE.
430 This patch also fixes a bug when we are unregisterised on amd64 and
431 have code with an address above 2^32.
433[More import tidying and fixing the stage 2 build
434Simon Marlow <[email protected]>**20061011200110]
435[Use relative URLs when referring to libraries; push to 6.6 branch
436[email protected]**20061011142502]
437[Improve documentation of concurrent and parallel Haskell; push to branch
438[email protected]**20061010155834]
439[Correct id to linkend
440[email protected]**20061010155814]
441[Fix trac #921: generate *q instructions for int-float conversions
442Ian Lynagh <[email protected]>**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.
447[Module header tidyup #2
448Simon Marlow <[email protected]>**20061011143523
449 Push this further along, and fix build problems in the first patch.
451[remove BitSet, it isn't used
452Simon Marlow <[email protected]>**20061011131614]
453[Module header tidyup, phase 1
454Simon Marlow <[email protected]>**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:
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
465[Interface file optimisation and removal of nameParent
466Simon Marlow <[email protected]>**20061011120518
468 This large commit combines several interrelated changes:
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.
476     This reduces the size of interface files, which should
477     hopefully improve performance (not measured yet).
479     The toIfaceXXX functions now do not need to pass around
480     a function from Name -> IfaceExtName, which makes that
481     code simpler.
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:
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.
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.
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.
506 Also:
508    - ifaceDeclSubBinders moved to IfaceSyn (seems like the
509      right place for it).
511    - heavily refactored renaming of import/export lists.
513    - Unfortunately external core is now broken, as it relied on
514      IfaceSyn.  It requires some attention.
516[add extendNameEnvList_C
517Simon Marlow <[email protected]>**20061010153137]
518[getMainDeclBinder should return Nothing for a binding with no variables
519Simon Marlow <[email protected]>**20061010153023
520 See test rn003
523[Use ":Co", not "Co" to prefix coercion TyCon names
524Simon Marlow <[email protected]>**20061010134449
525 Avoid possibility of name clash
527[Fix another hi-boot file
528Ian Lynagh <[email protected]>**20061010235157]
529[Removed unused unwrapFamInstBody from MkId
530Manuel M T Chakravarty <[email protected]>**20061010205843]
531[Rejig the auto-scc wrapping stuff
532[email protected]**20061010164116]
533[Do not filter the type envt after each GHCi stmt
534[email protected]**20061010143225
536 Fixes Trac #925
538 A new comment in TcRnDriver in tcRnStmt reads thus:
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.
556[Fail more informatively when a global isn't in the type environment
557[email protected]**20061010143145]
558[Rough matches for family instances
559Manuel M T Chakravarty <[email protected]>**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.)
572 *** WARNING: The interface file format changed! ***
573 ***         Rebuild from scratch.              ***
575[Tweaks and missing case in disassembler
576Ian Lynagh <[email protected]>**20061009230539]
577[Update hi-boot files to fix building with old GHCs
578Ian Lynagh <[email protected]>**20061009193218]
579[STM invariants
580[email protected]**20061007122907]
581[Fix unregisterised alpha builds
582Ian Lynagh <[email protected]>**20061004125857]
583[Comments and an import-trim
584[email protected]**20061006161403]
585[Mention that the module sub-directory structure for .o and .hi files is created automatically by GHC
586[email protected]**20061006151234]
587[Bale out before renamer errors are duplicated
588[email protected]**20061006140250
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.
594 (E.g test mod67 shows this up.)
597[Avoid repeatedly loading GHC.Prim
598[email protected]**20061006140102
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
606[Print the 'skipping' messages at verbosity level 1
607[email protected]**20061006140034]
608[Fix up the typechecking of interface files during --make
609[email protected]**20061006131932
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.
616 The main fix is by introducing TcIface.ifCheckWiredInThing.
618 But I did some minor refactoring as well.
621[Import trimming
622[email protected]**20061006131830]
623[Figure out where the rest of the repositories are, based on defaultrepo
624Simon Marlow <[email protected]>**20061006100049
625 This is a slight improvement over the patch sent by [email protected],
626 we now do it properly if the source repo was a GHC tree on the local
627 filesystem too.
629 Merge post 6.6.
631[Yet another fix to mkAtomicArgs (for floating of casts)
632[email protected]**20061006075213
634 Comment Note [Take care] explains.
636 mkAtomicArgs is a mess.  A substantial rewrite of Simplify is needed.
639[Improve comments and error tracing
640[email protected]**20061006075058]
641[Improve error message
642[email protected]**20061006072002]
643[Undo an accidentally-committed  patch by Audrey
644[email protected]**20061006071925]
645[Merge Haddock comment support from ghc.haddock -- big patch
646[email protected]**20061005220258]
647[Remove casts from lvalues to allow compilation under GCC 4.0
648[email protected]**20060929185931]
649[Correct the float-coercions-out-of-let patch
650[email protected]**20061005161819]
651[Merge changes
652Ian Lynagh <[email protected]>**20061005150630]
653[Improve the correlation betweens documented and existent options
654Ian Lynagh <[email protected]>**20061003220354]
655[Document -dfaststring-stats
656Ian Lynagh <[email protected]>**20061003154147]
657[Rearrange docs to have all the -ddump-* options together
658Ian Lynagh <[email protected]>**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
672 This patch teaches SpecConstr about casts; see Note [SpecConstr for casts]
675[Float coercions out of lets
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:
689      data family T a :: *
690      data instance T Int = T Int
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
702[Remove unused argument to mkAtomicArgs
704[Comments and layout
706[Remove unused OccInfo (simplification)
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.
713 Now at last I think we can nuke it altogether.  Hooray.
715 I did a full nonfib run, and got zero perf changes.
718[Take 2 on the recursive-rule fix
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
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]
733[Take advantage of non-rec-ness in occurrence analysis (minor)
735[Spelling in comment
737[Add intersectsUFM
739[Made 'for' a special ID in the grammar.
741[Merged stand-alone deriving with FC stuff.
743[First documentation on stand-alone instance deriving.
745[Fixed source location and instance origin in stand-alone deriving error messages.
747[Added type signature for tcSplitSigmaTy.
749[New syntax for stand-alone deriving. Implemented fully.
751[Renamer part of stand-alone deriving extension.
753[Added parser and abstract syntax support for stand-alone deriving declarations.
755[Comments only
757[Fix comment in RdrName
759[Improve unboxing of strict fields
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.
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.
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.
779[Remove redundant dump
781[Trim imports
783[Improve liberate-case to take account of coercions
786 Note [Scrutinee with cast]
787 ~~~~~~~~~~~~~~~~~~~~~~~~~~
788 Consider this:
789     f = \ t -> case (v `cast` co) of
790                 V a b -> a : f t
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.
795 This patch does the job.  For a change, it was really easy.
798[Remvove totally unused static flags
800[Remove ILX from the GHC altogether (although I left the source file IlxGen in case anyone wants to see it)
802[-frule-check is not a static flag
804[Tidy tyvar OccNames in TcTyClDecl
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.)
812 When IfaceSyn is full of Names, this won't matter so much, but it still
813 seems cleaner.
815 This patch adds a 'tidy' step to the generation of DataCon type
816 variables in TcTyClDecls.tcResultType
819[Improve pretty printing slightly
821[Second bite at the rules-only idea
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.
829 So I've added a boolean rules-only flag to IAmALoopBreaker.  Now we can
830 do inlining for rules-only loop-breakers.
833[Eliminate case-of-cast
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
846 This patch does the job, fixing a performance hole reported by Roman.
849[Fixes for the porting process for 6.6
850Ian Lynagh <igloo@earth.li>**20061003124232]
851[Make recursion and RULES interact better
854 See Trac #683
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.
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.
866 The remaining potential problem is this:
867        rec{ f = ...g...
868           ; g = ...f...
869             RULE g True = ...
870           }
872 The RULE for g may not be visible in f's rhs.  This is fixable, but not
873 today.
877[Warning police only
879[Fix scoped type variables for expression type signatures
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.
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!
891 I updated the user manual too.
893 A test is tc213.
895 It would be good to push this into 6.6.1
898[Trim imports
900[Add error check for operators in types
903 Fixes Trac #919
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
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.
920[Match let before lambda in rule-matching (see comment with Lam case of Rules.match)
922[Fix bug in SCRIPT_SHELL patch (| should be ||)
924[Add missing case for EqPred
926[Amplify scoped tyvar changes
928[Update release notes
930[Remove Linear Implicit Parameters, and all their works
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.
938[Global renamings in HsSyn
940[Improve pretty-printing of Core
942[Another correction to the (subtle) exprIsConApp_maybe
944[Spelling correction
946[Improve pretty printing of IfaceSyn
948[Improve unification error messages (again) (push to 6.6 branch)
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.
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
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'.
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.
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.
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
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)
1007[unbreak mingw-on-cygwin (/=MSYS) builds
1009[Add source code links to Haddock docs
1010Simon Marlow <simonmar@microsoft.com>**20060908112725
1012 Right now we can only manage to add a source code link for the module,
1013 but that's better than nothing.
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).
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.
1024 (when we merge this patch onto the HEAD we'll have to tweak these
1025 settings).
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...
1031[Fix derived instances (again); prevents infinite superclass loop
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.
1040[rejig library include/ files
1042[Fix newtype deriving properly (un-doing Audreys patch)
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.
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.
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.
1060 Anyway it should work now!
1063[Document -F in the flag reference
1064Ian Lynagh <igloo@earth.li>**20060925134816]
1065[Added Darwinports path to DocBook XSL stylesheets to configure.
1067[Comment-only: Fix a typo, and note that the PredTy case on SplitTyConApp_maybe was added as a kluge.
1069[In tcSplittyConApp_maybe, add the PredTy case
1071 such that this can compile again:
1073     newtype Moose = MkMoose () deriving (Eq, Ord)
1076[Fixed DocBook XML once again, "make validate" is your friend!
1078[Trim more imports
1080[Fix origin for addDataConStupidTheta
1082[Remove ASSERT from mkDataCon, and add comments to explain why
1084[The unboxed tuple kind is (#), not (##)
1086[Complete definition of cmPredX to take account of EqPred
1088[Correct crucial typo in isSubKind (kc1 -> kc2)!
1090[Re-work the newtype-deriving support
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. 
1097 I think it's right now, but I have not yet tested it thoroughly.
1100[Add TcRnMonad.newSysLocalIds, and use it
1102[Remove dead code concerning coercions from TypeRep
1104[Move snocView in the file, nearer the other spliting functions
1106[Improve documentation of newtype-deriving (todo: check formatting still works)
1108[Add VarSet.disjointVarSet, and use it
1110[Trim imports, and remove some dead code
1112[Improve specialisation in SpecConstr
1115 This patch enables argToPat to look through let expressions
1117 e.g.   f (let v = rhs in \y -> ...v...)
1119 Here we can specialise for f (\y -> ...) because the rule-matcher will
1120 look through the let.
1123[Remove duplicate call to getDOpts
1125[Remove use of isVanillaDataCon, which was wrong under the new FC dispensation
1127[Trim imports, reformatting
1129[Add a crucial missing prime in tcConPat
1132 This fixes a typo -- a missing prime in tcConPat. 
1134 The test is gadt18.
1136 While modifying TcPat I also trimmed imports, fixed non-exhaustive
1137 patterns, and improved tracing.
1141[64bit fixes for the symbol lookup table
1143[In ByteCodeGen, correctly passthru AnnCast in all relevant places, so the previous band-aid fix is no longer needed.
1145[Add explicit eta-reduction to GHCI's schemeE such that deriving Typeable won't panick.
1147[Repair "ghci" under FC+AT by handling AnnCast in bytecode generator.
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
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.
1161 GHCi now works on OpenBSD 4.0
1163 Contributed by Eric Mertens <emertens at gmail.com>
1166[* TypeRep.lhs and TypeRep.lhs-boot didn't agree on their signatures (SuperKind vs Kind)
1168[* Fix stray comma in HsTypes.lhs's import line.
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.
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
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
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
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
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
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
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.
1230     *** WARNING: This patched changes the iface format! ***
1231     ***          Please re-compile from scratch!           ***
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
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.
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
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).
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.
1283     *** WARNING: Change of interface file format! ***
1284     ***          Recompile from scratch!          ***
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)
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
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.
1320     *** WARNING!  This patch changed the interface file format. ***
1321     ***           Please recompile from scratch.                ***
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
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.
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
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
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
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
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
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).
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:
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
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)
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)
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
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
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)
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.
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.)
1475           ** WARNING: Interface file format changed! **
1476           **          Recompile from scratch!        **
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)
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
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.
1507     ** WARNING: Yet another change of the iface format.  **
1508     **          Recompile everything.                    **
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
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
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
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
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
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).
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
1930       This patch completes FC evidence generation for GADTs.
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.
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
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
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
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
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
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
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
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
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
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.
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
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
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.
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
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
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
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
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
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
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.
2077   ** WARNING: This patch changes the format of interface files **
2078   **          You will need to rebuild from scratch.           **
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
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
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
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
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
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
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
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
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.
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.
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
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.
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
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.
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
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.
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
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
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
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)
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
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)
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
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
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
2225[Comment on the commoning up of CoPats in Match
2227[Add comment for the invariant that DataAlt is never a newtype
2229[Comments only
2231[Change ASSERT to WARN
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
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
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
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
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
2259[Add Coercion.lhs
2260Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060806214025
2261 - Extra patch as diff doesn't capture add files
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
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
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
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
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
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
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
2294[Massive patch for the first months work adding System FC to GHC #36
2295Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060804222436
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.
2303[Massive patch for the first months work adding System FC to GHC #35
2304Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060804222351
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.
2312[Massive patch for the first months work adding System FC to GHC #33
2313Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060804221455
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.
2321[Massive patch for the first months work adding System FC to GHC #32
2322Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060804221423
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.
2330[Massive patch for the first months work adding System FC to GHC #29
2331Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060804221221
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.
2339[Massive patch for the first months work adding System FC to GHC #28
2340Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060804221148
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.
2348[Massive patch for the first months work adding System FC to GHC #27
2349Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060804221001
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.
2357[Massive patch for the first months work adding System FC to GHC #26
2358Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060804220614
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.
2366[Massive patch for the first months work adding System FC to GHC #25
2367Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060804220526
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.
2375[Massive patch for the first months work adding System FC to GHC #24
2376Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060804220423
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.
2384[Massive patch for the first months work adding System FC to GHC #23
2385Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060804215846
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.
2393[Massive patch for the first months work adding System FC to GHC #22
2394Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060804215642
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.
2402[Massive patch for the first months work adding System FC to GHC #21
2403Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060804215414
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.
2411[Massive patch for the first months work adding System FC to GHC #19
2412Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060804213946
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.
2420[Massive patch for the first months work adding System FC to GHC #18
2421Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060804213610
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.
2429[Massive patch for the first months work adding System FC to GHC #17
2430Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060804212140
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.
2438[Massive patch for the first months work adding System FC to GHC #16
2439Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060804211912
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.
2447[Massive patch for the first months work adding System FC to GHC #15
2448Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060804200105
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.
2456[Massive patch for the first months work adding System FC to GHC #13
2457Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060804195734
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.
2465[Massive patch for the first months work adding System FC to GHC #12
2466Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060804195607
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.
2474[Massive patch for the first months work adding System FC to GHC #11
2475Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060804195406
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.
2483[Massive patch for the first months work adding System FC to GHC #10
2484Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060804195145
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.
2492[Massive patch for the first months work adding System FC to GHC #9
2493Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060804194908
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.
2501[Massive patch for the first months work adding System FC to GHC #8
2502Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060804193905
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.
2510[Massive patch for the first months work adding System FC to GHC #7
2511Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060804193719
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.
2519[Massive patch for the first months work adding System FC to GHC #6
2520Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060804193530
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.
2528[Massive patch for the first months work adding System FC to GHC #5
2529Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060804192400
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.
2537[Massive patch for the first months work adding System FC to GHC #4
2538Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060804192302
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.
2546[Massive patch for the first months work adding System FC to GHC #2
2547Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060804191937
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.
2555[Comments only
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
2563[Make mkApps etc infix, and left-associative
2565[A somewhat subtle (FC-related) bug concerning the monomorphism restriction
2567[Add some type signatures
2569[A class in an interface file defines the CoTyCon of its class tyocn
2571[Tiny comment change (darcs test only)
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
2579[Packages cleanup, and allow new packages to be loaded with :set again
2580Simon Marlow <simonmar@microsoft.com>**20060919012448
2582 This cleans up the package subsystem a little.  There are some
2583 changes to the GHC API as a result.
2585   - GHC.init and GHC.initFromArgs are no longer necessary.
2587   - GHC.newSession takes the root of the GHC tree as an argument
2588     (previously passed to GHC.init).
2590   - You *must* do GHC.setSessionDynFlags after GHC.newSession,
2591     this is what loads the package database.
2593   - Several global vars removed from SysTools
2595   - The :set command in GHCi can now cause new packages to be loaded,
2596     or can hide/ignore existing packages.
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.
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
2633 This commit does two largely-unrelated things, but they hit the same code.
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.
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.   
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.
2647 Test is tc210.
2652[Ensure that only zonked poly_ids are passed to tcSpecPrag
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.
2659 I ended up doing a bit of refactoring too.  The extra lines are
2660 comments I think; the code line count is reduced.
2662 Test is tc212.hs
2665[Comments only
2667[Add a missing renamer dump (related to Template Haskell)
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.
2671[Fixed error in user's manual, gadt section, part about deriving. Data constructor type was Maybe, should be Maybe1.
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.
2679[Take away XXXs in GADT records related code that are no longer TODOs.
2681[Fix ~2000 second profiling time wrapping bug
2682Ian Lynagh <igloo@earth.li>**20060911223210]
2683[Add postfix ops to the release notes
2685[Document postfix operators
2687[Simplify desugaring of left sections
2690        MERGE TO 6.6 branch!
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. 
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.
2704 Anyway, this commit fixes the *desugarer* so that it correctly desugars
2705 the programs that the typechecker passes.
2709[Add comment
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
2723[Catch errors in pattern matching for unboxed tuples
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...
2730 The fix is in TcPat, and test are tcfail115, tcfail120, and tc209
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.
2741[Fixed typo in users guide section about lexically scoped type variables.
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.
2756[Fix the handling of names in declaration brackets
2759 The handling of top-level names in declaration brackets is a bit tricky.
2760 This commit fixes Trac #977;  test is TH_spliceD2.
2762 The changes are commented in RnExpr.rnBracket and RdrName.hideSomeUnquals
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.
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.
2778[Documentation for impredicative polymorphism
2780[Comments only
2782[Remove result type signatures from documentation
2784[Fix bug in error message
2786[Result type signatures are no longer supported (partial)
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.
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.
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...).
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.
2813[document -V in the +RTS --help outpout
2814Simon Marlow <simonmar@microsoft.com>**20060907084445]
2815[Pattern-match warning police
2817[Improve error reporting for SigTvs, and add comments
2819[Check that top-level binders are unqualified names
2822 Not having this check led to strange error messages.
2823 See test rnfail046.
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
2831 exprIsCheap was already making record selection look cheap, esp for
2832 dictionary selection; e.g.
2833    (==) dEq
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.
2839 But sometimes dictionary selection is nested; e.g.
2840    (==) ($p1Num dNum)
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.
2845 This patch makes nested record selections also look cheap.
2848[Documentation for lexically-scoped type variables
2851 GHC's design for lexically scoped type variables has changed.
2852 Here, belatedly, is the documentation.
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.
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.
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.
2882[Fix dependency analysis (notably bindInstsOfLocalFuns) in TcBinds
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.) 
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.)
2894 Test is tc207.hs
2898[Add note about overlapping instances
2900[Record that TH doesn't support pattern types signature
2902[Fix typos.
2903Ian Lynagh <igloo@earth.li>**20060904190958]
2904[Refactoring for derived Read
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. 
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.
2919 Similarly records.
2921 Anyway this commit doesn't implement the change; just makes it easy
2922 to do so.
2925[Enable bang-patterns only when the flag says so (had missed a case before)
2927[Improve pretty-printing for HsExpr
2929[Remove linear implicit parameters, and document in release notes
2931[Release notes should mention better newtype-deriving
2933[Documentation for bang patterns, and other improvements
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
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
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.
2978 Fixes one cause of
2980    internal error: ASSERTION FAILED: file Capability.c, line 90
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.
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.
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.
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.
3010 Fixes at least one threaded2 test on Windows.
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.
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
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.
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
3042 It's an internal module used by non-GHC implementations only.
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.
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
3066 This is mainly for the benefit of Solaris. I'll fix this properly later.
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
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.
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.
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>
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
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.
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:
3137   base, Cabal, haskell98, readline, regex-base, regex-compat
3138   regex-posix, stm, template-haskell, unix, Win32
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.
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.
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'.
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.
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.
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 #-}
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.
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
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.
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.
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.
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.
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.
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
3257[I don't thing we want to add a call-context here; it just clutters the output
3259[Avoid duplicate "In type ..." in error messages
3261[Better pretty-printing for TvSubst
3263[Fall over more gracefully when there's a Template Haskell error
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!
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. 
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
3283 Quite a few lines of code are touched, but nothing deep is going on.
3285 Fixes Trac# 760.
3288[Fix typo (fst --> head) in docs on implicit parameters
3290[One last hs-boot update
3292[Missing import for stage 2
3294[One more hs-boot file
3296[Refactoring for valid rule checking
3298[Do not CSE in INLINE and NOINLINE things
3301 See extensive comments with Note [INLINE and NOINLINE] in this file.
3304[Update lhs-boot files
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.
3311 This patche fixes up GHC's own hs-boot files to match the restriction.
3314[Add ad-hoc typing checks for tagToEnum#
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).
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.
3325 Fixes Trac #786
3326 Test is tcfail164
3329[Get dead-ness right in knownCon
3331[Tuning for argToPat
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.
3339[Re-factor mkAtomicArgs and completeNonRecX
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.
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.)
3351 Regardless, this is an improvement.
3354[Another try at the continuation-swapping stuff
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.
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.
3367[Don't build unnecessary lets in knownCon
3370 Faced with
3371        case x of y { (a,b) -> rhs }
3373 where x is bound to (c,d), we were generating
3375        let y = (c,d) in rhs
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
3380        let y = x in rhs
3382 This patch does the job.
3385[Comments only
3387[Refactoring, plus record recursive-function *components* as RecArg too
3389[Record constructor arg occs correctly (bug-fix)
3392 I was forgetting the non-pattern-matched type args of a constructor.
3395[Disable form-checking for rule LHSs
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.
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.
3406[Allow class and instance decls in hs-boot files
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.
3413 This patch makes it possible to put *both* class and instance decls
3414 in an interface file.
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.
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.
3428[Reject derivable type classes with higher-rank methods
3431 Trac #864 suggested a derivable type class with a higher-rank method.
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.
3442[SpecConstr now specialises on constants and lambdas
3445 Roman inspired me to beef up SpecConstr to deal with
3446 a) constant arguments
3447 b) lambda arguments
3449 This is described in elaborate comments in the file:
3450        Note [Specialising for constant parameters]
3451        Note [Specialising for lambda parameters]
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.
3459[Fix two bugs in rule-matching
3462 These two typo-like bugs have been there for a long time!
3464   One concerns the selection of overlapping rules,
3465   which was back to front
3467   The other was name-lining-up bug in the Case case of matching
3469 This patch also arranges to export matchN.
3470   (Not a good name, but still!)
3474[Moving list-length code from one place in the file to another
3476[Make UniqSM into a proper monad
3478[Typo in patch that dealt with duplicating continuations in Simplify
3480[Be more conservative about duplicating continuations
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).
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.
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.
3496[Inline into tail-called constructor args
3499 Consider
3500        x = case y of { True -> (p,q); ... }
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.
3507[Improve exprIsCheap
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.
3514 This patch re-factors the code somewhat, and fixes the bug.
3517[Added xhtml and cgi as default libraries.
3519[Improve error message in TcHsType
3522 Fixes Trac #863.
3523 Test is tcfail162
3526[Warning police: Removed overlapped pattern warnings
3528[Complete -fmono-pat-binds patch
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.
3535 I documented the design too:
3536    http://haskell.galois.com/cgi-bin/haskell-prime/trac.cgi/wiki/MonomorphicPatternBindings
3539[Avoid warning about overlapped pattern for Linux target
3541[Improve error message layouts
3543[Add type signature
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.
3551[On FreeBSD, use -lthr instead of -pthread for now (see comments)
3552Simon Marlow <simonmar@microsoft.com>**20060811113453]
3553[Two more error message indendations
3555[Go back to calling type veriables t
3557[Indent an error message
3559[Improve error message (imported from Prelude at Implicit import declaration)
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
3567[Nuked hschooks.h in favour of cutils.h, which has the prototypes we need
3569[Match format strings and arguments for printf-like functions
3571[Warning police: Make prototype for LDV_recordDead_FILL_SLOP_DYNAMIC visible
3573[Warning police: Make strlen and friends known
3575[Tweak GCC's inlining parameters to get thread_obj inlined
3577[Add an IAmDead case to postInlineUnconditionally, and comments
3579[Do not repeatedly simplify an argument more than once
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.
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
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.
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.
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.
3608[Do not call preInlineUnconditionally in simplNonRecX
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.
3616[Make postInlineUnconditaionally more conservative
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.
3624 The extra lines are all comments!
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
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.
3642 This bug isn't present in the STABLE branch.
3644 Manuel: it is *not* necesary to merge this patch into the FC branch;
3645 just ignore it.
3648[Comments about improvements to SpecConstr
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)
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.
3686[Remove old FFI syntax
3687Simon Marlow <simonmar@microsoft.com>**20060809095201
3688 See #815
3690[make exit() overridable, for use in DLLs
3691Simon Marlow <simonmar@microsoft.com>**20060809092439
3692 See #753
3694[More fixes to pre-matching and pre-subsumption
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. 
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.
3707[Group exports so that all length functions are together; no semantic change
3709[Check that lazy patterns are for lifted types
3712 A lazy pattern match must be for a lifted type. This is illegal:
3714        f x = case g x of
3715                 ~(# x,y #) -> ...
3717 This commit fixes the problem.  Trac #845, test is tcfail159
3720[Spelling in a comment
3722[Remove srcSpanStartLine/srcSpanEndLine crash
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.
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.
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
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.
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).
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.
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.
3765[Fix pre-subsumption and pre-matching
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.
3772 I hadn't been thiking carefully enough about this, and there were two
3773 separate bugs. 
3775 - Firstly, in pre-subsumption we must ignore the 'theta'
3776   part of any overloaded type. 
3778 - Second, in pre-matching, we must return the empty subustition
3779   on a mis-match, rather than returning the substitution so far.
3781 This bug showed up when compiling Data.Generics.Schemes.hs, and is
3782 imortalised in test tc206
3785[Improve error message
3788 Improve a little-used error message.  Given
3789        f :: a -> a
3790        f x y = e
3791 the error says
3793        The equations for f have two arguments
3794        but its type `a -> a' has only one
3796 (Before, it said "its type `a' has only one" which is bogus.
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.
3812[Add -fextended-default-rules and -fmono-pat-binds
3815 Add -fextended-deafult-rules (in response to Don Stewart's message below),
3816 and document them.
3818 Also doucument -fmono-pat-binds/-fno-mono-pat-binds, which has been in
3819 GHC a few weeks now.
3821 (The two are in one patch because the diffs were so close together
3822 that Darcs combined them.)
3824 Simon
3827 From: Donald Bruce Stewart [mailto:dons@cse.unsw.edu.au]
3828 Sent: 07 August 2006 10:52
3830 While we're thinking about defaulting, I have a question..
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:
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."
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.
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:
3853     dons:: > reverse []
3854     lambdabot:: Add a type signature
3855     dons:: > reverse [] :: [()]
3856     lambdabot:: []
3858 Which is annoying -- newbies wonder why they have to add these extra
3859 constraints to get a Show instance.
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?
3866[add a comment
3867Simon Marlow <simonmar@microsoft.com>**20060807143102]
3868[Do pre-subsumption in the main subsumption check
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.
3875 Shorn of details, the question is this.  Should this hold?
3877        forall a. a->a   <=   Int -> (forall b. Int)
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.
3883 I did a bit of refactoring to achieve this.
3885 Fixes Trac #821.  Test tc205 tests.
3888[Make unification robust to a boxy type variable meeting itself
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
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.
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.
3909[Added cabal-setup
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.
3917[Add a new section "Getting the Source" to both HACKING and README. But what about win32 users?
3919[savingOldConfig: add Exception.block for extra paranoia
3920Simon Marlow <simonmar@microsoft.com>**20060801131027
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.
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.
3936[Add notes about unsafeCoerce
3938[.hi-boot-5 is obsolete; the earliest GHC we support uses .hi-boot-6
3939Simon Marlow <simonmar@microsoft.com>**20060728140809
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
3949[Improve error message for deriving
3951[Lazy patterns are like wild-cards for overlap warnings
3954        MERGE TO STABLE
3956 Fixes Trac #827
3957 Test is should_compiler/ds058
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
3970[Make -fcontext-stack into a dynamic flag
3973   This allows you to put -fcontext-stack into an options pragma,
3974   as requested by Trac #829
3976   While I was at it, I added OptIntPrefix to the forms allowed
3977   in CmdLineParser.
3980[Deal correctly with infix type constructors in GADT decls
3982[Improve pretty printing of ConDecl
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.
3999[optimisations to newUnique
4000Simon Marlow <simonmar@microsoft.com>**20060725140816
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. 
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).
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.
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.
4028[Generalise Package Support
4029Simon Marlow <simonmar@microsoft.com>**20060725130154
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.
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.
4044 The "module restriction" on combining packages has therefore been
4045 lifted, and a program can contain multiple versions of the same
4046 package.
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.
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.
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.
4066 Internal changes:
4068   - There are two module-related types:
4070         ModuleName      just a FastString, the name of a module
4071         Module          a pair of a PackageId and ModuleName
4073     A mapping from ModuleName can be a UniqFM, but a mapping from Module
4074     must be a FiniteMap (we provide it as ModuleEnv).
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.
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).
4088 Docs to follow.
4090[comment formatting
4091Simon Marlow <simonmar@microsoft.com>**20060725110519
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).
4117[Add -fmono-pat-binds, and make it the default
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.)
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.) 
4131 Furthremore, as an experiment, I'm making it the default.  I want
4132 to see how many progarms fail with monomorphic pattern bindings.
4134 You can recover the standard behaviour with -fno-mono-pa-binds.
4137[Fix RULES lossage
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.
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>
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.
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.
4166[fix bug in sample code
4167Simon Marlow <simonmar@microsoft.com>**20060721083200]
4168[fix eran error message by reordering a couple of tests
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
4175        MERGE TO STABLE
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
4182 Fixes Trac bug #824
4186[Add a clarification about overlapping instances in the manual
4188[Comments and import trimming
4190[Experimental flag -fdicts-cheap
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.
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.)
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
4218        a) I wanted this under flag control, and the flags
4219        are not readily available to all callers of exprIsCheap
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.
4225[document that -fglasgow-exts is needed for RULES to work
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.
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
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:
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
4250 [...]   
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.
4258 [...]
4259 ========================================================================
4261 Greetings
4262 Jan
4264[Add %local-tag to external core output
4265Jan Rochel <jan.rochel@stud.uka.de>**20060702204559
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.
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.
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.
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.
4286 [1] An External Representation for the GHC Core Language
4287     (DRAFT for GHC5.02), page 3, line 1
4289 Greetings
4290 Jan
4292[Remove bashisms from darcs-all
4293Alec Berryman <alec@thened.net>**20060703012911
4295 darcs-all may now be run with any POSIX-compatible /bin/sh.
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
4302[The dict-bindings in an IPBinds need not be in dependency order
4305 This appears to be a long-standing bug, discovered by BlueSpec
4306 (ravi@bluespec.com), Trac bug #795
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.
4312 Test tc203 checks this case.  (Though whether it shows up at
4313 all depends a bit on accidental factors of binding ordering.)
4316[x86 needs -fno-unit-at-a-time too
4317Simon Marlow <simonmar@microsoft.com>**20060704083308
4318 Fixes #809
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.
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.
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.
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.
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.
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
4364[add MO_WriteBarrier to CallishMachOps
4365Simon Marlow <simonmar@microsoft.com>**20060629115837
4366 This will let us express write barriers in C--
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".
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
4394[Add comments to SpecConstr
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
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.
4405 Discovered by Roman.
4408[More SpecConstr tuning
4411 For some reason, SpecConstr wasn't taking account of let-bound constructors:
4412        let v = Just 4
4413        in ...(f v)...
4415 Now it does.  An easy fix fortunately.
4418[Improve consistency checking for derived instances
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.
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)
4434[Slight improvement in TH error reporting
4436[Improve location info when typechecking interface fiels
4438[Fix a bug in the pretty printing of class declarations
4440[Improve RULE matching a bit more
4443 Consider this example (provided by Roman)
4445        foo :: Int -> Maybe Int -> Int
4446        foo 0 (Just n) = n
4447        foo m (Just n) = foo (m-n) (Just n)
4449 SpecConstr sees this fragment:
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            }};
4458 and correctly generates the rule
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 ;]
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
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.
4474 Happily, fixing the bug is easy: add a call to 'lookupRnInScope' in the
4475 (Var v2) case of 'match'.
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.
4482[fix a couple of bugs in markSparkQueue (#799)
4483Simon Marlow <simonmar@microsoft.com>**20060623092044]
4484[pull in STABLE(!) tweaks
4486[fix for when path to GHC contains spaces, from #695
4487Simon Marlow <simonmar@microsoft.com>**20060622131700]
4488[Comment only
4490[Transfer INLINE to specialised functions
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
4499 Here's the example Roman reported
4501     primWriteMU :: UAE e => MUArr e s -> Int -> e -> ST s ()
4502     {-# INLINE primWriteMU #-}
4503     primWriteMU = writeMBU . unMUAPrim
4504     ------
4506     The problem is that primWriteMU doesn't get inlined *sometimes*, which
4507     results in code like
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 #) -> ...
4517 Note the fact that we have a call to the *specialised* $sprimWriteMU.
4520[Arity and eta-expansion tuning
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:
4531   a) a bug in CoreUtils.arityType (the Var case)
4533   b) the arity of a recursive function was not being
4534        exposed in its RHS (see commments with
4535        SimplEnv.addLetIdInfo
4537 The commit fixes both. 
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
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:
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.
4556 If you use -osuf, but haven't built the program the normal way first,
4557 then you see:
4559 TH_genEx.hs:12:2:
4560     cannot find normal object file `TH_genExLib.o'
4561     while linking an interpreted expression
4563 Documentation to follow.
4565 Fixes: #651
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
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:
4588   RaiseAsync.{c,h}     asynchronous exception support
4589   Threads.{c,h}         general threading-related utils
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.
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.
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
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
4607[Improve pretty-printing for bags
4609[Make scoped type variables work for default methods
4612 Consider
4613   class C a where
4614     op :: forall b. a -> b -> b
4615     op = <rhs>
4617 Then 'b' should be in scope in <rhs>.  I had omitted this case.
4618 This patch fixes it.
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
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.
4631[Don't emit 'Skipping' messages unless -v2 or higher is on
4632Don Stewart <dons@cse.unsw.edu.au>**20060610145713
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.
4638 The current behaviour can be recovered with -v2
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.
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.
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.
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
4680   -vs       Trace scheduler events (see also -Ds with -debug)
4681   -vt       Time-stamp trace messages
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.
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.
4702[Remove unnecessary SCHED_INTERRUPTED scheduler state
4703Simon Marlow <simonmar@microsoft.com>**20060607115105
4706[fix a warning
4707Simon Marlow <simonmar@microsoft.com>**20060427130048]
4708[re-enable time package on Windows
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.
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
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.
4726 Fixes: possibly #783, possibly #776, definitely #787
4728[disable time package on mingw to unblock builds.
4730[Remove one more IfaceInlineCall
4732[Remove InlinePlease and add inline function and RULE
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.
4740 However, the surface syntax seems to have gone, and in any case it
4741 can be done more neatly using a RULE.
4743 This commit:
4744   * Removes the InlineCall constructor for Note
4745     and InlinePlease for SimplCont
4747   * Adds a new known-key Id called 'inline', whose definition in
4748     GHC.Base is just the identity function
4750   * Adds a built-in RULE in PrelRules that rewrites (inline f) to
4751     the body of f, if possible
4753   * Adds documentation
4755 NOTE: I have not tested this (aeroplane work).  Give it a try!
4758[Fix typo
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
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.
4772[add a type signature
4774[improvements to lexical error reporting
4776[commented-out debugging code
4778[understand Latin-1 symbols
4780[stgMallocBytesRWX --> allocateExec
4781Simon Marlow <simonmar@microsoft.com>**20060531091202
4782 Not sure how I left this out of the previous patch, oh well.
4784['time' depends on 'Win32' when Windows=YES; mirror that
4786 when setting up SUBDIRS.
4788[Win32: add _imp__tzname
4790[fix Win32 build
4792[replace stgMallocBytesRWX() with our own allocator
4793Simon Marlow <simonmar@microsoft.com>**20060530100211
4795 See bug #738
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.
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. 
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.
4813[add time subdir
4814Simon Marlow <simonmar@microsoft.com>**20060530070721]
4815[Make rule-matching robust to lets
4818 Consider a RULE like
4819        forall arr. splitD (joinD arr) = arr
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.
4825 This patch makes the rule-matcher robust to lets.  See comments with
4826 the Let case of Rules.match.
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.
4834[Improve error reporting in interface typechecking
4836[Fix egregious and long-standing tidying bug
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
4846 Anyway, this fixes it.  MERGE into 6.4.3.
4850[Prune imports
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
4857 In the threaded RTS on *nix platforms:
4859  - we now start the IO manager thread eagerly at startup time
4860    (previously was started on demand).
4862  - we now ask the IO manager thread to stop at shutdown
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.
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.
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"
4880[Run simplifier before SpecConstr
4883 Arrange to run the simplifier before SpecConstr, to (almost entirely)
4884 eliminate shadowing.
4886 Reason: otherwise SpecConstr can generate a RULE that never
4887 files; and LiberateCase specifically *does* generate lots of shadowing.
4889 See Note [Shadowing] in SpecConstr.lhs
4893[Prune imports
4895[Add deShadowBinds
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!
4905[Inline in a call argument if the caller has RULES
4908 This is an experimental change suggested by Roman.  Consider
4910        {-# INLINE f #-}
4911        f x y = ...
4913        ....(g (f a b))...
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.
4919 This patch just records in the continuation that f has rules.  And does so
4920 somewhat recursively...e.g.
4922        ...(g (h (f a b)))...
4924 where g has rules. 
4928[Add idHasRules
4931 Add Id.idHasRules :: Id -> Bool, with the obvious semantics.
4932 This patch makes sense by itself, but it's just a tidy-up.
4936[Transmit inline pragmas faithfully
4939 *** WARNING: you will need to recompile your libraries
4940 ***         when you pull this patch (make clean; make)
4942 The inline pragma on wrapper-functions was being lost; this patch
4943 makes it be transmitted faithfully.
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.
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.
4954 The change does change the binary format of interface files, slightly.
4955 So you need to recompile all your libraries.
4958[Improved RULE lhs typechecking; less dictionary sharing
4961 See long comment with Simplify.tcSimplifyRuleLhs.
4963 Here's the key example:
4965   RULE "g"  forall x y z. g (x == y) (y == z) = ...
4967 Here, the two dictionaries are *identical*, but we do NOT WANT to
4968 generate the rule
4970 RULE   forall x::a, y::a, z::a, d1::Eq a
4971          f ((==) d1 x y) ((>) d1 y z) = ...
4973 Instead we want
4975 RULE   forall x::a, y::a, z::a, d1::Eq a, d2:Eq a
4976          f ((==) d1 x y) ((>) d2 y z) = ...
4979[Bug-fix for infix function definitions (parse/rename)
4982 Fix a crash provoked by
4984        x `op` y = x
4985        op       = True
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.
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.
4997[Remove misleading comments
4999[Fix a nasty continuation-duplication bug
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.
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.
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).
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     }
5048[Make simplifier report which phase it is doing in -ddump output
5050[Comments only
5052[take parsec out of $(GhcBootLibs)
5053Simon Marlow <simonmar@microsoft.com>**20060518131506]
5054[Improve documentation of INLINE pragmas
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.
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().
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
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.
5079[White space only
5081[Retain InlinePragInfo on wrappers
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.
5089 For a change, fixing a bug involves only deleting code!
5092[Spelling correction
5094[Retain INLINE pragma information during indirection-shorting
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.
5102[Improve pretty-printing
5104[Comments only
5106[Improve pretty-printing slightly
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.
5112 You can generate V8+ ABI .o files using flags to gcc such as:
5113  -optc-mcpu=ultrasparc -opta-mcpu=ultrasparc
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.
5120 Tested briefly on a SunBlade 100 (TI UltraSparc IIe) sparc-unknown-linux
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.
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
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.
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.
5152 (I noticed this when fixing unsafePerformIO stuff, becuase 'lazy' was getting
5153 an unfolding when it shouldn't.)
5156[Remove NOINLINE strictness hack
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.
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.
5177 So the new plan is to define unsafePerformIO using the 'lazy' combinator:
5179        unsafePerformIO (IO m) = lazy (case m realWorld# of (# _, r #) -> r)
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.
5185 Now we don't need the hack in the strictness analyser.
5188[Trim imports
5190[Trim imports
5193Simon Marlow <simonmar@microsoft.com>**20060508111206]
5194[Fix bug #763: Breakpoint mechanism crashes when there's a type error.
5195Lemmih <lemmih@gmail.com>**20060505232158]
5197Lemmih <lemmih@gmail.com>**20060502174340]
5198[Preserve type variable names during type inference
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. 
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.
5209[Trim imports
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
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
5229[Fix a bug in rule matching
5232 The rule matcher uses a "rough-match" pre-filter, which was being too
5233 aggressive.  The case looked like this:
5235        rule:   f True
5236        expr:   case e of x { True -> f x }
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.
5243[Fix constructor-specialisation bug
5246 The constructor-specialisation optimisation was not dealing with the case
5247 of
5248        (letrec ... in f) a1 a2
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.
5254 But in fact, float-in immediately precedes SpecConstr, so we can get
5255 these odd-looking applications.
5259[Fix precedence for records in derived Read
5262 The derived instance for Read of records wasn't quite right.
5263 Consider
5264        data T = T1 T | T2 { x::Int }
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.
5272 drvrun020 is the regression test
5276[Make rules available in RHS
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.
5282 This commit fixes it.  Some programs should go faster!
5285[Pretty printing instance for Unfolding
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
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.
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.
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.
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.
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
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.
5357[Fix workaround for a GHC 6.4 bug
5359[hslibs is dead, Jim...
5361[Synched .spec file with reality
5363[Add .spec file to source distribution
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.
5373[handle Bool arg to foreign import "wrapper"
5374Simon Marlow <simonmar@microsoft.com>**20060418143936
5375 Fixes #746
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
5383[Fix rank-validity testing
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.
5389 But the type-validity tester hadn't caught up.  This commit fixes
5390 it. The test is tc203.
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.
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
5407 'insertStableSymbol' is used for exporting closures that are affected by the GC.
5410[Allow $x, as well as $(x), at top level in TH
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.
5419 This commit fixes the omission.  Now you can say
5421        f x = x
5422        $h
5423        data T = T
5425 and the $h will run Template Haskell just as you'd expect.
5428[Fix TH erorr recovery (test is TH_recover)
5430[Comments only
5432[Recover gracefully from a Template Haskell programmers error
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.
5440[Document newtype-unwrapping for IO in FFI
5442[Cosmetics in SpecConstr
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.
5450 When we move to FC these substExprs will go away, so I'm not going to
5451 worry about this now.
5454[Improve pruning of case alternatives to account for GADTs
5457 Consider
5459   data T a where
5460     T1 :: T Int
5461     T2 :: T Bool
5462     T3 :: T Char
5464   f :: T Bool -> Int
5465   f x = case x of
5466          DEFAULT -> ...
5467          T2 -> 3
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.
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
5477 The proximate cause was a program written by Manuel using PArrays
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.
5489[Omit lndir on Windows, as it used to be
5491[remove a trace
5492Simon Marlow <simonmar@microsoft.com>**20060411131531]
5493[Allow IO to be wrapped in a newtype in foreign import/export
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:
5500        newtype MyIO a = MIO (IO a)
5502        foreign import foo :: Int -> MyIO Int
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 ()))
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.
5513[Improve newtype deriving
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.
5523 Actually GHC already *did* implement this, but the eta-ok
5524 check in TcDeriv missed a case, so there was a lurking bug.
5526 This patches fixes the documentation too.  drvrun019 tests.
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: