Ticket #934: Remake1.dpatch

File Remake1.dpatch, 120.4 KB (added by briansmith, 8 years ago)
Line 
1
2New patches:
3
4[Remake1
5brianlsmith@gmail.com**20061010191323] {
6hunk ./compiler/iface/MkIface.lhs 782
7+     -- BLS: we should do this all the time
8hunk ./compiler/iface/MkIface.lhs 784
9-    if (ghc_mode == Interactive || ghc_mode == JustTypecheck)
10+    if (ghc_mode == Interactive || ghc_mode == JustTypecheck || ghc_mode == BatchCompile)
11hunk ./compiler/main/DriverMkDepend.hs 72
12-       ; debugTraceMsg dflags 2 (text "Module dependencies" $$ ppr sorted)
13+       ; debugTraceMsg dflags 0 (text "Module dependencies" $$ ppr sorted)
14hunk ./compiler/main/GHC.hs 572
15-               | BatchCompile <- ghci_mode = ([],[])
16-               | otherwise = checkStability hpt1 mg2_with_srcimps all_home_mods
17+               = checkStability hpt1 mg2_with_srcimps all_home_mods
18hunk ./compiler/main/GHC.hs 582
19-       debugTraceMsg dflags 2 (text "Stable obj:" <+> ppr stable_obj $$
20+       debugTraceMsg dflags 0 (text "Stable obj:" <+> ppr stable_obj $$
21hunk ./compiler/main/GHC.hs 1097
22-                  _ | Just obj_date <- mb_obj_date, obj_date >= hs_date -> do
23+                   _ | is_stable_obj, isJust old_hmi ->
24+                          return old_hmi
25+                       -- object is stable, and we have an entry in the
26+                       -- old HPT: nothing to do
27+
28+                     | is_stable_obj, isNothing old_hmi -> do
29+                          linkable <-
30+                               findObjectLinkable this_mod obj_fn
31+                                       (expectJust "upseep1" mb_obj_date)
32+                          compile_it (Just linkable)
33+                       -- object is stable, but we need to load the interface
34+                       -- off disk to make a HMI.
35+
36+                   _ | Just obj_date <- mb_obj_date, obj_date >= hs_date -> do
37+                           debugTraceMsg (hsc_dflags hsc_env) 0 (ppr summary)
38hunk ./compiler/main/GHC.hs 1118
39-
40-           interactive ->
41+                 where
42+                   is_stable_obj = this_mod_name `elem` stable_obj
43+                   is_stable_bco = this_mod_name `elem` stable_bco
44+                   old_hmi = lookupUFM old_hpt this_mod_name
45+           Interactive ->
46}
47
48Context:
49
50[fix broken <link> element, preventing the User's Guide from building
51Simon Marlow <simonmar@microsoft.com>**20061010084833]
52[Set version number to 6.6
53Ian Lynagh <igloo@earth.li>**20061009140437]
54[Update library version numbers in release notes
55Ian Lynagh <igloo@earth.li>**20061009120243]
56[remove unused origPkgIdMap field from PackageState
57Simon Marlow <simonmar@microsoft.com>**20061006105148]
58[Fix _module_registered bug for sparc linux.
59Simon Marlow <simonmar@microsoft.com>**20061006104534
60 Patch by Ferris McCormick <fmccor@gentoo.org>
61 This patch has been tested with GHC-6.4.2 where it fixes a
62 huge number of testsuite failures (down from 406 to 17)
63]
64[Cache the package database the first time it is read
65Simon Marlow <simonmar@microsoft.com>**20061006104221
66 This was a slight oversight on my part, I intended to store the
67 pristine database in the pkgDatabase of DynFlags, but managed to
68 forget to do it.
69]
70[Remove casts from lvalues to allow compilation under GCC 4.0
71brianlsmith@gmail.com**20060929185931]
72[Improve the correlation betweens documented and existent options
73Ian Lynagh <igloo@earth.li>**20061003220354]
74[Document -dfaststring-stats
75Ian Lynagh <igloo@earth.li>**20061003154147]
76[Rearrange docs to have all the -ddump-* options together
77Ian Lynagh <igloo@earth.li>**20061003153422]
78[Remove unused option -femit-extern-decls
79Ian Lynagh <igloo@earth.li>**20061003145854]
80[Documentation updates
81Ian Lynagh <igloo@earth.li>**20061003142658]
82[Fix typo
83Ian Lynagh <igloo@earth.li>**20061003121926]
84[MERGE: Improve unification error messages (again) (push to 6.6 branch)
85Ian Lynagh <igloo@earth.li>**20061001011202]
86[Latin-1-to-UTF8 pre-processor example for docs from Christian Maeder
87Ian Lynagh <igloo@earth.li>**20061001010700]
88[Amplify scoped tyvar changes
89simonpj@microsoft.com**20060929165038]
90[Update release notes
91simonpj@microsoft.com**20060929122855]
92[rejig library include/ files
93sof@galois.com**20060929225751]
94[add :edit to the release notes, and improve the docs a bit
95Simon Marlow <simonmar@microsoft.com>**20060929112108]
96[:edit runs notepad by default on Windows
97Simon Marlow <simonmar@microsoft.com>**20060929102739]
98[unbreak :edit patch on Windows
99Simon Marlow <simonmar@microsoft.com>**20060928155951]
100[Fix #906, and do #914 while I'm in here (it wasn't too hard)
101Simon Marlow <simonmar@microsoft.com>**20060928151705]
102[Add basic :edit support
103Simon Marlow <simonmar@microsoft.com>**20060928135156
104 Without jumping to line numbers or %-expansion, we could add that later.
105]
106[tiny fix in porting docs I just spotted
107Simon Marlow <simonmar@microsoft.com>**20060928105611]
108[only make stdin/stdout unbuffered in GHCi, not runghc or ghc -e.
109Simon Marlow <simonmar@microsoft.com>**20060928105403]
110[testsuite *is* boring
111Simon Marlow <simonmar@microsoft.com>**20060928105342]
112[Fix mulIntMayOflo on 64-bit arches; fixes trac #867
113Ian Lynagh <igloo@earth.li>**20060928004806
114 We were assuming we could multiply 2 32-bit numbers without overflowing
115 a 64-bit number, but we can't as the top bit is the sign bit.
116]
117[Handle clock_gettime failing
118Ian Lynagh <igloo@earth.li>**20060927234630]
119[fix typo in comment
120Andres Loeh <mail@andres-loeh.de>**20060914235648]
121[remove non-boring directories
122Norman Ramsey <nr@eecs.harvard.edu>**20060915234902]
123[Modify toArgs to parse quotes/escapes like /bin/sh
124rjmccall@gmail.com**20060917003641
125 Addresses ticket #197, which asks for escape sequences to be supported directly (i.e.
126 not only in dquoted strings) on :load commands in GHCI.  Fix modifies the toArgs
127 function to parse its input like /bin/sh does, i.e. recognizing escapes anywhere
128 and treating quoted strings as atomic chunks.  Thus:
129   :load a\ b c\"d e" "f
130 would parse with three arguments, namely 'a b', 'c"d', and 'e f'.
131 
132 toArgs is used to parse arguments for both :load and :main, but doesn't appear to
133 be used elsewhere.  I see no harm in modifying both to be consistent -- in fact,
134 the functionality is probably more useful for :main than for :load.
135]
136[Rename -no-recomp to -fforce-recomp, and document it
137Simon Marlow <simonmar@microsoft.com>**20060927132707]
138[Make printing of binding results optional in GHCi, and document it
139Simon Marlow <simonmar@microsoft.com>**20060927132550
140 You can say :set -fno-print-bind-result in GHCi to disable this behaviour.
141 Addresses #887
142]
143[Various documentation improvements suggested by Bulat Ziganshin
144Ian Lynagh <igloo@earth.li>**20060925231855]
145[Fix comment/code inconsistency spotted by Bulat Ziganshin
146Ian Lynagh <igloo@earth.li>**20060925195925
147 I'm not sure if this is the example that was intended, but it's at least
148 now consistent.
149]
150[Document -F in the flag reference
151Ian Lynagh <igloo@earth.li>**20060925134816]
152[Remove duplicate call to getDOpts
153simonpj@microsoft.com**20060922190350]
154[64bit fixes for the symbol lookup table
155sven.panne@aedion.de**20060923162408]
156[Fix Linker import when BREAKPOINT is off
157Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20060921210029]
158[Use --export-dynamic to ensure ghci works on newer openbsds
159Don Stewart <dons@cse.unsw.edu.au>**20060921010155
160 
161 Changes to the RTLD_DEFAULT semantics broke the trick we used to ensure
162 libc symbols were available to the ghci linker, in OpenBSD 4.0. We can
163 fix this by linking the ghc binary itself with --export-dynamic on this
164 system, removing the need for any magic Linker.c games.
165 
166 GHCi now works on OpenBSD 4.0
167 
168 Contributed by Eric Mertens <emertens at gmail.com>
169 
170]
171[Currently we don't build cabal-setup
172sven.panne@aedion.de**20060919081759]
173[Packages cleanup, and allow new packages to be loaded with :set again
174Simon Marlow <simonmar@microsoft.com>**20060919012448
175 
176 This cleans up the package subsystem a little.  There are some
177 changes to the GHC API as a result.
178 
179   - GHC.init and GHC.initFromArgs are no longer necessary.
180 
181   - GHC.newSession takes the root of the GHC tree as an argument
182     (previously passed to GHC.init).
183 
184   - You *must* do GHC.setSessionDynFlags after GHC.newSession,
185     this is what loads the package database.
186 
187   - Several global vars removed from SysTools
188 
189   - The :set command in GHCi can now cause new packages to be loaded,
190     or can hide/ignore existing packages.
191]
192[one more boring file
193Simon Marlow <simonmar@microsoft.com>**20060919011849]
194[fix one boring file
195Simon Marlow <simonmar@microsoft.com>**20060919011823]
196[unused imports
197Simon Marlow <simonmar@microsoft.com>**20060919011746]
198[add boring files from a build tree
199Simon Marlow <simonmar@microsoft.com>**20060919011722]
200[remove old comment
201Simon Marlow <simonmar@microsoft.com>**20060919010333]
202[unused import
203Simon Marlow <simonmar@microsoft.com>**20060919010303]
204[some updates
205Simon Marlow <simonmar@microsoft.com>**20060918232924]
206[use ghc-pkg --force-files, and update command-line syntax
207Simon Marlow <simonmar@microsoft.com>**20060918232903]
208[add --force-files, like --force but doesn't allow missing dependencies
209Simon Marlow <simonmar@microsoft.com>**20060918232834]
210[emit an error if the user ran autoconf instead of autoreconf
211Simon Marlow <simonmar@microsoft.com>**20060916084205]
212[Sanity check that all the core packages are present
213Simon Marlow <simonmar@microsoft.com>**20060916070529
214 To catch the case of not running darcs-all get.
215]
216[reformat import
217Simon Marlow <simonmar@microsoft.com>**20060913103512]
218[minor reformatting
219Simon Marlow <simonmar@microsoft.com>**20060913103427]
220[compiler/ isn't boring
221Simon Marlow <simonmar@microsoft.com>**20060913021300]
222[Added parsing rule for BangPattern in case expr
223Markus Lauer <markus.lauer@acm.org>**20060918161850]
224[Fix a bug in subsumption, and tweak error messages
225simonpj@microsoft.com**20060918005223
226 
227 This commit does two largely-unrelated things, but they hit the same code.
228 
229 First, I tweaked the error messages a bit, to give better errors
230 for impredicative polymorphism.  This added the mb_fun argument to
231 tc_sub.
232 
233 Second, I fixed a long-standing bug in tc_sub.  In the isBoxyTyVar case
234 of tc_sub (rule F2) I was not recursing to tc_sub as the rule suggests,
235 but rather calling u_tys.  This is plain wrong, because the first
236 arugment might have more foralls.   
237 
238 The solution is to recurse to tc_sub, but that in turn requires a parameter,
239 exp_ib, which says when we are inside a box.
240 
241 Test is tc210.
242 
243]
244[Comments
245simonpj@microsoft.com**20060918005142]
246[Ensure that only zonked poly_ids are passed to tcSpecPrag
247simonpj@microsoft.com**20060918004805
248 
249 This is a long-standing bug really (Trac #900).  The poly_id passed
250 to tcSpecPrag should be zonked, else it calls tcSubExp with a non-zonked
251 type; but that contradicts the latter's invariant.
252 
253 I ended up doing a bit of refactoring too.  The extra lines are
254 comments I think; the code line count is reduced.
255 
256 Test is tc212.hs
257 
258]
259[Comments only
260simonpj@microsoft.com**20060918004109]
261[Add a missing renamer dump (related to Template Haskell)
262simonpj@microsoft.com**20060917171707]
263[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.
264bringert@cs.chalmers.se**20060915233315]
265[Fixed error in user's manual, gadt section, part about deriving. Data constructor type was Maybe, should be Maybe1.
266bringert@cs.chalmers.se**20060915230517]
267[remove generated files in a 'finally' manner
268sof@galois.com**20060909144432]
269[Replace "&" with "and" as this also gets pulled into the docbook docs
270Ian Lynagh <igloo@earth.li>**20060912125617]
271[Another s/autrijus/audreyt/ in comments.
272audreyt@audreyt.org**20060912121323]
273[Take away XXXs in GADT records related code that are no longer TODOs.
274audreyt@audreyt.org**20060912120942]
275[Add postfix ops to the release notes
276simonpj@microsoft.com**20060912081104]
277[Document postfix operators
278simonpj@microsoft.com**20060911162843]
279[Fix ~2000 second profiling time wrapping bug
280Ian Lynagh <igloo@earth.li>**20060911223210]
281[move the "meat" into the wiki, this file just contains pointers now
282Simon Marlow <simonmar@microsoft.com>**20060911135037]
283[Simplify desugaring of left sections
284simonpj@microsoft.com**20060911083510
285 
286        MERGE TO 6.6 branch!
287 
288 Some while ago I made the type checker a tiny bit more lenient about
289 left sections, so that
290        (x !)
291 would typecheck iff
292        ((!) x)
293 typechecks. 
294 
295 Strictly, Haskell 98 requires that the section typechecks iff
296        (\y. (!) x y)
297 typechecks, and I should really have made the relaxation dependent on a
298 flag, but I didn't.
299 
300 Anyway, this commit fixes the *desugarer* so that it correctly desugars
301 the programs that the typechecker passes.
302 
303 
304]
305[Add comment
306simonpj@microsoft.com**20060911083440]
307[adapt stylesheet to example-contents class used by xsltproc
308Ross Paterson <ross@soi.city.ac.uk>**20060910143941]
309[Fix warnings traceBegin/traceEnd implicitly declared
310Ian Lynagh <igloo@earth.li>**20060910200611]
311[Fix linking to expf on Windows
312Ian Lynagh <igloo@earth.li>**20060910141506]
313[8 byte align data. Fixes SIBGUSs on HPPA/Linux.
314Ian Lynagh <igloo@earth.li>**20060909102445]
315[We now need alex >= 2.0.1
316Ian Lynagh <igloo@earth.li>**20060908191706]
317[Add source code links to Haddock docs
318Simon Marlow <simonmar@microsoft.com>**20060908112725
319 
320 Right now we can only manage to add a source code link for the module,
321 but that's better than nothing.
322 
323 I had to put the list of core packages in a Makefile variable,
324 $(CorePackages), so we'll have to be careful to keep this up to date.
325 (I could have slurped it out of libraries/core-packages with $(shell),
326 but that's ugly and really slow on Windows).
327 
328 There are a couple of new tweakables: CorePackageSourceURL and
329 ExtraPackageSourceURL in config.mk.in, set these to the appropriate
330 patterns for generating source links.
331 
332 (when we merge this patch onto the HEAD we'll have to tweak these
333 settings).
334 
335 Unfortunately it still doesn't work for all the modules, because
336 modules compiled without -cpp don't get any #line directives.  More
337 hackery required...
338]
339[Catch errors in pattern matching for unboxed tuples
340simonpj@microsoft.com**20060908095217
341 
342 When fiddling with pattern-matching for unboxed tuples, I'd messed up
343 the slightly-tricky tests for pattern matching on unboxed tuples, notably
344        case (# foo, bar #) of r -> ...r...
345 
346 The fix is in TcPat, and test are tcfail115, tcfail120, and tc209
347 
348]
349[Fixed typo in users guide section about lexically scoped type variables.
350bringert@cs.chalmers.se**20060907214626]
351[Typo, spotted by Bulat Ziganshin
352Ian Lynagh <igloo@earth.li>**20060908014947]
353[Release note tweaks suggested by Bulat Ziganshin
354Ian Lynagh <igloo@earth.li>**20060908014050]
355[Doc fix: generic classes are no longer broken
356Ian Lynagh <igloo@earth.li>**20060907205426
357 Spotted by Bulat Ziganshin.
358]
359[If we get an unknown or unimplemented opcode, say what it is
360Ian Lynagh <igloo@earth.li>**20060907171038]
361[remove __HUGS__ #if's (Hugs uses the standalone version)
362Ross Paterson <ross@soi.city.ac.uk>**20060907152930]
363[Fix the handling of names in declaration brackets
364simonpj@microsoft.com**20060907141845
365 
366 The handling of top-level names in declaration brackets is a bit tricky.
367 This commit fixes Trac #977;  test is TH_spliceD2.
368 
369 The changes are commented in RnExpr.rnBracket and RdrName.hideSomeUnquals
370 
371 
372]
373[Remove the -optP-P from .raw-hs generation
374Simon Marlow <simonmar@microsoft.com>**20060907151855
375 We need the #line directives left in, so that Haddock can figure out
376 what the name of the original source file was called, which is
377 necessary for generating source links.  You probably now need an
378 updated Haddock to generate HTML from the libraries, but a release
379 will be forthcoming shortly.
380 
381]
382[urk, the dependencies added in the last commit don't really work properly
383Simon Marlow <simonmar@microsoft.com>**20060907113702
384 first, I got the dependencies wrong (should be the .o file, not the
385 .hs), and secondly GHC's recompilation checker refuses to recompile
386 these files anyway.  I haven't done anything about the second problem
387 yet, except to comment it.
388 
389]
390[Add dependencies on .h files #included into Haskell source
391Simon Marlow <simonmar@microsoft.com>**20060907094751
392 Our .depend machinery doesn't automatically generate these, so we have
393 to add them manually.  (this fixes one instance of missing
394 dependencies in the GHC build tree, there are lots more...).
395]
396[Remove CONSTR_CHARLIKE and CONSTR_INTLIKE closure types
397Simon Marlow <simonmar@microsoft.com>**20060907093005
398 These closure types aren't used/needed, as far as I can tell.  The
399 commoning up of Chars/Ints happens by comparing info pointers, and
400 the info table for a dynamic C#/I# is CONSTR_0_1.  The RTS seemed
401 a little confused about whether CONSTR_CHARLIKE/CONSTR_INTLIKE were
402 supposed to be static or dynamic closures, too.
403]
404[Documentation for impredicative polymorphism
405simonpj@microsoft.com**20060907111540]
406[Comments only
407simonpj@microsoft.com**20060907105705]
408[Remove result type signatures from documentation
409simonpj@microsoft.com**20060907104301]
410[Fix bug in error message
411simonpj@microsoft.com**20060907103052]
412[Result type signatures are no longer supported (partial)
413simonpj@microsoft.com**20060907102718
414 
415 I had failed to remove the bit where result type signatures bind
416 lexical type variables.  And now we are planning to remove them entirely.
417 
418 This commit therefore does a partial removal (to avoid destablising 6.6).
419 It also arranges that
420        f :: sig = rhs
421 means a *pattern* binding (not a function binding with no arguments
422 and a result signature), which makes sense.
423 
424]
425[Remove trailing CRs with sed rather than relying on diff in nofib
426Ian Lynagh <igloo@earth.li>**20060907112027
427 Some diffs don't understand --strip-trailing-cr.
428]
429[document -V in the +RTS --help outpout
430Simon Marlow <simonmar@microsoft.com>**20060907084445]
431[Pattern-match warning police
432simonpj@microsoft.com**20060906220417]
433[Improve error reporting for SigTvs, and add comments
434simonpj@microsoft.com**20060906220309]
435[Check that top-level binders are unqualified names
436simonpj@microsoft.com**20060906220101
437 
438 Not having this check led to strange error messages.
439 See test rnfail046.
440 
441]
442[Documentation for lexically-scoped type variables
443simonpj@microsoft.com**20060906164103
444 
445 GHC's design for lexically scoped type variables has changed.
446 Here, belatedly, is the documentation.
447 
448]
449[Make record selection look cheap
450simonpj@microsoft.com**20060906115242
451 
452 exprIsCheap was already making record selection look cheap, esp for
453 dictionary selection; e.g.
454    (==) dEq
455 
456 The idea is to allow those record selections to migrate inside a
457 lambda, because on the whole it's more expensive to share than
458 repeat them.
459 
460 But sometimes dictionary selection is nested; e.g.
461    (==) ($p1Num dNum)
462 
463 This turned out to make a (fragile) rewrite rule fire a little
464 more robustly, but it seems like a good idea in any case.
465 
466 This patch makes nested record selections also look cheap.
467 
468]
469[Now in the wiki
470Simon Marlow <simonmar@microsoft.com>**20060906104022]
471[-threaded and -prof do not currently work together
472Simon Marlow <simonmar@microsoft.com>**20060906093158]
473[Don't fail on missing happy/alex if we don't need them
474Ian Lynagh <igloo@earth.li>**20060906195415]
475[Fix the Windows "VirtualAlloc MEM_COMMIT failed" bug
476Ian Lynagh <igloo@earth.li>**20060906112750
477 We had
478     base=01100000 size=1048576 size_delta=0 it->size=2097152
479     it->base=00F00000 base-it->base=00200000
480 in commitBlocks.
481 Esa Ilari Vuokko identified this inequality test as the cause.
482]
483[Tell the 6.6 branch where to find extralibs
484Ian Lynagh <igloo@earth.li>**20060906124640]
485[Correct the Cabal version number and remove features.
486Duncan Coutts <duncan.coutts@worc.ox.ac.uk>**20060905232047
487 We're not going to include cabal-setup and cabal-install in this release.
488]
489[Strip trailing CRs when comparing output for nofib. Fixes #797.
490Ian Lynagh <igloo@earth.li>**20060905184910]
491[Fix dependency analysis (notably bindInstsOfLocalFuns) in TcBinds
492simonpj@microsoft.com**20060905105143
493 
494 GHC 6.5 does enhanced dependency analysis for recursive bindings, to
495 maximise polymorphism based on type signatures.  (See Mark Jones's
496 THIH paper.) 
497 
498 I didn't do the bindInstsOfLocalFuns part correctly though, and jhc
499 showed up the bug.  (It only matters when you have a recursive group
500 of two or more functions with a type signature, not at top level, which
501 is why it hasn't shown up till now.)
502 
503 Test is tc207.hs
504 
505 
506]
507[Add note about overlapping instances
508simonpj@microsoft.com**20060905092201]
509[Record that TH doesn't support pattern types signature
510simonpj@microsoft.com**20060905091834]
511[new RTS flag: -V to modify the resolution of the RTS timer
512Ian Lynagh <igloo@earth.li>**20060905141545
513 Fixed version of an old patch by Simon Marlow. His description read:
514  Also, now an arbitrarily short context switch interval may now be
515  specified, as we increase the RTS ticker's resolution to match the
516  requested context switch interval.  This also applies to +RTS -i (heap
517  profiling) and +RTS -I (the idle GC timer).  +RTS -V is actually only
518  required for increasing the resolution of the profile timer.
519]
520[Refactoring for derived Read
521simonpj@microsoft.com**20060904132212
522 
523 There are no functional changes in this commit.  But the code for
524 derived Read is refactored to make it tidier --- and also to make
525 it very easy if we want derived Read to parse the prefix form of
526 infix ocnstructors. 
527 
528 For example,
529        data T = Int `T1` Int
530 According to the H98 report, the derived Read instance will parse
531 infix uses of T1, but not prefix uses (T1 4 3).  It's arguable that it
532 should parse both -- and easy to implement, but it would cause a little bit
533 of code bloat.
534 
535 Similarly records.
536 
537 Anyway this commit doesn't implement the change; just makes it easy
538 to do so.
539 
540]
541[Improve pretty-printing for HsExpr
542simonpj@microsoft.com**20060904131334]
543[Fix typos.
544Ian Lynagh <igloo@earth.li>**20060904190958]
545[Enable bang-patterns only when the flag says so (had missed a case before)
546simonpj@microsoft.com**20060904131412]
547[Remove linear implicit parameters, and document in release notes
548simonpj@microsoft.com**20060904125105]
549[Release notes should mention better newtype-deriving
550simonpj@microsoft.com**20060904124458]
551[Documentation for bang patterns, and other improvements
552simonpj@microsoft.com**20060904123438]
553[Add a hint on tab completion
554Ian Lynagh <igloo@earth.li>**20060903224823]
555[Add :main docs to ghci commands page
556Ian Lynagh <igloo@earth.li>**20060903223107]
557[Ambiguities are now allowed in ghci command names
558Ian Lynagh <igloo@earth.li>**20060903222115]
559[More output updates
560Ian Lynagh <igloo@earth.li>**20060903221933]
561[Add docs for :main
562Ian Lynagh <igloo@earth.li>**20060903220130]
563[More doc output fixes
564Ian Lynagh <igloo@earth.li>**20060903215748]
565[Update ghci output in docs
566Ian Lynagh <igloo@earth.li>**20060903214128]
567[Fix typo
568Ian Lynagh <igloo@earth.li>**20060903212651]
569[Update ghci output in docs
570Ian Lynagh <igloo@earth.li>**20060903210805]
571[Remove a tab causing ghci's :? alignment to go wrong
572Ian Lynagh <igloo@earth.li>**20060903210349]
573[Change default repo root for the 6.6 branch
574Ian Lynagh <igloo@earth.li>**20060902174936]
575[Don't lose linked list tail
576Esa Ilari Vuokko <ei@vuokko.info>**20060831223315]
577[Fix Windows MBlock alloctor bookkeeping bug
578Esa Ilari Vuokko <ei@vuokko.info>**20060830185540]
579[-fglasgow-exts no longer implies -fbang-patterns
580simonpj@microsoft.com**20060901125714]
581[Fix error in release notes, spotted by Esa Ilari Vuokko
582Ian Lynagh <igloo@earth.li>**20060901125841]
583[Remove changes in packages we don't build
584Ian Lynagh <igloo@earth.li>**20060901125436]
585[Don't enable SMP if we are unregisterised
586Ian Lynagh <igloo@earth.li>**20060829123228]
587[Add a pointer to the fundeps paper
588simonpj@microsoft.com**20060831135511]
589[free the task *after* calling closeCond and closeMutex
590Simon Marlow <simonmar@microsoft.com>**20060831103648]
591[add missing ghc_ge_605
592Simon Marlow <simonmar@microsoft.com>**20060831101813]
593[don't closeMutex() the Capability lock
594Simon Marlow <simonmar@microsoft.com>**20060831085728
595 There might be threads in foreign calls that will attempt to return
596 via resumeThread() and grab this lock, so we can't safely destroy it.
597 
598 Fixes one cause of
599 
600    internal error: ASSERTION FAILED: file Capability.c, line 90
601 
602 although I haven't repeated that assertion failure in the wild, only
603 with a specially crafted test case, so I can't be sure I really got
604 it.
605]
606[fix Unix build
607Simon Marlow <simonmar@microsoft.com>**20060830141529]
608[add sysErrorBelch() for reporting system call errors
609Simon Marlow <simonmar@microsoft.com>**20060830140252]
610[call ShutdownIOManager() before closing handles
611Simon Marlow <simonmar@microsoft.com>**20060830123131
612 To avoid IO requests completing only to discover that the
613 completed_table_sema has been CloseHandle()'d.  This all looks a bit
614 wrong, though: we shouldn't really be waiting for these requests to
615 complete, they might take forever.
616]
617[Windows: make some soft failures into fatal errors
618Simon Marlow <simonmar@microsoft.com>**20060830091859
619 Some of the memory allocation calls were being checked for error, but
620 the RTS was printing a message and continuing.  These error cases
621 lead to crashes later, so better to just fail immediately.
622]
623[MAYBE_GC: initialise HpAlloc
624Simon Marlow <simonmar@microsoft.com>**20060830091529
625 HpAlloc was not being set when returning to the scheduler via MAYBE_GC(),
626 which at the least was just wrong (the scheduler might allocate a large
627 block more than once), and at worst could lead to crashes if HpAlloc contains
628 garbage.
629 
630 Fixes at least one threaded2 test on Windows.
631]
632[FILL_SLOP: don't fill slop for BLACKHOLE/CAF_BLACKHOLE
633Simon Marlow <simonmar@microsoft.com>**20060830083311
634 This affects -debug only, avoids crash with test conc012.
635]
636[oops, got the sense of the error case wrong
637Simon Marlow <simonmar@microsoft.com>**20060829151751]
638[fix some rerrors in the worker counting
639Simon Marlow <simonmar@microsoft.com>**20060829135150]
640[add missing case for BlockedOnDoProc
641Simon Marlow <simonmar@microsoft.com>**20060829113345]
642[omit HGL on Windows
643Simon Marlow <simonmar@microsoft.com>**20060829104921]
644[Don't trust "ln -sf" to do the right thing (it doesn't on Solaris)
645Simon Marlow <simonmar@microsoft.com>**20060829093735
646 Patch from: Roman Leshchinskiy
647]
648[don't include HaXml, Japi and monads in a GHC checkout
649Simon Marlow <simonmar@microsoft.com>**20060829085946
650 They aren't built as part of a GHC build anyway, it doesn't make much
651 sense to include them in checkouts or source tarballs.
652]
653[don't include .depend (attempt to fix Windows stage2 build failure)
654Simon Marlow <simonmar@microsoft.com>**20060829083842]
655[Add mipsel case to configure.ac
656Ian Lynagh <igloo@earth.li>**20060825193603]
657[incremented versions of arrows and X11
658Ross Paterson <ross@soi.city.ac.uk>**20060825162415]
659[omit Control.Sequential.STM
660Ross Paterson <ross@soi.city.ac.uk>**20060825161645
661 
662 It's an internal module used by non-GHC implementations only.
663]
664[various minor tweaks, and rearrange to put "important" changes near the top
665Simon Marlow <simonmar@microsoft.com>**20060825154955]
666[mention -fno-mono-pat-binds, since this is a diversion from Haskell 98
667Simon Marlow <simonmar@microsoft.com>**20060825152613]
668[Document SMP support
669Simon Marlow <simonmar@microsoft.com>**20060825151236]
670[Load the target of a dynamic foreign call into a temporary
671Simon Marlow <simonmar@microsoft.com>**20060825140906
672 Fixes ffi011(opt) on x86_64.  I don't know why this has only just
673 appeared today, it's apparently been broken for some time.
674]
675[Sparc supports SMP too
676Simon Marlow <simonmar@microsoft.com>**20060825133628]
677[Fix rewriting of Control.Exception.Assert; fixes 875
678Ian Lynagh <igloo@earth.li>**20060825010219]
679[Add the regex reshuffle to the release notes
680Ian Lynagh <igloo@earth.li>**20060825110520]
681[parsec is now a core library
682Ian Lynagh <igloo@earth.li>**20060825102418]
683[Add a default case to pprDynamicLinkerAsmLabel
684Roman Leshchinskiy <rl@cse.unsw.edu.au>**20060825101846
685 
686 This is mainly for the benefit of Solaris. I'll fix this properly later.
687]
688[Reserve a register for REG_Base on the Sparc
689Roman Leshchinskiy <rl@cse.unsw.edu.au>**20060825101820]
690[Add atomic SMP primitives for the Sparc
691Roman Leshchinskiy <rl@cse.unsw.edu.au>**20060825101753]
692[Make sure GCC uses the Sparc V9 instruction set
693Roman Leshchinskiy <rl@cse.unsw.edu.au>**20060825101646
694 
695 We only support Sparc V9 and better as V8 lacks an atomic CAS instruction
696 which we need for SMP. This means that we have to pass -mcpu=v9 to GCC when
697 compiling and assembling. Hardcoding the flag is hackish but seems to be
698 our best bet at the moment. It can still be overridden by the user as GCC
699 picks the best -mcpu flag regardless of the ordering.
700]
701[shutdownCapability(): don't bail out after 50 iterations
702Simon Marlow <simonmar@microsoft.com>**20060825100244
703 See comments for details.  Fixes assertion failures in stage 3 build
704 which appeared after recent closeMutex() addidion.  May fix other
705 shutdown issues.
706]
707[add dependency on regex-compat
708Simon Marlow <simonmar@microsoft.com>**20060825093226]
709[move parsec into $(GhcBootLibs); tidy up
710Simon Marlow <simonmar@microsoft.com>**20060825091013]
711[Mips registerised support
712Simon Marlow <simonmar@microsoft.com>**20060825085712
713 Contributed by: Thiemo Seufer <ths@networkno.de>
714]
715[parsec is required to be a core package, genprimopcode uses it
716Simon Marlow <simonmar@microsoft.com>**20060825084607]
717[Free Win32 Handles on shutdown
718Simon Marlow <simonmar@microsoft.com>**20060825084435
719 patch from #878
720]
721[Fix unregisterised builds, and building on non-x86/amd64/powerpc
722Ian Lynagh <igloo@earth.li>**20060825003945]
723[Release notes for GHC 6.6
724Ian Lynagh <igloo@earth.li>**20060824211646]
725[Update for changes to packages
726Simon Marlow <simonmar@microsoft.com>**20060824153500
727 Not much has changed really: just the removal of the overlap
728 restriction, and the re-instatement of the requirement that
729 -package-name must be used when compiling a package now.
730]
731[somehow I lost the unix subdir; recover it
732Simon Marlow <simonmar@microsoft.com>**20060824152529]
733[expand the section on getting the source.
734Simon Marlow <simonmar@microsoft.com>**20060824150647]
735[config in regex-posix too
736Simon Marlow <simonmar@microsoft.com>**20060824145717]
737[make all AC_CONFIG_SUBDIRS optional
738Simon Marlow <simonmar@microsoft.com>**20060824143016]
739[Add dynCompileExpr
740Esa Ilari Vuokko <ei@vuokko.info>**20060823221828]
741[Remove duplicate documentation of -package flag
742Ian Lynagh <igloo@earth.li>**20060824121806]
743[Remove a reference to -fglobalise-toplev-names that got left behind
744Ian Lynagh <igloo@earth.li>**20060824121442]
745[Add closeMutex and use it on clean up
746Esa Ilari Vuokko <ei@vuokko.info>**20060823194604]
747[Add shared Typeable support
748Esa Ilari Vuokko <ei@vuokko.info>**20060823003041]
749[Ignore sections generated from .ident
750Esa Ilari Vuokko <ei@vuokko.info>**20060823155023]
751[update with respect to darcs-all changes
752Simon Marlow <simonmar@microsoft.com>**20060824115535]
753[divide packages into "core" and "extra" packages
754Simon Marlow <simonmar@microsoft.com>**20060824114902
755 The following packages are now "core" packages:
756 
757   base, Cabal, haskell98, readline, regex-base, regex-compat
758   regex-posix, stm, template-haskell, unix, Win32
759 
760 Core packages are those packages required to bootstrap GHC, or are
761 closely tied to GHC (stm, template-haskell).  These are the packages
762 that will be provided in a source distribution from now on.
763 
764 All other packages are classified as "extra" packages.  As far as
765 binary distributions and nightly builds go, nothing will change -
766 we'll still build and include all these packages in the distributions.
767 
768 NOTE: 'sh darcs-all get' will now get the core packages only.  To get
769 the extra packages too, use 'sh darcs-all --extra get'.
770]
771[Sparc fix: work around gcc optimising away the reserved stack chunk
772Simon Marlow <simonmar@microsoft.com>**20060824113750
773 This bug causes crashse on Sparc when calling foreign functions with
774 more than 13 arguments.
775]
776[add new regex packages
777Simon Marlow <simonmar@microsoft.com>**20060824094443]
778[Clean up coding style
779Esa Ilari Vuokko <ei@vuokko.info>**20060823075822]
780[Use stgMallc and stgFree instead of malloc/free
781Esa Ilari Vuokko <ei@vuokko.info>**20060823002902]
782[Remove wrong VirtualAlloc MEM_DECOMMITs on cleanup
783Esa Ilari Vuokko <ei@vuokko.info>**20060821180332]
784[Remove few format-warnings by adding casts
785Esa Ilari Vuokko <ei@vuokko.info>**20060813111029]
786[Remove warning: Correct includes for mingw
787Esa Ilari Vuokko <ei@vuokko.info>**20060813002216]
788[Add few more guesses where to find bits of mingw-gcc
789Esa Ilari Vuokko <ei@vuokko.info>**20060812020901]
790[in the GHCi prompt, print ModuleNames not Modules
791Simon Marlow <simonmar@microsoft.com>**20060823095258]
792[In the Compiling/Skipping message, print ModuleNames not Modules
793Simon Marlow <simonmar@microsoft.com>**20060823095225
794 These modules are always home modules, by definition, so the package
795 name is redundant.
796 
797]
798[Fix typo
799Ian Lynagh <igloo@earth.li>**20060822163300]
800[Fix typo
801Ian Lynagh <igloo@earth.li>**20060822163212]
802[FastString and StringBuffer need -funbox-strict-fields too
803Simon Marlow <simonmar@microsoft.com>**20060822143337
804 For the benefit of old GHCs that don't understand {-# UNPACK #-}
805]
806[minor fix to the clashing export error message
807Simon Marlow <simonmar@microsoft.com>**20060822112518
808 The ordering of items in the parsed export list is now correct, so we
809 have to compensate to get the right output again.
810]
811[findModule: add a fallthrough error case
812Simon Marlow <simonmar@microsoft.com>**20060822112409]
813[notes about which versions of GHC can be used to bootstrap
814Simon Marlow <simonmar@microsoft.com>**20060822093554]
815[disable .ident generation on darwin_TARGET_OS
816Simon Marlow <simonmar@microsoft.com>**20060822090349]
817[fix typo
818Simon Marlow <simonmar@microsoft.com>**20060822073731]
819[fixes to PPC version of cas(), from David Kirkman <dkirkman@gmail.com>
820Simon Marlow <simonmar@microsoft.com>**20060821153136
821 
822 From David's email:
823 The problem is that the inline assembler code was placing the result
824 of an operation in a register that is used as input later in the code.
825 At the bottom of this message I've extracted a short short code
826 fragment that you can run through gcc (on a powerpc machine) to see
827 the generated assembly output.
828 
829 The changes to fix the problem are fairly simple.  The first adds an
830 ampersand to the output list of the assembly fragment ("=r" (result)
831 --> "=&r" (result)) The ampersand just tells gcc that result can not
832 be placed in a register used for any of the input parameters (o, n, or
833 p).  Otherwise, it feels free to place output parameters in the same
834 registers used by the inputs -- but because of the flow of control
835 here we need everything in a distinct register.  This change fixes the
836 TVar program above.
837 
838 The second change adds a clobber list (the :"cc", "memory").  This
839 tells gcc that the condition code (due to the compare) and memory (due
840 to the store) might be changed during the asm execution.  The lack of
841 a clobber list did not seem to be causing any trouble, but without it
842 gcc is free to assume that no state is changed during the execution.
843]
844[Always use -funbox-strict-fields for Binary
845Simon Marlow <simonmar@microsoft.com>**20060821152111
846 For some reason this was only enabled when $(bootstrapped)=YES.  This
847 would be one reason why the stage1 compiler is slow.  I guess we'll
848 find out if anything goes wrong.
849]
850[disable automagic building of GHCi in stage1
851Simon Marlow <simonmar@microsoft.com>**20060821151957]
852[remove ancient file with incorrect information
853Simon Marlow <simonmar@microsoft.com>**20060821141946]
854[new option -a (append) for hasktags
855Martin Grabmueller <magr@cs.tu-berlin.de>**20060816091427]
856[ugly hack to cause ghc_boot_platform.h to be built before primops.txt
857Simon Marlow <simonmar@microsoft.com>**20060821120630]
858[add libraries/cgi and libraries/xhtml
859Simon Marlow <simonmar@microsoft.com>**20060821102908]
860[(temp) #814 - More flexible memory allocation in Windows
861Esa Ilari Vuokko <ei@vuokko.info>**20060820150720]
862[fix export/import list parsing (allow (,)), and remove unnecessary reverses
863Simon Marlow <simonmar@microsoft.com>**20060821102633]
864[comply with Haskell 98 by not allowing extra commas in import/export lists
865Simon Marlow <simonmar@microsoft.com>**20060821095912]
866[Missing stage1's in hc-build
867Ian Lynagh <igloo@earth.li>**20060821092226
868 Add mising stage1/ directories to object files touched by hc-build, and
869 give stage=1 as an argument to make install.
870]
871[remove spurious commas in imports
872Ross Paterson <ross@soi.city.ac.uk>**20060819173423]
873[whitespace cleanup only
874Ross Paterson <ross@soi.city.ac.uk>**20060818224014]
875[remove gcj libs from bin dist
876sof@galois.com**20060818214155]
877[I don't thing we want to add a call-context here; it just clutters the output
878simonpj@microsoft.com**20060818160729]
879[Avoid duplicate "In type ..." in error messages
880simonpj@microsoft.com**20060818160611]
881[Better pretty-printing for TvSubst
882simonpj@microsoft.com**20060818160551]
883[Fall over more gracefully when there's a Template Haskell error
884simonpj@microsoft.com**20060818110702
885 
886 For a long time, Template Haskell has fallen over in a very un-graceful
887 way (i.e. panic) even when it encounters a programmer error.  In particular,
888 when DsMeta converts HsSyn to TH syntax, it may find Haskell code that
889 TH does not understand. This should be reported as a normal programmer
890 error, not with a compiler panic!
891 
892 Originally the desugarer was supposed to never generate error
893 messages, but this TH desugaring thing does make it do so.  And in
894 fact, for other reasons, the desugarer now uses the TcRnIf monad, the
895 common monad used by the renamer, typechecker, interface checker, and
896 desugarer. 
897 
898 This patch completes the job, by
899  - allowing the desugarer to generate errors
900  - re-plumbing the error handling to take account of this
901  - making DsMeta use the new facilities to report error gracefully
902 
903 Quite a few lines of code are touched, but nothing deep is going on.
904 
905 Fixes Trac# 760.
906 
907]
908[Fix typo (fst --> head) in docs on implicit parameters
909simonpj@microsoft.com**20060818075937]
910[One last hs-boot update
911simonpj@microsoft.com**20060817134216]
912[Missing import for stage 2
913simonpj@microsoft.com**20060817133247]
914[One more hs-boot file
915simonpj@microsoft.com**20060817133220]
916[Refactoring for valid rule checking
917simonpj@microsoft.com**20060817130141]
918[Do not CSE in INLINE and NOINLINE things
919simonpj@microsoft.com**20060817130005
920 
921 See extensive comments with Note [INLINE and NOINLINE] in this file.
922 
923]
924[Update lhs-boot files
925simonpj@microsoft.com**20060817132003
926 
927 A consequence of my recent meddling with hs-boot files is that GHC is
928 more picky about the correpondence between the hs-boot file and the hs file.
929 In particular, you must use the same type synonyms.
930 
931 This patche fixes up GHC's own hs-boot files to match the restriction.
932 
933]
934[Add ad-hoc typing checks for tagToEnum#
935simonpj@microsoft.com**20060816203156
936 
937 The problem with tagToEnum# is that it is not overloaded (in the
938 Haskell sense) but you are only supposed to apply it to a TyCon
939 that is an enumeration (isEnumerationTyCon).
940 
941 The Real Way to do this is to have some special kind of type constraint
942 for the purpose, but that is wild overkill. So this patch adds a small
943 rather ad-hoc check to TcExpr.instFun.  Crude, simple, but it works fine.
944 
945 Fixes Trac #786
946 Test is tcfail164
947 
948]
949[Get dead-ness right in knownCon
950simonpj@microsoft.com**20060816164216]
951[Tuning for argToPat
952simonpj@microsoft.com**20060816164103
953 
954 argToPat is a crucial function for SpecConstr, because it decides
955 what patterns are worth specialising.  I was being much too gung-ho about
956 constants.  This patch makes it much better.
957 
958]
959[Re-factor mkAtomicArgs and completeNonRecX
960simonpj@microsoft.com**20060816163645
961 
962 This refactoring ensures that when mkAtomicArgs adds new bindings,
963 it does so using completeNonRecX, which adds unfoldings etc.  More
964 modular, and saves passes too.
965 
966 (This was important when getting rules to work right.  We want tob
967 fire a rule as soon as possible, taking into account all inlinings,
968 else a less-good rule applies.  That's what I found when doing
969 stream fusion anyway.)
970 
971 Regardless, this is an improvement.
972 
973]
974[Another try at the continuation-swapping stuff
975simonpj@microsoft.com**20060816105042
976 
977 I have spent altogether too long on my attempt to avoid case-of-case
978 in situations where it is a Bad Thing.  All the action is in the
979 case for mkDupableAlt that handles cases with a single alternative.
980 
981 I've added rather extensive comments, and it finally seems to be working
982 more or less right.  If you compile (say) GHC/Real.o you'll see quite a
983 few case-of-cases remain (which didn't happen before), and they mostly look
984 pretty sensible to me.
985 
986]
987[Don't build unnecessary lets in knownCon
988simonpj@microsoft.com**20060816104831
989 
990 Faced with
991        case x of y { (a,b) -> rhs }
992 
993 where x is bound to (c,d), we were generating
994       
995        let y = (c,d) in rhs
996 
997 and thenn hoping to get rid of the y binding by CSE or some such.  It's
998 better simply not to build it in the first place, by generating
999 
1000        let y = x in rhs
1001 
1002 This patch does the job.
1003 
1004]
1005[Comments only
1006simonpj@microsoft.com**20060816104817]
1007[Refactoring, plus record recursive-function *components* as RecArg too
1008simonpj@microsoft.com**20060816085809]
1009[Record constructor arg occs correctly (bug-fix)
1010simonpj@microsoft.com**20060816085628
1011 
1012 I was forgetting the non-pattern-matched type args of a constructor.
1013 
1014]
1015[Disable form-checking for rule LHSs
1016simonpj@microsoft.com**20060816085612
1017 
1018 Previously we checked the form of the arguments of a RULE lhs, to
1019 ensure that they were simple applications. There was no good reason
1020 for that, save to prevent you writing LHSs that were unlikely to match.
1021 
1022 And Don Stewart found he wanted to do something we didn't allow (a section,
1023 I think).  So I have just disabled the check.
1024 
1025]
1026[Allow class and instance decls in hs-boot files
1027simonpj@microsoft.com**20060815123402
1028 
1029 For some reason, in 6.5 the manual said you could put a class decl in
1030 an interface file, but not an instance decl; whereas the implementation
1031 was exactly the othe way round.
1032 
1033 This patch makes it possible to put *both* class and instance decls
1034 in an interface file.
1035 
1036 I also did a bit of re-factoring; comparing the declarations in the
1037 hs-boot and hs file is now done by converting to IfaceSyn, because we
1038 have good comparison operations for IfaceSyn already implemented.
1039 This fixed a bug that previously let through an inconsistent declaration
1040 of a data type.
1041 
1042 The remaining infelicity concerns "abstract" TyCons.  They are a bit
1043 of a hack anyway; and Classes are not handled in the same way.  Need
1044 to think about this, but I think it's probably ok as it stands.
1045 
1046 
1047]
1048[Reject derivable type classes with higher-rank methods
1049simonpj@microsoft.com**20060815075928
1050 
1051 Trac #864 suggested a derivable type class with a higher-rank method.
1052 
1053 In principle this is quite do-able, but in practice the mechanism works
1054 by generating source code and then doing type inference.  To make this work
1055 with higher-rank types would require impredicative polymorphism. And we
1056 do have that, so it could probably be made to work by generating (source-level)
1057 type annotations.  But it's real work, so I'm settling for generating a
1058 decent error message rather than crashing.
1059 
1060 
1061]
1062[SpecConstr now specialises on constants and lambdas
1063simonpj@microsoft.com**20060815162605
1064 
1065 Roman inspired me to beef up SpecConstr to deal with
1066 a) constant arguments
1067 b) lambda arguments
1068 
1069 This is described in elaborate comments in the file:
1070        Note [Specialising for constant parameters]
1071        Note [Specialising for lambda parameters]
1072 
1073 I also took the opportunity to fix the usage analysis done by
1074 SpecConstr, which was only handling the top-level correctly.
1075 Now it does nesting too.
1076 
1077 
1078]
1079[Fix two bugs in rule-matching
1080simonpj@microsoft.com**20060815162030
1081 
1082 These two typo-like bugs have been there for a long time!
1083 
1084   One concerns the selection of overlapping rules,
1085   which was back to front
1086 
1087   The other was name-lining-up bug in the Case case of matching
1088 
1089 This patch also arranges to export matchN.
1090   (Not a good name, but still!)
1091 
1092 
1093]
1094[Moving list-length code from one place in the file to another
1095simonpj@microsoft.com**20060815161947]
1096[Make UniqSM into a proper monad
1097simonpj@microsoft.com**20060815161829]
1098[Typo in patch that dealt with duplicating continuations in Simplify
1099simonpj@microsoft.com**20060815070246]
1100[Be more conservative about duplicating continuations
1101simonpj@microsoft.com**20060814165424
1102 
1103 Roman found that GHC was duplicating continuations that arose (essentially)
1104 from uses of 'seq', or strict constructors.  This fixes the problem;
1105 see the comments mkDupableCont (the Select case with a single alternative).
1106 
1107 I'm a little concerned that this may also miss useful case-of-case
1108 tranformations, so I'd like to know if anyone finds that this patch
1109 makes performance worse.
1110 
1111 To make it a bit more gung-ho, one could check for all the binders
1112 being dead, before choosing this new, conservative alternative.
1113 
1114 
1115]
1116[Inline into tail-called constructor args
1117simonpj@microsoft.com**20060814165127
1118 
1119 Consider
1120        x = case y of { True -> (p,q); ... }
1121 
1122 The occurrence analyser was marking p,q as 'Many', because they args
1123 of a constructor in an RhsCtxt.  But actually they aren't in a RhsCtxt,
1124 and in this case it's better to inline.
1125 
1126]
1127[Improve exprIsCheap
1128simonpj@microsoft.com**20060814165043
1129 
1130 exprIsCheap is meant to return True iff it's ok to push the expression
1131 inside a lambda.  But the previous version would return True of a nested
1132 construtor application like (1:2:3:[]), which isn't right.
1133 
1134 This patch re-factors the code somewhat, and fixes the bug.
1135 
1136]
1137[Added xhtml and cgi as default libraries.
1138bringert@cs.chalmers.se**20060814113242]
1139[Improve error message in TcHsType
1140simonpj@microsoft.com**20060814095617
1141 
1142 Fixes Trac #863.
1143 Test is tcfail162
1144 
1145]
1146[Warning police: Removed overlapped pattern warnings
1147sven.panne@aedion.de**20060811151353]
1148[Complete -fmono-pat-binds patch
1149simonpj@microsoft.com**20060811142842
1150 
1151 When adding the experimental -fmono-pat-binds, I forgot to check
1152 for type signatures of the now-monomorphic patterns.  This patch
1153 completes the job.
1154 
1155 I documented the design too:
1156    http://haskell.galois.com/cgi-bin/haskell-prime/trac.cgi/wiki/MonomorphicPatternBindings
1157 
1158]
1159[Avoid warning about overlapped pattern for Linux target
1160sven.panne@aedion.de**20060811140512]
1161[Improve error message layouts
1162simonpj@microsoft.com**20060811133317]
1163[Add type signature
1164simonpj@microsoft.com**20060811133302]
1165[Improve the "could not find module" error message
1166Simon Marlow <simonmar@microsoft.com>**20060811132135
1167 In particular, if we're searching for the profiling version of a
1168 module in another package, then suggest that perhaps it might not have
1169 been installed.
1170]
1171[On FreeBSD, use -lthr instead of -pthread for now (see comments)
1172Simon Marlow <simonmar@microsoft.com>**20060811113453]
1173[Two more error message indendations
1174simonpj@microsoft.com**20060811110435]
1175[Go back to calling type veriables t
1176simonpj@microsoft.com**20060811110412]
1177[Indent an error message
1178simonpj@microsoft.com**20060811110347]
1179[Improve error message (imported from Prelude at Implicit import declaration)
1180simonpj@microsoft.com**20060811110301]
1181[don't qualify module name for importedSrcLoc
1182Simon Marlow <simonmar@microsoft.com>**20060811101327]
1183[use "Defined in" rather than "Imported from" when printing ImportedSrcLoc
1184Simon Marlow <simonmar@microsoft.com>**20060811101159]
1185[Now that we have an "html" package, put the Haddock docs somewhere else
1186sven.panne@aedion.de**20060811092609]
1187[Nuked hschooks.h in favour of cutils.h, which has the prototypes we need
1188sven.panne@aedion.de**20060810154225]
1189[Match format strings and arguments for printf-like functions
1190sven.panne@aedion.de**20060810153624]
1191[Warning police: Make prototype for LDV_recordDead_FILL_SLOP_DYNAMIC visible
1192sven.panne@aedion.de**20060810144837]
1193[Warning police: Make strlen and friends known
1194sven.panne@aedion.de**20060810144729]
1195[Tweak GCC's inlining parameters to get thread_obj inlined
1196sven.panne@aedion.de**20060810144505]
1197[Add an IAmDead case to postInlineUnconditionally, and comments
1198simonpj@microsoft.com**20060810142034]
1199[Do not repeatedly simplify an argument more than once
1200simonpj@microsoft.com**20060810141526
1201 
1202 A very important invariant of the simplifier is that we do not simplify
1203 an arbitrarily large expression more than once in a single pass. If this
1204 can happen, then we can get exponential behaviour, when the large expression
1205 itself has a large sub-expression which is simplified twice, and so on.
1206 
1207 GHC has a long-standing bug which allows this repeated simplification to
1208 happen.  It shows up when we have a function like this
1209 
1210        f d BIG
1211 where f's unfolding looks like
1212        \x -> case x of (a,b) -> a
1213 Of course this is v common for overloaded functions.
1214 
1215 Before this patch we simplified all the args (d and BIG) before
1216 deciding to unfold f.  Then we push back the simplified BIG onto the
1217 continuation stack, inline f, so now we have
1218        (case d of (a,b) -> a) BIG
1219 After we reduce the case a bit, we'll simplify BIG a second time.  And
1220 that's the problem.
1221 
1222 The quick-and-dirty solution is to keep a flag in the ApplyTo continuation
1223 to say whather the arg has already been simplified.  An alternative would
1224 be to simplify it when first encountered, but that's a bigger change.
1225 
1226 
1227]
1228[Do not call preInlineUnconditionally in simplNonRecX
1229simonpj@microsoft.com**20060810141340
1230 
1231 This looks to me like a long-standing bug. simplNonRecX was calling
1232 preInlineUnconditionally, even though it was given an already-simplified
1233 expression.  Exponential behaviour beckons.
1234 
1235]
1236[Make postInlineUnconditaionally more conservative
1237simonpj@microsoft.com**20060810141145
1238 
1239 I'm being more paranoid about repeatedly simplifying things (to avoid
1240 exponential behaviour.)  postInlineUnconditionally looks as if it
1241 could repeated simplify the same expression; this patch stops it doing
1242 so.
1243 
1244 The extra lines are all comments!
1245 
1246 
1247]
1248[Control.Exception.unblock wasn't unblocking exceptions
1249Simon Marlow <simonmar@microsoft.com>**20060810132307]
1250[remove out of date comment
1251Simon Marlow <simonmar@microsoft.com>**20060810130154]
1252[move html before network, for now
1253Simon Marlow <simonmar@microsoft.com>**20060810121930]
1254[add html package
1255Simon Marlow <simonmar@microsoft.com>**20060810113719]
1256[Egregious bug in tcLHsConResTy
1257simonpj@microsoft.com**20060810120828
1258 
1259 This terrible bug in tcLHsConTy is pretty much guaranteed to show up
1260 on an program involving a GADT with more than one type parameter.
1261 
1262 This bug isn't present in the STABLE branch.
1263 
1264 Manuel: it is *not* necesary to merge this patch into the FC branch;
1265 just ignore it.
1266 
1267]
1268[Comments about improvements to SpecConstr
1269simonpj@microsoft.com**20060810120759]
1270[Remove HasBounds-instance and implement MArray.getBounds instead
1271Esa Ilari Vuokko <ei@vuokko.info>**20060809163012]
1272[Fix Array imports
1273Esa Ilari Vuokko <ei@vuokko.info>**20060809161341]
1274[Where we use $(GhcHcOpts), also add $(GhcStage1HcOpts)
1275Simon Marlow <simonmar@microsoft.com>**20060809144845
1276 This fixes building the compiler with -prof in $(GhcStage1HcOpts)
1277]
1278[fixes to the stage2 build following removal of old FFI syntax
1279Simon Marlow <simonmar@microsoft.com>**20060809143153]
1280[fix bug in task freeing
1281Simon Marlow <simonmar@microsoft.com>**20060809141225]
1282[add some more options to stage 2
1283Simon Marlow <simonmar@microsoft.com>**20060809141058]
1284[remove debugging code accidentally left in
1285Simon Marlow <simonmar@microsoft.com>**20060809102936]
1286[remember that old FFI syntax has been dropped
1287Simon Marlow <simonmar@microsoft.com>**20060809101655]
1288[only define GHCI if $(GhcWithInterpreter)=YES, also add -threaded
1289Simon Marlow <simonmar@microsoft.com>**20060809101634]
1290[move altzone test to base package
1291Ross Paterson <ross@soi.city.ac.uk>**20060809124215]
1292[remove unused FPTOOLS_CHECK_HTYPE macro
1293Ross Paterson <ross@soi.city.ac.uk>**20060809124036]
1294[Remove the artifical cap on the number of workers
1295Simon Marlow <simonmar@microsoft.com>**20060809095908
1296 See #805.  This was here to catch bugs that resulted in an infinite
1297 number of worker threads being created.  However, we can't put a
1298 reasonable bound on the number of worker threads, because legitimate
1299 programs may need to create large numbers of (probably blocked) worker
1300 threads.  Furthermore, the OS probably has a bound on the number of
1301 threads that a process can create in any case.
1302 
1303 
1304 
1305]
1306[Remove old FFI syntax
1307Simon Marlow <simonmar@microsoft.com>**20060809095201
1308 See #815
1309]
1310[make exit() overridable, for use in DLLs
1311Simon Marlow <simonmar@microsoft.com>**20060809092439
1312 See #753
1313]
1314[More fixes to pre-matching and pre-subsumption
1315simonpj@microsoft.com**20060808224924
1316 
1317 Actually this patch fixes two errors. one was a trivial typo in
1318 tha last patch (b_ty should be b_tau), which led to an infinite loop
1319 when compiling Data.Generic.Twins. 
1320 
1321 Fixing that revealed a more serious error in the same function.
1322 I was sloppy about dealing robsutly with name-capture for nested
1323 quantifiers in pre-subsumption and pre-matching; and sure enough
1324 I got bitten.  Sigh.  I think it is right now.
1325 
1326]
1327[Group exports so that all length functions are together; no semantic change
1328simonpj@microsoft.com**20060808224808]
1329[Check that lazy patterns are for lifted types
1330simonpj@microsoft.com**20060808135910
1331 
1332 A lazy pattern match must be for a lifted type. This is illegal:
1333 
1334        f x = case g x of
1335                 ~(# x,y #) -> ...
1336 
1337 This commit fixes the problem.  Trac #845, test is tcfail159
1338 
1339]
1340[Spelling in a comment
1341simonpj@microsoft.com**20060808123514]
1342[Remove srcSpanStartLine/srcSpanEndLine crash
1343simonpj@microsoft.com**20060808123211
1344 
1345 srcSpanStartLine/srcSpanEndLine panic on UnhelpfulLoc. They should not
1346 really be exported by SrcLoc at all, but unfortunately they are used in
1347 Lexer.x, which knows enough to avoid the panic.
1348 
1349 However the call in RnEnv didn't know, and the panic was triggered
1350 by Template Haskell spliced code.  This patch fixes it by exporting
1351 the predicate RnEnv wanted, namely isOneLineSpan.
1352 
1353]
1354[Replace deprecated AC_TRY_COMPILE macro with the reccomended replcament
1355Duncan Coutts <duncan.coutts@worc.ox.ac.uk>**20060706114902
1356 See: http://www.gnu.org/software/autoconf/manual/html_node/Obsolete-Macros.html
1357]
1358[Add ghc and version number in .ident directive in NCG
1359Duncan Coutts <duncan.coutts@worc.ox.ac.uk>**20060706114712
1360 Just because we can and because every other compiler does,
1361 lets stick in an identifier directive: .ident "GHC x.y.z"
1362 into the assembly output of the NCG.
1363]
1364[Support the GNU non-exec stack annotation system
1365Duncan Coutts <duncan.coutts@worc.ox.ac.uk>**20060706114331
1366 On recent GNU ELF systems one can mark an object file as not
1367 requiring an executable stack. If all objects- linked into a
1368 program have this note then the program will not use an executable
1369 stack, which is good for security (and some distros have it as a
1370 QA policy). GHC generated code does not need an executable stack
1371 so add the note to the assembly output of the native code
1372 generator (conditional on a configure test).
1373]
1374[Complain more loudly if any of the hsc2hs phases fail
1375Duncan Coutts <duncan.coutts@worc.ox.ac.uk>**20060703234356
1376 previously hsc2hs just exits with a non-zero exit code, now if any of
1377 the compilation, linking or runing phases fail then we get a message
1378 saying so and the failing command is printed.
1379]
1380[Remember to free() memory on exit
1381Simon Marlow <simonmar@microsoft.com>**20060808103110
1382 Patch mostly from Lennart Augustsson in #803, with additions to
1383 Task.c by me.
1384]
1385[Fix pre-subsumption and pre-matching
1386simonpj@microsoft.com**20060808091108
1387 
1388 The pre-subsuption and pre-matching functions should NEVER make bogus
1389 bindings of type variables, although they are free to bale out and make
1390 too few bindings.
1391 
1392 I hadn't been thiking carefully enough about this, and there were two
1393 separate bugs. 
1394 
1395 - Firstly, in pre-subsumption we must ignore the 'theta'
1396   part of any overloaded type. 
1397 
1398 - Second, in pre-matching, we must return the empty subustition
1399   on a mis-match, rather than returning the substitution so far.
1400 
1401 This bug showed up when compiling Data.Generics.Schemes.hs, and is
1402 imortalised in test tc206
1403 
1404]
1405[Improve error message
1406simonpj@microsoft.com**20060808080255
1407 
1408 Improve a little-used error message.  Given
1409        f :: a -> a
1410        f x y = e
1411 the error says
1412 
1413        The equations for f have two arguments
1414        but its type `a -> a' has only one
1415 
1416 (Before, it said "its type `a' has only one" which is bogus.
1417 
1418]
1419[Pull out common removal code, and detect does-not-exist correctly
1420Ian Lynagh <igloo@earth.li>**20060710214308]
1421[Create our own directory in the temporary directory to avoid various races
1422Ian Lynagh <igloo@earth.li>**20060710204424]
1423[Merge SysTools import declarations
1424Ian Lynagh <igloo@earth.li>**20060709183850]
1425[Don't freeze the dynamic flags used for filename generation before the pipeline starts
1426Ian Lynagh <igloo@earth.li>**20060709145101]
1427[#807: Removed double fclose of prof_file
1428Ian Lynagh <igloo@earth.li>**20060708152424
1429 prof_file was being fclose'd in both gen_XML_logfile and hs_exit, leading
1430 to glibc complaining of a double free.
1431]
1432[Add -fextended-default-rules and -fmono-pat-binds
1433simonpj@microsoft.com**20060807112107
1434 
1435 Add -fextended-deafult-rules (in response to Don Stewart's message below),
1436 and document them.
1437 
1438 Also doucument -fmono-pat-binds/-fno-mono-pat-binds, which has been in
1439 GHC a few weeks now.
1440 
1441 (The two are in one patch because the diffs were so close together
1442 that Darcs combined them.)
1443 
1444 Simon
1445 
1446 
1447 From: Donald Bruce Stewart [mailto:dons@cse.unsw.edu.au]
1448 Sent: 07 August 2006 10:52
1449 
1450 While we're thinking about defaulting, I have a question..
1451 
1452 ghci uses an extended defaulting system, to allow things like:
1453         Prelude> reverse []
1454         []
1455 to work, and to have the right instance of Show found. The manual says:
1456 
1457     "..it is tiresome for the user to have to specify the type, so GHCi extends
1458     Haskell's type-defaulting rules (Section 4.3.4 of the Haskell 98 Report
1459     (Revised)) as follows. If the expression yields a set of type constraints
1460     that are all from standard classes (Num, Eq etc.), and at least one is
1461     either a numeric class or the Show, Eq, or Ord class, GHCi will try to use
1462     one of the default types, just as described in the Report. The standard
1463     defaulting rules require that one of the classes is numeric; the difference
1464     here is that defaulting is also triggered at least one is Show, Eq, or Ord."
1465 
1466 Currently, there is no way to get at this "extended" defaulting for compiled
1467 modules. However, I have a use case for in fact doing this.
1468 
1469 With runtime evaluated Haskell, embedding 'interpreters' (over hs-plugins) is
1470 easy. lambdabot, for example, implements a sandboxed haskell eval system. But
1471 it doesn't have access to the defaulting mechanism of ghci, so we have:
1472 
1473     dons:: > reverse []
1474     lambdabot:: Add a type signature
1475     dons:: > reverse [] :: [()]
1476     lambdabot:: []
1477 
1478 Which is annoying -- newbies wonder why they have to add these extra
1479 constraints to get a Show instance.
1480 
1481 I'm wondering, since the extended defaulting mechanisms are already
1482 implemented, could they be made available to compiled modules as well,
1483 perhaps using a flag, -fextended-defaulting?
1484 
1485]
1486[add a comment
1487Simon Marlow <simonmar@microsoft.com>**20060807143102]
1488[Do pre-subsumption in the main subsumption check
1489simonpj@microsoft.com**20060804214942
1490 
1491 This patch improves the subsumption check (in TcUnify.tc_sub) so that
1492 it does pre-subsumption first.  The key code is in the case with
1493 guard (isSigmaTy actual_ty); note the new call to preSubType.
1494 
1495 Shorn of details, the question is this.  Should this hold?
1496 
1497        forall a. a->a   <=   Int -> (forall b. Int)
1498 
1499 Really, it should; just instantiate 'a' to Int.  This is just what
1500 the pre-subsumption phase (which used in function applications),
1501 will do.
1502 
1503 I did a bit of refactoring to achieve this.
1504 
1505 Fixes Trac #821.  Test tc205 tests.
1506 
1507]
1508[Make unification robust to a boxy type variable meeting itself
1509simonpj@microsoft.com**20060801214302
1510 
1511 Previously, the implicit assumption in unification is that a boxy
1512 type variable could never occur on both sides of the unification,
1513 so that we'd never find
1514        bx5 :=: bx5
1515 
1516 But the pre-subsumption stuff really means that the same variable
1517 can occur on both sides.  Consider
1518        forall a. a->Int <= bx5->Int
1519 Then pre-subumption will find a->bx5; and the full subsumption step
1520 will find bx5:=bx5.
1521 
1522 However, I think there is still no possiblity of a full occurs-check
1523 failure; that is,
1524        bx5 :=: Tree bx5
1525 Although I can't quite see how to prove it!  So I've added a
1526 DEBUG test in uMetaVar to check for this case.
1527 
1528]
1529[Added cabal-setup
1530sven.panne@aedion.de**20060804142149]
1531[Don't include the package name in a cost centre's module name
1532Simon Marlow <simonmar@microsoft.com>**20060803093337
1533 This is mainly to restore the old behaviour, but also we shouldn't
1534 normally need the package name in a cost centre because only the
1535 "main" package normally has cost centres.
1536]
1537[Add a new section "Getting the Source" to both HACKING and README. But what about win32 users?
1538shae@ScannedInAvian.com**20060720152929]
1539[savingOldConfig: add Exception.block for extra paranoia
1540Simon Marlow <simonmar@microsoft.com>**20060801131027
1541 
1542]
1543[Refactor ghc-pkg
1544Ian Lynagh <igloo@earth.li>**20060729192946
1545 This patch fixes a couple of issues with the
1546     Be lazier in user config creation, and don't fail on missing configs.
1547 patch. It puts the createDirectoryIfMissing back in and removes assumptions
1548 that the package.conf file already exists.
1549]
1550[No functionality changes
1551Ian Lynagh <igloo@earth.li>**20060730105256
1552 Consistently used spaces rather than tabs.
1553 Removed trailing whitespace.
1554 Wrapped comments to fit in a standard terminal.
1555]
1556[Add notes about unsafeCoerce
1557simonpj@microsoft.com**20060731080922]
1558[.hi-boot-5 is obsolete; the earliest GHC we support uses .hi-boot-6
1559Simon Marlow <simonmar@microsoft.com>**20060728140809
1560 
1561 
1562]
1563[update to match .lhs-boot
1564Simon Marlow <simonmar@microsoft.com>**20060728140607]
1565[get ReadP from the right place.
1566Simon Marlow <simonmar@microsoft.com>**20060728140444
1567 
1568]
1569[Improve error message for deriving
1570simonpj@microsoft.com**20060727160832]
1571[Lazy patterns are like wild-cards for overlap warnings
1572simonpj@microsoft.com**20060727155009
1573 
1574        MERGE TO STABLE
1575 
1576 Fixes Trac #827
1577 Test is should_compiler/ds058
1578 
1579]
1580[fix some problems with wired-in packages
1581Simon Marlow <simonmar@microsoft.com>**20060727153802]
1582[oops, remove old packages when updating
1583Simon Marlow <simonmar@microsoft.com>**20060727150650]
1584[fix symbols for GHC.PrimopWrappers
1585Simon Marlow <simonmar@microsoft.com>**20060727134755]
1586[a couple more symbols need package names
1587Simon Marlow <simonmar@microsoft.com>**20060727102129]
1588[Add missing import
1589simonpj@microsoft.com**20060727085605]
1590[Make -fcontext-stack into a dynamic flag
1591simonpj@microsoft.com**20060727080422
1592 
1593   This allows you to put -fcontext-stack into an options pragma,
1594   as requested by Trac #829
1595   
1596   While I was at it, I added OptIntPrefix to the forms allowed
1597   in CmdLineParser.
1598 
1599]
1600[Deal correctly with infix type constructors in GADT decls
1601simonpj@microsoft.com**20060726225304]
1602[Improve pretty printing of ConDecl
1603simonpj@microsoft.com**20060726225223]
1604[fix parse error (merge-o, I think)
1605Simon Marlow <simonmar@microsoft.com>**20060726103526]
1606[fix DEBUG build
1607Simon Marlow <simonmar@microsoft.com>**20060726103433]
1608[missed one symbol that needs a package name
1609Simon Marlow <simonmar@microsoft.com>**20060726085844]
1610[change wired-in Haskell symbols to include the package name
1611Simon Marlow <simonmar@microsoft.com>**20060726084659]
1612[Unbox the Unique stored in a Name
1613Simon Marlow <simonmar@microsoft.com>**20060725141747
1614 I measured that this makes the comiler allocate a bit more, but it
1615 might also make it faster and reduce residency.  The extra allocation
1616 is probably just because we're not inlining enough somewhere, so I
1617 think this change is a step in the right direction.
1618]
1619[optimisations to newUnique
1620Simon Marlow <simonmar@microsoft.com>**20060725140816
1621 
1622 It turned out that newUnique was wasting one node of the splittable
1623 uniq supply per invocation: it took the current supply, split it, used
1624 the unique from one half and stored the other half in the monad.  In
1625 other words, the unique in the supply stored in the monad was never
1626 used. 
1627 
1628 This optimisation fixes that and adds a bit of strictness, which
1629 together lead to small reduction in allocations by the compiler, and
1630 possibly an improvement in residency (hard to tell for sure when GCs
1631 move around).
1632]
1633[tiny bit of extra strictness
1634Simon Marlow <simonmar@microsoft.com>**20060725131201]
1635[Make a SplitUniqSupply contain an Int# rather than an Int
1636Simon Marlow <simonmar@microsoft.com>**20060725120252
1637 The I# constructor is always removed when we make a unique later
1638 anyway, so this just saves a bit of time and allocation.
1639]
1640[Use -package-name rather than -ignore-package
1641Simon Marlow <simonmar@microsoft.com>**20060725130913]
1642[Remove most of the conflict checking and auto-hiding
1643Simon Marlow <simonmar@microsoft.com>**20060725130850
1644 Now that the module restriction has been lifted, the auto-hiding is
1645 mostly not required.  GHC itself automatically hides old versions of a
1646 package.
1647]
1648[Generalise Package Support
1649Simon Marlow <simonmar@microsoft.com>**20060725130154
1650 
1651 This patch pushes through one fundamental change: a module is now
1652 identified by the pair of its package and module name, whereas
1653 previously it was identified by its module name alone.  This means
1654 that now a program can contain multiple modules with the same name, as
1655 long as they belong to different packages.
1656 
1657 This is a language change - the Haskell report says nothing about
1658 packages, but it is now necessary to understand packages in order to
1659 understand GHC's module system.  For example, a type T from module M
1660 in package P is different from a type T from module M in package Q.
1661 Previously this wasn't an issue because there could only be a single
1662 module M in the program.
1663 
1664 The "module restriction" on combining packages has therefore been
1665 lifted, and a program can contain multiple versions of the same
1666 package.
1667 
1668 Note that none of the proposed syntax changes have yet been
1669 implemented, but the architecture is geared towards supporting import
1670 declarations qualified by package name, and that is probably the next
1671 step.
1672 
1673 It is now necessary to specify the package name when compiling a
1674 package, using the -package-name flag (which has been un-deprecated).
1675 Fortunately Cabal still uses -package-name.
1676 
1677 Certain packages are "wired in".  Currently the wired-in packages are:
1678 base, haskell98, template-haskell and rts, and are always referred to
1679 by these versionless names.  Other packages are referred to with full
1680 package IDs (eg. "network-1.0").  This is because the compiler needs
1681 to refer to entities in the wired-in packages, and we didn't want to
1682 bake the version of these packages into the comiler.  It's conceivable
1683 that someone might want to upgrade the base package independently of
1684 GHC.
1685 
1686 Internal changes:
1687 
1688   - There are two module-related types:
1689 
1690         ModuleName      just a FastString, the name of a module
1691         Module          a pair of a PackageId and ModuleName
1692 
1693     A mapping from ModuleName can be a UniqFM, but a mapping from Module
1694     must be a FiniteMap (we provide it as ModuleEnv).
1695 
1696   - The "HomeModules" type that was passed around the compiler is now
1697     gone, replaced in most cases by the current package name which is
1698     contained in DynFlags.  We can tell whether a Module comes from the
1699     current package by comparing its package name against the current
1700     package.
1701 
1702   - While I was here, I changed PrintUnqual to be a little more useful:
1703     it now returns the ModuleName that the identifier should be qualified
1704     with according to the current scope, rather than its original
1705     module.  Also, PrintUnqual tells whether to qualify module names with
1706     package names (currently unused).
1707 
1708 Docs to follow.
1709]
1710[comment formatting
1711Simon Marlow <simonmar@microsoft.com>**20060725110519
1712 
1713]
1714[unused import
1715Simon Marlow <simonmar@microsoft.com>**20060706141349]
1716[unused import
1717Simon Marlow <simonmar@microsoft.com>**20060706141205]
1718[remove more Addr bits
1719Simon Marlow <simonmar@microsoft.com>**20060704151217]
1720[unused import
1721Simon Marlow <simonmar@microsoft.com>**20060704141319]
1722[add default cases
1723Simon Marlow <simonmar@microsoft.com>**20060704135444]
1724[redundant import
1725Simon Marlow <simonmar@microsoft.com>**20060704135435]
1726[unused imports
1727Simon Marlow <simonmar@microsoft.com>**20060704135117]
1728[unused import
1729Simon Marlow <simonmar@microsoft.com>**20060704134557]
1730[remove unused bits, mostly to do with the Addr type
1731Simon Marlow <simonmar@microsoft.com>**20060704124912]
1732[In interface files, store FastStrings rather than OccNames where possible
1733Simon Marlow <simonmar@microsoft.com>**20060724154826
1734 In all cases the namespace is known from the context, so this saves 1
1735 byte per variable binding/occurrence (a few percent per iface file).
1736]
1737[Add -fmono-pat-binds, and make it the default
1738simonpj@microsoft.com**20060722102245
1739 
1740 In Haskell 98, pattern bindings are generalised.  Thus in
1741        (f,g) = (\x->x, \y->y)
1742 both f and g will get polymorphic types.  I have become convinced
1743 that generalisation for pattern-bound variables is just a bridge
1744 toof far. It is (I claim) almost never needed, and it adds significant
1745 complication.  (All the more so if we add bang patterns.)
1746 
1747 So the flag -fmono-pat-binds switches off generalisation for pattern
1748 bindings.  (A single variable is treated as a degnerate funtction
1749 binding.) 
1750 
1751 Furthremore, as an experiment, I'm making it the default.  I want
1752 to see how many progarms fail with monomorphic pattern bindings.
1753 
1754 You can recover the standard behaviour with -fno-mono-pa-binds.
1755 
1756]
1757[Fix RULES lossage
1758simonpj@microsoft.com**20060722101756
1759 
1760 Don Stewart and Duncan Coutts encountered the following situation.
1761        f = <rhs>
1762        {-# RULES f ... #-}
1763 where f is not exported, but appears in the inlinings of other
1764 functions that are exported.  Then what happened was that the desugarer
1765 produced this:
1766        M.f = f
1767        f = <rhs>
1768 where the rules get attached to the M.f. But since M.f's RHS is trivial
1769 (just f) it was unconditionally inlinined at all its call sites,
1770 thereby losing the RULES attached to it.
1771 
1772 This *is* a fragile aspect of rules. However this fix solves the
1773 problem by instead generating
1774        f = M.f
1775        M.f = <rhs>
1776 
1777 A pretty small chanage to the desugarer does the job.  It still feels
1778 a little fragile, bt it's certainly more robust than before.
1779 
1780]
1781[Fix broken regex
1782Simon Marlow <simonmar@microsoft.com>**20060721111144
1783 Don't know how I managed to use this before... maybe a different regex
1784 library.
1785]
1786[fix bug in sample code
1787Simon Marlow <simonmar@microsoft.com>**20060721083200]
1788[fix eran error message by reordering a couple of tests
1789simonmar@microsoft.com**20060719111638]
1790[Use a recursive error handler in case the exception causes more exceptions.
1791Lemmih <lemmih@gmail.com>**20060717232553]
1792[Check for overlap-flag differences in hi files
1793simonpj@microsoft.com**20060714163843
1794 
1795        MERGE TO STABLE
1796 
1797 I'd forgotten to compare the per-instance overlap flag when
1798 comparing interface files, and that meant that consequential
1799 recompilations weren't being triggered when the only change
1800 was to add -fallow-overlapping-instances
1801 
1802 Fixes Trac bug #824
1803 
1804 
1805]
1806[Add a clarification about overlapping instances in the manual
1807simonpj@microsoft.com**20060714143220]
1808[Comments and import trimming
1809simonpj@microsoft.com**20060712153306]
1810[Experimental flag -fdicts-cheap
1811simonpj@microsoft.com**20060712153204
1812 
1813 This experimental flag, -fdicts-cheap, makes a let-binding that bind a
1814 value of dictionary type look cheap.  That in turn leads to more
1815 eta expansion.  Instead of
1816        f = /\a. \(d1:Ord a). let d2:Ord [a] = dfOrd a d1 in
1817                  \(x:a). <stuff>
1818 which has arity 1, you get
1819        f = /\a. \(d1:Ord a). \(x:a).
1820                 let d2:Ord [a] = dfOrd a d1 in <stuff>
1821 Now f has arity 2.
1822 
1823 This can cretainly waste dictionary-construction work, if f is
1824 partially applied to its dictionary argument.  However it has knock-on
1825 effects.  Because f has arity 2, we won't float (f Int d) out of
1826        \x. h (f Int d)
1827 Floating f out of this lambda makes it impossible for an h/f fusion
1828 rule to fire; and this unexpected loss of RULE application was the
1829 immediate reason for implementing this flag. (Roman Leshchinskiy came
1830 across this when working on array fusion.)
1831 
1832 
1833 I've implemented the change only in CoreUtils.arityType, which
1834 only affects eta expansion.  I thought of putting the change in
1835 exprIsCheap, which is a more systematic place (the former calls
1836 the latter) but
1837 
1838        a) I wanted this under flag control, and the flags
1839        are not readily available to all callers of exprIsCheap
1840 
1841        b) I'm not 100% convinced that this change is a good
1842        idea, so it's reasonable to do the narrowest change
1843        that solves the immediate problem.
1844]
1845[document that -fglasgow-exts is needed for RULES to work
1846Malcolm.Wallace@cs.york.ac.uk**20060712093907]
1847[do a better job of ignoring unrecognised pragmas
1848Simon Marlow <simonmar@microsoft.com>**20060712083550]
1849[Don't z-encode module names in external-core output
1850Jan Rochel <jan.rochel@stud.uka.de>**20060706131109]
1851[re-add -fvia-C
1852Simon Marlow <simonmar@microsoft.com>**20060710081522
1853 There are still some fixes required to get the threaded RTS compilable
1854 with the NCG, and apparently there are problems on 32-bit archs too.
1855 
1856]
1857[Be lazier in user config creation, and don't fail on missing configs.
1858Ian Lynagh <igloo@earth.li>**20060624230800]
1859[Z-Encode external-core output
1860Jan Rochel <jan.rochel@stud.uka.de>**20060702214438
1861 
1862 HEAD doesn't z-encode external-core output (unlike 6.4). I suppose, that
1863 this is unwanted behaviour. It probably results from this patch:
1864 
1865 ========================================================================
1866 Fri Jan  6 17:30:19 CET 2006  simonmar
1867   * [project @ 2006-01-06 16:30:17 by simonmar]
1868   Add support for UTF-8 source files
1869 
1870 [...]   
1871 
1872 Z-encoding has been moved right to the back end.  Previously we
1873 used to Z-encode every identifier on the way in for simplicity,
1874 and only decode when we needed to show something to the user.
1875 Instead, we now keep every string in its UTF-8 encoding, and
1876 Z-encode right before printing it out.
1877 
1878 [...]
1879 ========================================================================
1880 
1881 Greetings
1882 Jan
1883]
1884[Add %local-tag to external core output
1885Jan Rochel <jan.rochel@stud.uka.de>**20060702204559
1886 
1887 Hello, this is my first patch contributed to GHC. If there are any
1888 inadequacies about it (maybe like this introductory disclaimer), please
1889 let me know about it.
1890 
1891 So, the need for this patch arose, while I was involved with processing
1892 hcr files (external core output) and I noticed, that the output didn't
1893 fully conform to the specification [1].
1894 No %local-tags were used, which turned out to be a real nuisance as it
1895 was not possible to determine which VDEFs can be erased in a further
1896 optimization process and which ones are exported by the module.
1897 
1898 Since the specification does not define the meaning of the %local-tag, I
1899 assume, it makes sense, that it tags all functions, that are not
1900 exported by the module.
1901 
1902 The patch does not fully comply to the specification, as in my
1903 implementation a local tag may appear before a VDEF but not before a
1904 VDEFG.
1905 
1906 [1] An External Representation for the GHC Core Language
1907     (DRAFT for GHC5.02), page 3, line 1
1908 
1909 Greetings
1910 Jan
1911]
1912[Remove bashisms from darcs-all
1913Alec Berryman <alec@thened.net>**20060703012911
1914 
1915 darcs-all may now be run with any POSIX-compatible /bin/sh.
1916]
1917[Fix for warning message (bug #812)
1918Duncan Coutts <duncan.coutts@worc.ox.ac.uk>**20060704163413
1919 say "{-# SOURCE #-}" rather than "{- SOURCE -}" in warning message.
1920 Fixes http://hackage.haskell.org/trac/ghc/ticket/812
1921]
1922[The dict-bindings in an IPBinds need not be in dependency order
1923simonpj@microsoft.com**20060703151517
1924 
1925 This appears to be a long-standing bug, discovered by BlueSpec
1926 (ravi@bluespec.com), Trac bug #795
1927 
1928 The problem was that in an IP binding group, the dict bindings
1929 aren't necessarily in dependency order; and if they aren't
1930 we get a core-lint error.
1931 
1932 Test tc203 checks this case.  (Though whether it shows up at
1933 all depends a bit on accidental factors of binding ordering.)
1934 
1935]
1936[x86 needs -fno-unit-at-a-time too
1937Simon Marlow <simonmar@microsoft.com>**20060704083308
1938 Fixes #809
1939]
1940[x86-64: fix a problem exposed by negative offsets in vector tables
1941Simon Marlow <simonmar@microsoft.com>**20060629140608
1942 static relative offsets (eg .long l1-l2) are restricted to 32 bits on
1943 x86-64 due to lack of support in the linker.  The codegen, NCG and
1944 runtime work around this, using 32-bit offsets instead of 64.
1945 However, we were missing a workaround for vector tables, and it
1946 happened to work by accident because the offsets were always positive
1947 and resolved by the assembler.  The bug was exposed by using the NCG
1948 to compile the RTS, where the offsets became negative, again by
1949 accident.
1950]
1951[No longer force -fvia-C for the RTS, it can now be compiled with the NCG
1952Simon Marlow <simonmar@microsoft.com>**20060629135836]
1953[Replace inline C functions with C-- macros in .cmm code
1954Simon Marlow <simonmar@microsoft.com>**20060629134726
1955 So that we can build the RTS with the NCG.
1956]
1957[remove conditionals from definition of StgRegTable
1958Simon Marlow <simonmar@microsoft.com>**20060629134405
1959 so that we can calculate deterministic offsets to some of the fields
1960 of Capability.
1961]
1962[mpz_foo() functions are really called __gmpz_foo() in GMP
1963Simon Marlow <simonmar@microsoft.com>**20060629122217
1964 gmp.h #defines mpz_foo to __gmpz_foo, so the real ABI is __gmpz_foo,
1965 so that is what we must invoke in order to be portable here.
1966 Similarly for mpn --> __gmpn.
1967]
1968[use the new "prim %write_barrier()" in .cmm instead of calls to wb()
1969Simon Marlow <simonmar@microsoft.com>**20060629120526]
1970[fix some problems with the fixup block code
1971Simon Marlow <simonmar@microsoft.com>**20060629120210
1972 We weren't handling InBoth properly.  InBoth needs to be expanded to
1973 appropriate InReg/InMem locations *before* building the interference
1974 graph, otherwise an InBoth will not be seen to conflict with other
1975 InReg/InMem locations.
1976]
1977[small optimisation: eliminate more register-to-register moves
1978Simon Marlow <simonmar@microsoft.com>**20060629120029]
1979[new syntax: "prim %OP (args)"  for using CallishMachOps in .cmm
1980Simon Marlow <simonmar@microsoft.com>**20060629115949
1981 
1982 
1983]
1984[add MO_WriteBarrier to CallishMachOps
1985Simon Marlow <simonmar@microsoft.com>**20060629115837
1986 This will let us express write barriers in C--
1987]
1988[Use -fno-strict-aliasing for *all* C files in the runtime
1989Simon Marlow <simonmar@microsoft.com>**20060629082902
1990 as a precautionary measure.  It is definitely required for GC.c,
1991 but it may well become necessary for other files in the future due to
1992 our (mis-)use of the C "type system".
1993]
1994[the unlifted kind
1995Simon Marlow <simonmar@microsoft.com>**20060623152626]
1996[fix a lint-o
1997Simon Marlow <simonmar@microsoft.com>**20060620151901]
1998[fix sloppy conditionals
1999Simon Marlow <simonmar@microsoft.com>**20060620151758]
2000[fix sloppy conditionals
2001Simon Marlow <simonmar@microsoft.com>**20060620151039]
2002[fix a few sloppy conditionals caught by new test in CmmLint
2003Simon Marlow <simonmar@microsoft.com>**20060620150618]
2004[flattenCgStmts: fix a case of empty code blocks being generated
2005Simon Marlow <simonmar@microsoft.com>**20060620150520]
2006[improve a panic message
2007Simon Marlow <simonmar@microsoft.com>**20060620141219]
2008[check that the argument to CmmCondBranch is really a conditional
2009Simon Marlow <simonmar@microsoft.com>**20060620141204]
2010[Generate a new unique for each label
2011Simon Marlow <simonmar@microsoft.com>**20060620140106]
2012[Remove long-redundant FieldLabel.lhs
2013simonpj@microsoft.com**20060629105321]
2014[Add comments to SpecConstr
2015simonpj@microsoft.com**20060627161520]
2016[fix up slop-overwriting for THUNK_SELECTORS in DEBUG mode
2017Simon Marlow <simonmar@microsoft.com>**20060627123951]
2018[Make SpecConstr work better for nested functions
2019simonpj@microsoft.com**20060627094742
2020 
2021 In SpecConstr.scBind, we should pass the optimised body (body') to
2022 specialise, not the un-optimised one. In this way we'll benefit from
2023 specialising any nested functions inside body.
2024 
2025 Discovered by Roman.
2026 
2027]
2028[More SpecConstr tuning
2029simonpj@microsoft.com**20060626201709
2030 
2031 For some reason, SpecConstr wasn't taking account of let-bound constructors:
2032        let v = Just 4
2033        in ...(f v)...
2034 
2035 Now it does.  An easy fix fortunately.
2036 
2037]
2038[Improve consistency checking for derived instances
2039simonpj@microsoft.com**20060626100034
2040 
2041 This patch arranges that derived instances use the same instance-decl
2042 checking code as user-defined instances.  That gives greater consistency
2043 in error messages.
2044 
2045 Furthermore, the error description if this consistency check fails is now
2046 much more explicit.  For example, drvfail003 now says
2047      Variable occurs more often in a constraint than in the instance head
2048        in the constraint: Show (v (v a))
2049      (Use -fallow-undecidable-instances to permit this)
2050      In the derived instance
2051        instance (Show (v (v a))) => Show (Square_ v w a)
2052 
2053]
2054[Slight improvement in TH error reporting
2055simonpj@microsoft.com**20060626095952]
2056[Improve location info when typechecking interface fiels
2057simonpj@microsoft.com**20060614114813]
2058[Fix a bug in the pretty printing of class declarations
2059davve@dtek.chalmers.se**20060625160826]
2060[Improve RULE matching a bit more
2061simonpj@microsoft.com**20060624160421
2062 
2063 Consider this example (provided by Roman)
2064 
2065        foo :: Int -> Maybe Int -> Int
2066        foo 0 (Just n) = n
2067        foo m (Just n) = foo (m-n) (Just n)
2068 
2069 SpecConstr sees this fragment:
2070 
2071        case w_smT of wild_Xf [Just A] {
2072          Data.Maybe.Nothing -> lvl_smf;
2073          Data.Maybe.Just n_acT [Just S(L)] ->
2074            case n_acT of wild1_ams [Just A] { GHC.Base.I# y_amr [Just L] ->
2075            $wfoo_smW (GHC.Prim.-# ds_Xmb y_amr) wild_Xf
2076            }};
2077 
2078 and correctly generates the rule
2079 
2080        RULES: "SC:$wfoo1" [0] __forall {y_amr [Just L] :: GHC.Prim.Int#
2081                                          sc_snn :: GHC.Prim.Int#}
2082          $wfoo_smW sc_snn (Data.Maybe.Just @ GHC.Base.Int (GHC.Base.I# y_amr))
2083          = $s$wfoo_sno y_amr sc_snn ;]
2084 
2085 BUT we must ensure that this rule matches in the original function!
2086 Note that the call to $wfoo is
2087            $wfoo_smW (GHC.Prim.-# ds_Xmb y_amr) wild_Xf
2088 
2089 During matching we expand wild_Xf to (Just n_acT).  But then we must also
2090 expand n_acT to (I# y_amr).  And we can only do that if we look up n_acT
2091 in the in-scope set, because in wild_Xf's unfolding it won't have an unfolding
2092 at all.
2093 
2094 Happily, fixing the bug is easy: add a call to 'lookupRnInScope' in the
2095 (Var v2) case of 'match'.
2096 
2097]
2098[--enable-src-tree-haddock and friends are no longer required
2099Simon Marlow <simonmar@microsoft.com>**20060623113303
2100 Happy, Alex and Haddock are built separately using Cabal now.
2101]
2102[fix a couple of bugs in markSparkQueue (#799)
2103Simon Marlow <simonmar@microsoft.com>**20060623092044]
2104[pull in STABLE(!) tweaks
2105sof@galois.com**20060622202734]
2106[fix for when path to GHC contains spaces, from #695
2107Simon Marlow <simonmar@microsoft.com>**20060622131700]
2108[Comment only
2109simonpj@microsoft.com**20060621223940]
2110[Transfer INLINE to specialised functions
2111simonpj@microsoft.com**20060621223637
2112 
2113 When the Specialise pass generates a specialised copy of a function,
2114 it should transfer the INLINE information to the specialised function.
2115 Otherwise, whether or not the INLNE happens can depend on whether
2116 specialisation happens, which seems wrong.  See Note [Inline specialisation]
2117 in Specialise.lhs
2118 
2119 Here's the example Roman reported
2120 
2121     primWriteMU :: UAE e => MUArr e s -> Int -> e -> ST s ()
2122     {-# INLINE primWriteMU #-}
2123     primWriteMU = writeMBU . unMUAPrim
2124     ------
2125     
2126     The problem is that primWriteMU doesn't get inlined *sometimes*, which
2127     results in code like
2128     
2129     case Data.Array.Parallel.Unlifted.Flat.UArr.$sprimWriteMU
2130            @ s11_X1nJ
2131            marr_s25s
2132            (GHC.Base.I# sc_s27F)
2133            GHC.Base.False
2134            new_s_a1Db
2135            of wild3_a1Dd { (# new_s1_X1F9, r_a1Dc #) -> ...
2136 
2137 Note the fact that we have a call to the *specialised* $sprimWriteMU.
2138 
2139]
2140[Arity and eta-expansion tuning
2141simonpj@microsoft.com**20060621205855
2142 
2143 Roman found that
2144     loop :: STRef s a -> Int -> ST s Int
2145     loop ref n = case n of
2146                    0 -> return n
2147                    n -> loop ref (n-1)
2148 wasn't eta-expanding nicely, despite the 'state hack'
2149 (see Id.isStateHackType).  The reason was two-fold:
2150 
2151   a) a bug in CoreUtils.arityType (the Var case)
2152 
2153   b) the arity of a recursive function was not being
2154        exposed in its RHS (see commments with
2155        SimplEnv.addLetIdInfo
2156 
2157 The commit fixes both. 
2158 
2159]
2160[documentation for TH w/ profiling
2161Simon Marlow <simonmar@microsoft.com>**20060621112523]
2162[Allow Template Haskell to be used with -prof
2163Simon Marlow <simonmar@microsoft.com>**20060621110436
2164 
2165 In order for this to work, you need to build the program first in the
2166 normal way (without -prof), and then again with -prof and a suitable
2167 -osuf (eg. -osuf p_o).  The compiler will pick up the object files
2168 from the normal way for running TH expressions, when it sees -prof
2169 together with -osuf.  If you omit the -osuf, you get an error message:
2170 
2171 TH_genEx.hs:12:2:
2172     Dynamic linking required, but this is a non-standard build (eg. prof).
2173     You need to build the program twice: once the normal way, and then
2174     in the desired way using -osuf to set the object file suffix.
2175 
2176 If you use -osuf, but haven't built the program the normal way first,
2177 then you see:
2178 
2179 TH_genEx.hs:12:2:
2180     cannot find normal object file `TH_genExLib.o'
2181     while linking an interpreted expression
2182 
2183 Documentation to follow.
2184 
2185 Fixes: #651
2186]
2187[add decl for stg_block_throwto_ret
2188Simon Marlow <simonmar@microsoft.com>**20060620083410]
2189[comment out a non-true assertion
2190Simon Marlow <simonmar@microsoft.com>**20060616140750]
2191[make compilation a little less noisy
2192Simon Marlow <simonmar@microsoft.com>**20060616140652]
2193[allow the max number of workers to scale with +RTS -N
2194Simon Marlow <simonmar@microsoft.com>**20060616140633]
2195[fix one-character error in stack check
2196Simon Marlow <simonmar@microsoft.com>**20060616135621]
2197[add STM support to the new throwTo mechanism
2198Simon Marlow <simonmar@microsoft.com>**20060616111937]
2199[remove duplicate way names (-debug -debug didn't work)
2200Simon Marlow <simonmar@microsoft.com>**20060616110258]
2201[Asynchronous exception support for SMP
2202Simon Marlow <simonmar@microsoft.com>**20060616103342
2203 
2204 This patch makes throwTo work with -threaded, and also refactors large
2205 parts of the concurrency support in the RTS to clean things up.  We
2206 have some new files:
2207 
2208   RaiseAsync.{c,h}     asynchronous exception support
2209   Threads.{c,h}         general threading-related utils
2210 
2211 Some of the contents of these new files used to be in Schedule.c,
2212 which is smaller and cleaner as a result of the split.
2213 
2214 Asynchronous exception support in the presence of multiple running
2215 Haskell threads is rather tricky.  In fact, to my annoyance there are
2216 still one or two bugs to track down, but the majority of the tests run
2217 now.
2218]
2219[make rmp_tmp_w an StgWord instead of StgInt
2220Simon Marlow <simonmar@microsoft.com>**20060616102311]
2221[__compat_long_path_size(): have proto and defn agree on return type
2222sof@galois.com**20060614164650]
2223[call wakeUpRts() in the correct place
2224Simon Marlow <simonmar@microsoft.com>**20060614134728]
2225[readerProc: split up text output using host's line termination convention
2226sof@galois.com**20060613232605]
2227[Improve pretty-printing for bags
2228simonpj@microsoft.com**20060612114020]
2229[Make scoped type variables work for default methods
2230simonpj@microsoft.com**20060612113855
2231 
2232 Consider
2233   class C a where
2234     op :: forall b. a -> b -> b
2235     op = <rhs>
2236 
2237 Then 'b' should be in scope in <rhs>.  I had omitted this case.
2238 This patch fixes it.
2239 
2240]
2241[And move 'Chasing ...' messages into verbosity 2 as well
2242Don Stewart <dons@cse.unsw.edu.au>**20060612084656]
2243[Emit 'linking not required' messages only with -v 2 or above.
2244Don Stewart <dons@cse.unsw.edu.au>**20060611071041
2245 
2246 Similar in philosophy to the 'Skipping' patch, this is another case of
2247 printing noisy messages when no work is being done. This patch makes the
2248 building-when-nothing-to-do case smoother.
2249 
2250]
2251[Don't emit 'Skipping' messages unless -v2 or higher is on
2252Don Stewart <dons@cse.unsw.edu.au>**20060610145713
2253 
2254 Following GNU make, this patch makes GHC not emit messages about modules
2255 its skipping. This makes builds much quieter, and its a lot easier to
2256 work out what effects a change had on the code.
2257 
2258 The current behaviour can be recovered with -v2
2259 
2260]
2261[fix the stage3 build
2262Simon Marlow <simonmar@microsoft.com>**20060612084114]
2263[oops, undo accidental commit of version number
2264Simon Marlow <simonmar@microsoft.com>**20060612083520]
2265[Move readline configuration into the readline package
2266Simon Marlow <simonmar@microsoft.com>**20060609135840]
2267[fix possible ^C problems
2268Simon Marlow <simonmar@microsoft.com>**20060608144457
2269 Calling prodAllCapabilities() from interruptStgRts() was wrong, for
2270 the same reasons that we stopped doing it in handle_tick().  We now
2271 use the same mechanism (send a byte down the pipe to the IO manager
2272 thread), but abstract it in a wakeUpRts() function in the scheduler.
2273]
2274[New tracing interface
2275Simon Marlow <simonmar@microsoft.com>**20060608144210
2276 A simple interface for generating trace messages with timestamps and
2277 thread IDs attached to them.  Most debugging output goes through this
2278 interface now, so it is straightforward to get timestamped debugging
2279 traces with +RTS -vt.  Also, we plan to use this to generate
2280 parallelism profiles from the trace output.
2281]
2282[fix warnings
2283Simon Marlow <simonmar@microsoft.com>**20060608143635]
2284[fix warnings
2285Simon Marlow <simonmar@microsoft.com>**20060608143520]
2286[Make it so that StgWord/StgInt are longs
2287Simon Marlow <simonmar@microsoft.com>**20060608143438
2288 This means we can use a %ld format specifier for StgWord/StgInt with
2289 printf and not get shouted at by gcc.
2290]
2291[more warning fixage
2292Simon Marlow <simonmar@microsoft.com>**20060608142844]
2293[fix a warning
2294Simon Marlow <simonmar@microsoft.com>**20060608141903]
2295[fix some warnings
2296Simon Marlow <simonmar@microsoft.com>**20060608140201]
2297[Add new RTS flags for tracing:
2298Simon Marlow <simonmar@microsoft.com>**20060608130101
2299 
2300   -vs       Trace scheduler events (see also -Ds with -debug)
2301   -vt       Time-stamp trace messages
2302 
2303 the intention is that we will pipe the -vs output into a
2304 profile-generating tool.  This commit includes the flags only,
2305 functionality to follow.
2306]
2307[codegen debug flag (+RTS -Dc) was unused; remove it
2308Simon Marlow <simonmar@microsoft.com>**20060607145848]
2309[add 'const' modifiers to types where appropriate
2310Simon Marlow <simonmar@microsoft.com>**20060607145800]
2311[rearrange casts to avoid gcc warnings
2312Simon Marlow <simonmar@microsoft.com>**20060607145626]
2313[warning fix
2314Simon Marlow <simonmar@microsoft.com>**20060607141013]
2315[remove //@ stuff
2316Simon Marlow <simonmar@microsoft.com>**20060607134553]
2317[Gather timing stats for a Task when it completes.
2318Simon Marlow <simonmar@microsoft.com>**20060607124407
2319 Previously we did this just for workers, now we do it for the main
2320 thread and for forkOS threads too.
2321]
2322[Remove unnecessary SCHED_INTERRUPTED scheduler state
2323Simon Marlow <simonmar@microsoft.com>**20060607115105
2324 
2325]
2326[fix a warning
2327Simon Marlow <simonmar@microsoft.com>**20060427130048]
2328[re-enable time package on Windows
2329simonmar@microsoft.com**20060606124656]
2330[fix a case of "naughty I386 byte reg"
2331Simon Marlow <simonmar@microsoft.com>**20060606112357
2332 The fix is a little hacky, because we don't have support for register
2333 classes in general, but it's an improvement.
2334]
2335[A better icon for GHCi
2336Neil Mitchell <http://www.cs.york.ac.uk/~ndm/>**20060602145913]
2337[markSignalHandlers(): implementation was unnecessary, and had a bug
2338simonmar@microsoft.com**20060606085805
2339 
2340 There's no need to mark the signal handler here, because it is stored
2341 in a StablePtr and hence is a root anyway.  Furthermore, the call to
2342 evac() was passing the address of a local variable, which turned out
2343 to be harmless for copying GC, but fatal for compacting GC: compacting
2344 GC assumes that the addresses of the roots are the same each time.
2345 
2346 Fixes: possibly #783, possibly #776, definitely #787
2347]
2348[disable time package on mingw to unblock builds.
2349sof@galois.com**20060605165125]
2350[Remove one more IfaceInlineCall
2351simonpj@microsoft.com**20060605154305]
2352[Remove InlinePlease and add inline function and RULE
2353simonpj@microsoft.com**20060605114900
2354 
2355 For a long time GHC has had some internal mechanism designed to support
2356 a call-site inline directive, thus
2357        inline f xs
2358 makes f be inlined at the call site even if f is big.
2359 
2360 However, the surface syntax seems to have gone, and in any case it
2361 can be done more neatly using a RULE.
2362 
2363 This commit:
2364   * Removes the InlineCall constructor for Note
2365     and InlinePlease for SimplCont
2366 
2367   * Adds a new known-key Id called 'inline', whose definition in
2368     GHC.Base is just the identity function
2369 
2370   * Adds a built-in RULE in PrelRules that rewrites (inline f) to
2371     the body of f, if possible
2372 
2373   * Adds documentation
2374 
2375 NOTE: I have not tested this (aeroplane work).  Give it a try!
2376 
2377]
2378[Fix typo
2379simonpj@microsoft.com**20060605114719]
2380[fix type of allocateExec
2381Simon Marlow <simonmar@microsoft.com>**20060601125406]
2382[stgMallocBytesRWX --> allocateExec
2383Simon Marlow <simonmar@microsoft.com>**20060601123314]
2384[fix non-Windows build
2385Simon Marlow <simonmar@microsoft.com>**20060601121435]
2386[Win32: set up the console code pages
2387simonmar@microsoft.com**20060601115423
2388 This may help with entering non-ASCII characters at the GHCi prompt,
2389 but as usual with Unicode there's no simple solution that just works.
2390 See commentary in InteractiveUI.hs for more details.
2391]
2392[add a type signature
2393simonmar@microsoft.com**20060601115335]
2394[improvements to lexical error reporting
2395simonmar@microsoft.com**20060601115306]
2396[commented-out debugging code
2397simonmar@microsoft.com**20060601115247]
2398[understand Latin-1 symbols
2399simonmar@microsoft.com**20060601115149]
2400[stgMallocBytesRWX --> allocateExec
2401Simon Marlow <simonmar@microsoft.com>**20060531091202
2402 Not sure how I left this out of the previous patch, oh well.
2403]
2404['time' depends on 'Win32' when Windows=YES; mirror that
2405sof@galois.com**20060530223009
2406 when setting up SUBDIRS.
2407]
2408[Win32: add _imp__tzname
2409simonmar@microsoft.com**20060530101452]
2410[fix Win32 build
2411simonmar@microsoft.com**20060530101418]
2412[replace stgMallocBytesRWX() with our own allocator
2413Simon Marlow <simonmar@microsoft.com>**20060530100211
2414 
2415 See bug #738
2416 
2417 Allocating executable memory is getting more difficult these days.  In
2418 particular, the default SELinux policy on Fedora Core 5 disallows
2419 making the heap (i.e. malloc()'d memory) executable, although it does
2420 apparently allow mmap()'ing anonymous executable memory by default.
2421 
2422 Previously, stgMallocBytesRWX() used malloc() underneath, and then
2423 tried to make the page holding the memory executable.  This was rather
2424 hacky and fails with Fedora Core 5. 
2425 
2426 This patch adds a mini-allocator for executable memory, based on the
2427 block allocator.  We grab page-sized blocks and make them executable,
2428 then allocate small objects from the page.  There's a simple free
2429 function, that will free whole pages back to the system when they are
2430 empty.
2431 
2432]
2433[add time subdir
2434Simon Marlow <simonmar@microsoft.com>**20060530070721]
2435[Make rule-matching robust to lets
2436simonpj@microsoft.com**20060525154447
2437 
2438 Consider a RULE like
2439        forall arr. splitD (joinD arr) = arr
2440 
2441 Until now, this rule would not match code of form
2442        splitD (let { d = ... } in joinD (...d...))
2443 because the 'let' got in the way.
2444 
2445 This patch makes the rule-matcher robust to lets.  See comments with
2446 the Let case of Rules.match.
2447 
2448 This improvement is highly desirable in the fusion rules for NDP
2449 stuff that Roman is working on, where we are doing fusion of *overloaded*
2450 functions (which may look lazy).  The let expression that Roman tripped
2451 up on was a dictioary binding.
2452 
2453]
2454[Improve error reporting in interface typechecking
2455simonpj@microsoft.com**20060525094545]
2456[Fix egregious and long-standing tidying bug
2457simonpj@microsoft.com**20060525094300
2458 
2459 A typo in tidyAlt meant that we could get shadowing of occurrence names
2460 in the output of tidying.  (Specifically, of existentially bound type
2461 variables.)  That in turn meant that an IfaceExpr could have shadowing, so
2462 when the IfaceExpr was read in, it meant something different.
2463 That in turn led to an obscure crash like:
2464        Panic: tcIfaceTyVar
2465 
2466 Anyway, this fixes it.  MERGE into 6.4.3.
2467 
2468 
2469]
2470[Prune imports
2471simonpj@microsoft.com**20060525094251]
2472[performGC_(): don't use the existing Task, always grab a new one
2473Simon Marlow <simonmar@microsoft.com>**20060525090035]
2474[Better control of the IO manager thread; improvements to deadlock checking
2475Simon Marlow <simonmar@microsoft.com>**20060524122839
2476     
2477 In the threaded RTS on *nix platforms:
2478     
2479  - we now start the IO manager thread eagerly at startup time
2480    (previously was started on demand).
2481 
2482  - we now ask the IO manager thread to stop at shutdown
2483     
2484  - In Timer.c:handle_tick, if it looks like we might be in a
2485    deadlock, instead of calling prodOneCapability() which was known to be
2486    wrong, we now send a byte down the IO manager's pipe to wake it up.
2487   
2488 This also avoids a case of double-acquisition of a mutex, which
2489 happened if prodOneCapability() was called while the current thread
2490 was holding a mutex.
2491]
2492[TARGET_OS ==> HOST_OS
2493Simon Marlow <simonmar@microsoft.com>**20060524122103]
2494[fix a _TARGET_ARCH that should be _HOST_ARCH
2495Simon Marlow <simonmar@microsoft.com>**20060524122022]
2496[we don't need OutOfHeapHook(), and the version in the RTS has a better message
2497Simon Marlow <simonmar@microsoft.com>**20060524112007]
2498[Bug-fix to patch "Run simplifier before SpecConstr"
2499simonpj@microsoft.com**20060523130022]
2500[Run simplifier before SpecConstr
2501simonpj@microsoft.com**20060523085546
2502 
2503 Arrange to run the simplifier before SpecConstr, to (almost entirely)
2504 eliminate shadowing.
2505 
2506 Reason: otherwise SpecConstr can generate a RULE that never
2507 files; and LiberateCase specifically *does* generate lots of shadowing.
2508 
2509 See Note [Shadowing] in SpecConstr.lhs
2510 
2511 
2512]
2513[Prune imports
2514simonpj@microsoft.com**20060522192532]
2515[Add deShadowBinds
2516simonpj@microsoft.com**20060522192404
2517 
2518 Add CoreSubst.deShadowBinds, which removes shadowing from
2519 a Core term.  I thought we wanted it for SpecConstr, but in
2520 fact decided not to use it. Nevertheless, it's a useful sort
2521 of function to have around, and it has a particularly simple
2522 definition!
2523 
2524]
2525[Inline in a call argument if the caller has RULES
2526simonpj@microsoft.com**20060522163255
2527 
2528 This is an experimental change suggested by Roman.  Consider
2529       
2530        {-# INLINE f #-}
2531        f x y = ...
2532 
2533        ....(g (f a b))...
2534 
2535 where g has RULES.  Then we'd like to inline f, even though the context of
2536 the call is otherwise 100% boring -- g is lazy and we know nothing about
2537 x and y.
2538 
2539 This patch just records in the continuation that f has rules.  And does so
2540 somewhat recursively...e.g.
2541 
2542        ...(g (h (f a b)))...
2543 
2544 where g has rules. 
2545 
2546 
2547]
2548[Add idHasRules
2549simonpj@microsoft.com**20060522163109
2550 
2551 Add Id.idHasRules :: Id -> Bool, with the obvious semantics.
2552 This patch makes sense by itself, but it's just a tidy-up.
2553 
2554 
2555]
2556[Transmit inline pragmas faithfully
2557simonpj@microsoft.com**20060522110256
2558 
2559 *** WARNING: you will need to recompile your libraries
2560 ***         when you pull this patch (make clean; make)
2561 
2562 The inline pragma on wrapper-functions was being lost; this patch
2563 makes it be transmitted faithfully.
2564 
2565 The reason is that we don't write the full inlining for a wrapper into
2566 an interface file, because it's generated algorithmically from its strictness
2567 info.  But previously the inline pragma as being written out only when we
2568 wrote out an unfolding, and hence it was lost for a wrapper.
2569 
2570 This makes a particular difference when a function has a NOINLINE[k] pragma.
2571 Then it may be w/w'd, and we must retain the pragma.  It's the only consistent
2572 thing to do really.
2573 
2574 The change does change the binary format of interface files, slightly.
2575 So you need to recompile all your libraries.
2576 
2577]
2578[Improved RULE lhs typechecking; less dictionary sharing
2579simonpj@microsoft.com**20060519103433
2580 
2581 See long comment with Simplify.tcSimplifyRuleLhs.
2582 
2583 Here's the key example:
2584 
2585   RULE "g"  forall x y z. g (x == y) (y == z) = ...
2586 
2587 Here, the two dictionaries are *identical*, but we do NOT WANT to
2588 generate the rule
2589 
2590 RULE   forall x::a, y::a, z::a, d1::Eq a
2591          f ((==) d1 x y) ((>) d1 y z) = ...
2592 
2593 Instead we want
2594 
2595 RULE   forall x::a, y::a, z::a, d1::Eq a, d2:Eq a
2596          f ((==) d1 x y) ((>) d2 y z) = ...
2597 
2598]
2599[Bug-fix for infix function definitions (parse/rename)
2600simonpj@microsoft.com**20060519095022
2601   
2602 Fix a crash provoked by
2603 
2604        x `op` y = x
2605        op       = True
2606 
2607 The trouble was that there is currently a single 'infix' flag for the
2608 whole group; and RnTypes.checkPrecMatch was therefore expecting the
2609 second eqn to have two args.
2610 
2611 This fixes the crash, and also or-s the infix flags for the various
2612 eqns together; previously it was just taken from the first eqn, which
2613 was wrong.
2614 
2615 
2616]
2617[Remove misleading comments
2618simonpj@microsoft.com**20060519094936]
2619[Fix a nasty continuation-duplication bug
2620simonpj@microsoft.com**20060518163617
2621 
2622 For a long-time mkDupableCont has had a bug that allows it to duplicate
2623 an arbitrary continuation, which it should not do, of course.
2624 
2625 The bug was that in the Select case of mkDupableCont we were calling
2626 prepareCaseCont, which did not duplicate the continuation if there is
2627 but a single alternative.  This is quite right in the case of the call
2628 in rebuildCase, but quite wrong in mkDupableCont.
2629 
2630 The bug manifest as follows. In the expression
2631        f (case ... of { ..several alts.. })
2632 (when f is strict), we should transform to
2633        f (...transformed arg...)
2634 The application of f should not be pushed down (see notes with the
2635 ArgOf case of mkDupableCont.  But that was not happening in an example
2636 like this (see how the call to f is pushed inwards).
2637 
2638 f (a `div` abs (b::Int))
2639        --->
2640     case b_afT of wild_aHa { GHC.Base.I# x_aHc ->
2641     let {
2642       $j_sIe :: GHC.Prim.Int# -> GHC.Base.Int
2643       []
2644       $j_sIe =
2645        \ (ds1_aHr [Nothing OneShot] :: GHC.Prim.Int#) ->
2646          Foo7.f
2647            (case ds1_aHr of ds2_aHq {
2648               __DEFAULT ->
2649                 case a_afS of wild1_aHM { GHC.Base.I# x_aHO ->
2650                 GHC.Base.I# (GHC.Base.divInt# x_aHO ds2_aHq)
2651                 };
2652               0 -> GHC.Err.divZeroError @ GHC.Base.Int
2653             })
2654     } in
2655       case GHC.Prim.>=# x_aHc 0 of wild1_aHe [Dead Nothing] {
2656        GHC.Base.False ->
2657          let {
2658            ds1_aHr :: GHC.Prim.Int#
2659            []
2660            ds1_aHr = GHC.Prim.negateInt# x_aHc
2661          } in  $j_sIe ds1_aHr;
2662        GHC.Base.True -> $j_sIe x_aHc
2663       }
2664     }
2665 
2666 
2667]
2668[Make simplifier report which phase it is doing in -ddump output
2669simonpj@microsoft.com**20060518163448]
2670[Comments only
2671simonpj@microsoft.com**20060518163425]
2672[take parsec out of $(GhcBootLibs)
2673Simon Marlow <simonmar@microsoft.com>**20060518131506]
2674[Improve documentation of INLINE pragmas
2675simonpj@microsoft.com**20060518113212]
2676[a couple of additions
2677Simon Marlow <simonmar@microsoft.com>**20060518104025]
2678[#define _REENTRANT 1   (needed to get the right errno on some OSs)
2679Simon Marlow <simonmar@microsoft.com>**20060518103715
2680 Partial fix for hanging problems on Solaris and possibly *BSD.
2681 A similar fix is also required to libraries/base/includes/HsBase.h.
2682]
2683[Declare this file to be POSIX
2684Simon Marlow <simonmar@microsoft.com>**20060518102858
2685 This is simpler than using _POSIX_THREAD_SEMANTICS on Solaris to get
2686 the right version of ctime_r().
2687]
2688[somewhere to keep track of release notes for 6.6
2689Simon Marlow <simonmar@microsoft.com>**20060518074415]
2690[Newtype data constructors get a compulsory unfolding
2691simonpj@microsoft.com**20060517155009
2692 
2693 With this change, newtype data constructors get a "compulsory" unfolding,
2694 which means that they *must* be inlined, and no top-level definition of
2695 the constructor is provided at all.  Since these constructors are no-ops,
2696 I'm not sure why this wasn't the case all along.
2697 
2698]
2699[White space only
2700simonpj@microsoft.com**20060517154936]
2701[Retain InlinePragInfo on wrappers
2702simonpj@microsoft.com**20060517154725
2703 
2704 For some reason, when doing the worker/wrapper split, we transferred the
2705 InlinePragInfo from the original function, but expunging it from the wrapper.
2706 This meant, for example, that a NOINLINE function would have its wrapper
2707 inlined, which isn't sensible.
2708 
2709 For a change, fixing a bug involves only deleting code!
2710 
2711]
2712[Spelling correction
2713simonpj@microsoft.com**20060517154710]
2714[Retain INLINE pragma information during indirection-shorting
2715simonpj@microsoft.com**20060517154449
2716 
2717 During indirection-shorting, we were dropping the InlinePragInfo,
2718 although were were carefully retaining strictness info etc. 
2719 I think this is a long-standing bug.
2720 
2721]
2722[Improve pretty-printing
2723simonpj@microsoft.com**20060517154349]
2724[Comments only
2725simonpj@microsoft.com**20060517154304]
2726[Improve pretty-printing slightly
2727simonpj@microsoft.com**20060517154204]
2728[Let GHCi work with with Sparc32+/V8+ .o files
2729Duncan Coutts <duncan.coutts@worc.ox.ac.uk>**20060516090430
2730 Currently the GHCi linker looks exclusively for V7 ABI .o files.
2731 
2732 You can generate V8+ ABI .o files using flags to gcc such as:
2733  -optc-mcpu=ultrasparc -opta-mcpu=ultrasparc
2734 
2735 Note that this allows gcc to generate hardware integer division and
2736 hardware floating point instructions rather than using software emulation.
2737 All recent sparc hardware is V8+ or later. Perhaps we should check for the
2738 cpu generation in configure and use the later ABI if possible.
2739 
2740 Tested briefly on a SunBlade 100 (TI UltraSparc IIe) sparc-unknown-linux
2741]
2742[match up more closely with compiler/main/DynFlags.hs:machdepCCOpts
2743Simon Marlow <simonmar@microsoft.com>**20060515090031
2744 In particular, add -fno-builtin to x86 and x86_64, which was missing.
2745]
2746[set $(GhcVersion) and $(GhcPatchLevel) correctly when $(UseStage1)==YES
2747Simon Marlow <simonmar@microsoft.com>**20060510124621]
2748[.raw_s and .s live in $(odir), not the source dir
2749Simon Marlow <simonmar@microsoft.com>**20060510121524]
2750[additions from Reilly Hayes
2751Simon Marlow <simonmar@microsoft.com>**20060510120000]
2752[some tweaks to the HC bootstrapping instructions
2753Simon Marlow <simonmar@microsoft.com>**20060510115236]
2754[Ignore unboxed values in breakpoints.
2755Lemmih <lemmih@gmail.com>**20060510072722]
2756[Don't read ~/.ghci on breakpoints.
2757Lemmih <lemmih@gmail.com>**20060509223455]
2758[make it possible to define an alias for :quit
2759Simon Marlow <simonmar@microsoft.com>**20060509083124]
2760[Do not put wired-in things in interface files
2761simonpj@microsoft.com**20060508142946
2762 
2763 There is no need for wired-in things to go into interface files; the compiler
2764 knows about them anyway.  Worse, it turns ou that if they are in an interface
2765 file, they may get read in with not-quite-right type info (e.g. GHC.Err.error),
2766 and the not-quite-right thing gets into the type envt.  Than it gets used
2767 instead of the wired in thing.
2768 
2769 Best all round never to put them into interface files.  This is the way
2770 it used to be, but it looks as if it rotted away some time ago.
2771 
2772 (I noticed this when fixing unsafePerformIO stuff, becuase 'lazy' was getting
2773 an unfolding when it shouldn't.)
2774 
2775]
2776[Remove NOINLINE strictness hack
2777simonpj@microsoft.com**20060508142834
2778 
2779 The stricteness analyser used to have a HACK which ensured that NOINLNE things
2780 were not strictness-analysed.  The reason was unsafePerformIO. Left to itself,
2781 the strictness analyser would discover this strictness for unsafePerformIO:
2782        unsafePerformIO:  C(U(AV))
2783 But then consider this sub-expression
2784        unsafePerformIO (\s -> let r = f x in
2785                               case writeIORef v r s of (# s1, _ #) ->
2786                               (# s1, r #)
2787 The strictness analyser will now find that r is sure to be eval'd,
2788 and may then hoist it out.  This makes tests/lib/should_run/memo002
2789 deadlock.
2790 
2791 Solving this by making all NOINLINE things have no strictness info is overkill.
2792 In particular, it's overkill for runST, which is perfectly respectable.
2793 Consider
2794        f x = runST (return x)
2795 This should be strict in x.
2796 
2797 So the new plan is to define unsafePerformIO using the 'lazy' combinator:
2798 
2799        unsafePerformIO (IO m) = lazy (case m realWorld# of (# _, r #) -> r)
2800 
2801 Remember, 'lazy' is a wired-in identity-function Id, of type a->a, which is
2802 magically NON-STRICT, and is inlined after strictness analysis.  So
2803 unsafePerformIO will look non-strict, and that's what we want.
2804 
2805 Now we don't need the hack in the strictness analyser.
2806 
2807]
2808[Trim imports
2809simonpj@microsoft.com**20060508141804]
2810[Trim imports
2811simonpj@microsoft.com**20060508141713]
2812[GHC_MANGLER-->MANGLER
2813Simon Marlow <simonmar@microsoft.com>**20060508111206]
2814[Fix bug #763: Breakpoint mechanism crashes when there's a type error.
2815Lemmih <lemmih@gmail.com>**20060505232158]
2816[breakpointCond
2817Lemmih <lemmih@gmail.com>**20060502174340]
2818[Preserve type variable names during type inference
2819simonpj@microsoft.com**20060505153753
2820 
2821 During unification we attempt to preserve the print-names of type variables,
2822 so that type error messages tend to mention type variables using the
2823 programmer's vocabulary. 
2824 
2825 This had bit-rotted a bit when I added impredicative polymorphism; especially
2826 when unBoxing a boxy type variable we should not gratuitously lose its name.
2827 
2828]
2829[Trim imports
2830simonpj@microsoft.com**20060505150506]
2831[fixup for new source tree layout
2832Simon Marlow <simonmar@microsoft.com>**20060505114100]
2833[FPTOOLS_TOP-->GHC_TOP, and remove some references to "fptools"
2834Simon Marlow <simonmar@microsoft.com>**20060505110520]
2835[$(FPTOOLS_TOP) is now known as $(GHC_TOP)
2836Simon Marlow <simonmar@microsoft.com>**20060505110127
2837 I kept $(FPTOOLS_TOP) as an alias for $(GHC_TOP) while we switch
2838]
2839[update the build system documentation
2840Simon Marlow <simonmar@microsoft.com>**20060505105843]
2841[update for new source tree layout
2842Simon Marlow <simonmar@microsoft.com>**20060505102903]
2843[partial update for new source tree layout
2844Simon Marlow <simonmar@microsoft.com>**20060505030218]
2845[update for new source tree layout (untested)
2846Simon Marlow <simonmar@microsoft.com>**20060505081549]
2847[Print a more helpful error for find_thing
2848simonpj@microsoft.com**20060504153337]
2849[Fix a bug in rule matching
2850simonpj@microsoft.com**20060504112430
2851 
2852 The rule matcher uses a "rough-match" pre-filter, which was being too
2853 aggressive.  The case looked like this:
2854 
2855        rule:   f True
2856        expr:   case e of x { True -> f x }
2857 
2858 Jues because x doesn't immediately look like True, we shouldn't say
2859 "can't match", but that is exactly what ruleCantMatch was doing.
2860 
2861 
2862]
2863[Fix constructor-specialisation bug
2864simonpj@microsoft.com**20060504112131
2865 
2866 The constructor-specialisation optimisation was not dealing with the case
2867 of
2868        (letrec ... in f) a1 a2
2869 
2870 We need to apply constructor specialisation in the letrec; previously
2871 we were leaving it untouched on the grounds that the function part of
2872 an application is almost always a variable.
2873 
2874 But in fact, float-in immediately precedes SpecConstr, so we can get
2875 these odd-looking applications.
2876 
2877 
2878]
2879[Fix precedence for records in derived Read
2880simonpj@microsoft.com**20060504111804
2881 
2882 The derived instance for Read of records wasn't quite right.
2883 Consider
2884        data T = T1 T | T2 { x::Int }
2885 
2886 The string "T1 T2 { x=2 }" should parse correctly as
2887        T1 (T2 {x=2})
2888 because of Haskell's odd precedence rules (record construction binds
2889 even more tightly than application), but the derived Read didn't take
2890 account of that.
2891 
2892 drvrun020 is the regression test
2893 
2894 
2895]
2896[Make rules available in RHS
2897simonpj@microsoft.com**20060504111500
2898 
2899 After some earlier re-factoring, the code that was carefully trying
2900 to make RULES available in a function's own RHS was plain wrong.
2901 
2902 This commit fixes it.  Some programs should go faster!
2903 
2904]
2905[Pretty printing instance for Unfolding
2906simonpj@microsoft.com**20060504111429]
2907[small clarification
2908Simon Marlow <simonmar@microsoft.com>**20060504103414]
2909[small fix to booting instructions from #762
2910Simon Marlow <simonmar@microsoft.com>**20060504083104]
2911[$(ProjectNameShort) => ghc
2912Simon Marlow <simonmar@microsoft.com>**20060503102419]
2913[only pass -fno-unit-at-a-time to gcc if it is supported
2914Simon Marlow <simonmar@microsoft.com>**20060503093614]
2915[Arrange that -fth is no longer implied by -fglasgow-exts
2916simonpj@microsoft.com**20060426182114
2917 
2918 Messages involving Template Haskell are deeply puzzling
2919 if you don't know about TH, so it seems better to make
2920 -fth an explicit flag.  It is no longer switched on
2921 by -fglasgow-exts.
2922 
2923]
2924[remove code not required in the new source tree layout
2925Simon Marlow <simonmar@microsoft.com>**20060502114235]
2926[move "compat" earlier in the build for .hc bootstrapping
2927Simon Marlow <simonmar@microsoft.com>**20060502112001]
2928[fix ctime_r problem on Solaris (I hope)
2929Simon Marlow <simonmar@microsoft.com>**20060502111231]
2930[fix whitespace problem that shows up on Solaris (x86)
2931Simon Marlow <simonmar@microsoft.com>**20060502110001]
2932[libraries/time is boring
2933Simon Marlow <simonmar@microsoft.com>**20060502105524]
2934[add time package to libraries Makefile
2935Ashley Yakeley <ashley@semantic.org>**20060501092241]
2936[add time package to default-packages
2937Ashley Yakeley <ashley@semantic.org>**20060426070445]
2938[Fix stage2 segfault on openbsd.
2939dons@cse.unsw.edu.au**20060428074811
2940 
2941 Somewhere along the 6.5 branch, gcc started compiling the rts such that
2942 it triggers the stack smash handler, causing stage2 to by kill'd
2943 immediately. This turns off the stack protector, which will do for now.
2944 
2945]
2946[fix quoting around ${FPTOOLS_TOP_ABS} (fixes #749)
2947Simon Marlow <simonmar@microsoft.com>**20060428085252]
2948[Fix bug shown in the mod77 test.
2949Lemmih <lemmih@gmail.com>**20060427113313]
2950[Don't init root pointers if they aren't gonna be used.
2951Lemmih <lemmih@gmail.com>**20060426111143]
2952[Fix recompilation checking.
2953Simon Marlow <simonmar@microsoft.com>**20060425140932
2954 One-shot compilation was throwing away the old iface read by
2955 checkOldIface, with the result that version numbers were never being
2956 incremented.  Fixes the recomp001 test too.
2957]
2958[Solaris needs -lrt for the threaded RTS
2959Simon Marlow <simonmar@microsoft.com>**20060425082823]
2960[fix problem with binary-dist docs
2961Simon Marlow <simonmar@microsoft.com>**20060424090159]
2962[Enable breakpoint support.
2963Lemmih <lemmih@gmail.com>**20060421113112]
2964[Fixing some lexer errors with extcore
2965Josef Svenningsson <josef.svenningsson@gmail.com>**20060420222625]
2966[Extcore can now handle data types without constructors
2967Josef Svenningsson <josef.svenningsson@gmail.com>**20060420213622]
2968[Comments only
2969Josef Svenningsson <josef.svenningsson@gmail.com>**20060420213555]
2970[Resurrect ProjectName
2971sven.panne@aedion.de**20060421085125]
2972[Remove the section on platform support, link to the wiki page
2973Simon Marlow <simonmar@microsoft.com>**20060420125555
2974 The section in the building guide was becoming out of date, a wiki
2975 page is much more likely to be kept fresh.
2976]
2977[Fix workaround for a GHC 6.4 bug
2978rl@cse.unsw.edu.au**20060420044223]
2979[hslibs is dead, Jim...
2980sven.panne@aedion.de**20060419144609]
2981[Synched .spec file with reality
2982sven.panne@aedion.de**20060419143138]
2983[Add .spec file to source distribution
2984sven.panne@aedion.de**20060419103725]
2985[remove paragraph about mutable objects that doesn't apply now
2986Simon Marlow <simonmar@microsoft.com>**20060419082038]
2987[HsBool should be HsInt, not StgBool
2988Simon Marlow <simonmar@microsoft.com>**20060418144214
2989 StgBool is mapped to C's int type.  GHC doesn't currently know the
2990 size of a C int on the target arch, it's easier to use StgInt instead.
2991 I guess nobody ever uses Bool arguments to foreign imports/exports.
2992]
2993[handle Bool arg to foreign import "wrapper"
2994Simon Marlow <simonmar@microsoft.com>**20060418143936
2995 Fixes #746
2996]
2997[update commentry for foreign import "wrapper" handling
2998Simon Marlow <simonmar@microsoft.com>**20060418143714]
2999[remove vestiges of ByteArray and MutableByteArray, which are no more
3000Simon Marlow <simonmar@microsoft.com>**20060418143641]
3001[Comment only
3002simonpj@microsoft.com**20060418125624]
3003[Fix rank-validity testing
3004simonpj@microsoft.com**20060418125350
3005 
3006 GHC does not now do "hoisting" as it used to.  Instead, it allows
3007 foralls to the right of fuction arrows, as well as to the left.
3008 
3009 But the type-validity tester hadn't caught up.  This commit fixes
3010 it. The test is tc203.
3011 
3012 Incidentally, GHC still doesn't let you write
3013        forall a. Eq a => forall b. b -> b
3014 because we get a zillion reduce/reduce errors if we allow that.  I'm
3015 sure it's fixable.  But meanwhile you have to use an auxiliary type
3016 synonym, which is a bit stupid.
3017 
3018 
3019]
3020[Make the initial rdr and type scope available in the ghc-api.
3021Lemmih <lemmih@gmail.com>**20060418023606]
3022[Fix minor bug in Linker.withExtendedLinkEnv
3023Lemmih <lemmih@gmail.com>**20060418023518]
3024[Export 'insertSymbol' and 'insertStableSymbol'.
3025Lemmih <lemmih@gmail.com>**20060418021806
3026 
3027 'insertStableSymbol' is used for exporting closures that are affected by the GC.
3028 
3029]
3030[Allow $x, as well as $(x), at top level in TH
3031simonpj@microsoft.com**20060414121907
3032 
3033 Bulat pointed out that in Template Haskell
3034    $x
3035 is allowed instead of
3036    $(x)
3037 in expressions, but not at the top level of modules.
3038 
3039 This commit fixes the omission.  Now you can say
3040 
3041        f x = x
3042        $h
3043        data T = T
3044 
3045 and the $h will run Template Haskell just as you'd expect.
3046 
3047]
3048[Fix TH erorr recovery (test is TH_recover)
3049simonpj@microsoft.com**20060414120411]
3050[Comments only
3051simonpj@microsoft.com**20060414120359]
3052[Recover gracefully from a Template Haskell programmers error
3053simonpj@microsoft.com**20060414115831
3054 
3055 If a TH programmer uses a type constructor as a data constructor,
3056 GHC simply crashed.  This commit makes it report the error in a
3057 graceful way.
3058 
3059]
3060[Document newtype-unwrapping for IO in FFI
3061simonpj@microsoft.com**20060414105212]
3062[Cosmetics in SpecConstr
3063simonpj@microsoft.com**20060412152721
3064 
3065 SpecConstr currently uses substExpr for tiresome reasons to do with
3066 GADTs.  Unfortunately the substExpr generates some WARNINGS (when DEBUG)
3067 is on, because we aren't adding all the in-scope Ids to the in-scope
3068 set of the substitution.
3069 
3070 When we move to FC these substExprs will go away, so I'm not going to
3071 worry about this now.
3072 
3073]
3074[Improve pruning of case alternatives to account for GADTs
3075simonpj@microsoft.com**20060412152327
3076 
3077 Consider
3078 
3079   data T a where
3080     T1 :: T Int
3081     T2 :: T Bool
3082     T3 :: T Char
3083 
3084   f :: T Bool -> Int
3085   f x = case x of
3086          DEFAULT -> ...
3087          T2 -> 3
3088 
3089 Here the DEFAULT case covers multiple constructors (T1,T3), but none
3090 of them can match a scrutinee of type (T Bool).  So we can prune away
3091 the default case altogether.
3092 
3093 In implementing this, I re-factored this bit of the simplifier, elminiating
3094 prepareAlts from SimplUtils, and putting all the work into simplAlts in
3095 Simplify
3096 
3097 The proximate cause was a program written by Manuel using PArrays
3098 
3099]
3100[Fix a bug in optimising division to shift right
3101Simon Marlow <simonmar@microsoft.com>**20060412144247
3102 Division by an integral log2 can't be directly optimised to a shift
3103 right, because shift right behaves like a division that rounds to
3104 negative infinity, whereas we want one that rounds to zero.  Fix this
3105 by adding (divisor-1) to the dividend when it is negative before
3106 shifting.  We do this without jumps, generating very slightly worse
3107 code than gcc, which uses conditional moves on CPUs that support it.
3108]
3109[Omit lndir on Windows, as it used to be
3110simonpj@microsoft.com**20060411135334]
3111[remove a trace
3112Simon Marlow <simonmar@microsoft.com>**20060411131531]
3113[Allow IO to be wrapped in a newtype in foreign import/export
3114simonpj@microsoft.com**20060411120441
3115 
3116 Up to now, the silent unwrapping of newtypes in foreign import/export
3117 has been limited to data values.  But it's useful for the IO monad
3118 itself:
3119 
3120        newtype MyIO a = MIO (IO a)
3121 
3122        foreign import foo :: Int -> MyIO Int
3123 
3124 This patch allows the IO monad to be
3125 wrapped too. This applies to foreign import "dynamic" and "wrapper",
3126 thus
3127    foreign import "wrapper" foo :: MyIO () -> HisIO (FunPtr (MyIO ()))
3128 
3129 Warning: I did on the plane, and I'm no longer sure if its 100%
3130 complete, so needs more testing.  In particular the wrapper/dynamic bit.
3131 
3132]
3133[Improve newtype deriving
3134simonpj@microsoft.com**20060402215911
3135 
3136 Ross Paterson pointed out a useful generalisation of GHC's
3137 newtype-deriving mechanism.  This implements it.  The idea
3138 is to allow
3139        newtype Wrap m a = Wrap (m a) deriving (Monad, Eq)
3140 where the representation type doesn't start with a type
3141 constructor.
3142 
3143 Actually GHC already *did* implement this, but the eta-ok
3144 check in TcDeriv missed a case, so there was a lurking bug.
3145 
3146 This patches fixes the documentation too.  drvrun019 tests.
3147 
3148 
3149]
3150[add take to the list of functions deforestable
3151Simon Marlow <simonmar@microsoft.com>**20060411090131]
3152[avoid versionitis in Numeric.showHex (should fix tcrun007)
3153Simon Marlow <simonmar@microsoft.com>**20060411085009]
3154[add a note about full-laziness
3155Simon Marlow <simonmar@microsoft.com>**20060410093824]
3156[robustify the test for the top of the tree a little
3157Simon Marlow <simonmar@microsoft.com>**20060410082224]
3158[Make darcs-all work without a ghc toplevel directory
3159Josef Svenningsson <josef.svenningsson@gmail.com>**20060407161738]
3160[Fix typo in darcsall warning
3161Josef Svenningsson <josef.svenningsson@gmail.com>**20060407161335]
3162[fix source dists
3163Simon Marlow <simonmar@microsoft.com>**20060407150045]
3164[add a README for binary dists
3165Simon Marlow <simonmar@microsoft.com>**20060407143832]
3166[fix binary dists
3167Simon Marlow <simonmar@microsoft.com>**20060407143822]
3168[remove the last bits of the ghc/ subdir
3169Simon Marlow <simonmar@microsoft.com>**20060407085219]
3170[TAG 07.04.06
3171Lemmih <lemmih@gmail.com>**20060407130411]
3172Patch bundle hash:
3173d04eb54382c3289b7ebab3df87984b44f750a0ac