Ticket #920: gcc-4.0-mingw-gettimeofday.dpatch

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