Ticket #3019: membar#StoreLoad.dpatch

File membar#StoreLoad.dpatch, 164.5 KB (added by duncan, 3 years ago)

Specify the sparc membar #StoreLoad? parameter

Line 
1Thu Feb 12 15:47:39 CET 2009  Duncan Coutts <duncan@haskell.org>
2  * Specify the sparc membar #StoreLoad parameter
3  Also fix the related comments
4
5New patches:
6
7[Specify the sparc membar #StoreLoad parameter
8Duncan Coutts <duncan@haskell.org>**20090212144739
9 Also fix the related comments
10] {
11hunk ./includes/SMP.h 200
12 #elif powerpc_HOST_ARCH
13     __asm__ __volatile__ ("msync" : : : "memory");
14 #elif sparc_HOST_ARCH
15-    /* Sparc in TSO mode does not require write/write barriers. */
16-    __asm__ __volatile__ ("membar" : : : "memory");
17+    __asm__ __volatile__ ("membar #StoreLoad" : : : "memory");
18 #elif !defined(WITHSMP)
19     return;
20 #else
21hunk ./includes/SMP.h 217
22 #elif powerpc_HOST_ARCH
23     __asm__ __volatile__ ("lwsync" : : : "memory");
24 #elif sparc_HOST_ARCH
25-    /* Sparc in TSO mode does not require write/write barriers. */
26+    /* Sparc in TSO mode does not require load/load barriers. */
27     __asm__ __volatile__ ("" : : : "memory");
28 #elif !defined(WITHSMP)
29     return;
30}
31
32Context:
33
34[general tidy up
35Simon Marlow <marlowsd@gmail.com>**20090211152429
36 Ignore-this: 9b6bbb08749b372bdd387a25405570f4
37]
38[one more bugfix: a load/load memory barrier is required in stealWSDeque_()
39Simon Marlow <marlowsd@gmail.com>**20090211152421
40 Ignore-this: d89fff02d6b8c63272c9171e64d3510b
41]
42[Fix trac #3001: Biographical profiling segfaults
43Ian Lynagh <igloo@earth.li>**20090211153457
44 We were zeroing the wrong memory
45]
46[Tweak the mangler; fixes trac #2871
47Ian Lynagh <igloo@earth.li>**20090211150340
48 It was getting confused by lines like:
49  # 9 "C:\Temp\/ghc620_0/ghc620_0.hc" 1
50]
51[On sparc, pass -mcpu=v9 when assembling with object splitting enabled
52Ian Lynagh <igloo@earth.li>**20090211141600
53 Fixes trac #2872.
54]
55[Turn another ASSERT into a WARN (temproraily)
56simonpj@microsoft.com**20090211094028
57 Ignore-this: 8982802501f7966ce482ef360aac6ec0
58 
59 Fix Trac #3011 by temporarily making it only a WARN if we assign twice
60 to the same unification variable.
61 
62 
63]
64[Improve documentation for LANGUAGE pragma (esp wrt cpp)
65simonpj@microsoft.com**20090211093939
66 Ignore-this: 2c690e39766bb9c49c0e7bf8faecad47
67]
68[Don't use the absolute path to the bindist tarball
69Ian Lynagh <igloo@earth.li>**20090210215215
70 On Windows, we end up doing something like
71     rsync c:/build/ghc-6.10.1-unknown-mingw32.tar.bz2 haskell.org:dist
72 and it thinks that it is meant to get the file from the host called "c".
73 Now we just do
74     rsync ghc-6.10.1-unknown-mingw32.tar.bz2 haskell.org:dist
75 so rsync understand what we mean.
76]
77[Fix cleaning and installing the libraries
78Ian Lynagh <igloo@earth.li>**20090210225538
79 When cleaning or installing, we need to ignore what $stage is, and
80 just clean/install all the libraries.
81]
82[scheduleYield(): check the wakeup queue before yielding
83Simon Marlow <marlowsd@gmail.com>**20090209112536
84 Ignore-this: d4aaf83d79ad8ca3ac2d904234eef599
85]
86[Improvements to the "can't find module" error message (#2980)
87Simon Marlow <marlowsd@gmail.com>**20090206165743
88 Ignore-this: 2de565e20f68ebdc3865df7391c81437
89 If the module was found in multiple hidden packages, we list them all.
90 
91 Could not find module `Data.Generics':
92   it is a member of the hidden package `base-3.0.3.0'
93   it is a member of the hidden package `syb'
94   Use -v to see a list of the files searched for.
95]
96[build fix: add -I../rts/parallel
97Simon Marlow <marlowsd@gmail.com>**20090206145921
98 Ignore-this: b4ab2760dd111b790421cf451289681f
99]
100[crucial bugfix: add a store/load memory barrier to popWSDeque()
101Simon Marlow <marlowsd@gmail.com>**20090206130804
102 Ignore-this: 57d044afb7c635af2948d24d9c43a23f
103]
104[bugfix: an unsigned comparison should be signed
105Simon Marlow <marlowsd@gmail.com>**20090206130745
106 Ignore-this: 981510f94dcb81e5896703f610b933e5
107]
108[tiny cleanup
109Simon Marlow <marlowsd@gmail.com>**20090206130715
110 Ignore-this: 9497f8f6fbce2d0c23fd1d0eee4cdeda
111]
112[add debugging code and comments
113Simon Marlow <marlowsd@gmail.com>**20090206130609
114 Ignore-this: 5f0e1e3fa0148da079f13eb07430c09b
115]
116[add an assertion
117Simon Marlow <marlowsd@gmail.com>**20090206130338
118 Ignore-this: f4c0f539142c0dfdc57c70d1c6136f10
119]
120[add a single-threaded version of cas()
121Simon Marlow <marlowsd@gmail.com>**20090206130130
122 Ignore-this: 80d5e7a3c35182d7d87e95c5c4096821
123]
124[add a store/load memory barrier
125Simon Marlow <marlowsd@gmail.com>**20090206130115
126 Ignore-this: e0bc8f61877868ec8c2ccd9dee8f956d
127]
128[Refactor the spark queue implementation into a generic work-stealing deque
129Simon Marlow <marlowsd@gmail.com>**20090205124648
130 Ignore-this: 1a7ee74388f30301d154d050d853a7a9
131 So we can use this abstraction elsewhere in the RTS
132]
133[Handle the case where setitimer(ITIMER_VIRTUAL) is not always available
134Ian Lynagh <igloo@earth.li>**20090208191431
135 Patch from sthibaul. Fixes trac #2883.
136]
137[Correct an IsFunction that should be IsData
138Ian Lynagh <igloo@earth.li>**20090207005834]
139[Fix calling maths functions when compiling via C
140Ian Lynagh <igloo@earth.li>**20090206223119]
141[Add a panic to fix the build on amd64/Linux; to be fixed properly later
142Ian Lynagh <igloo@earth.li>**20090206153135]
143[Fix the build on OS X: only understands .space, not .skip
144Ian Lynagh <igloo@earth.li>**20090206151203]
145[Fix building with GHC 6.8
146Ian Lynagh <igloo@earth.li>**20090206143432]
147[Fix the build on amd64/Linux
148Ian Lynagh <igloo@earth.li>**20090206143420]
149[When generating C, don't pretend functions are data
150Ian Lynagh <igloo@earth.li>**20090206140249
151 We used to generated things like:
152     extern StgWordArray (newCAF) __attribute__((aligned (8)));
153     ((void (*)(void *))(W_)&newCAF)((void *)R1.w);
154 (which is to say, pretend that newCAF is some data, then cast it to a
155 function and call it).
156 This goes wrong on at least IA64, where:
157     A function pointer on the ia64 does not point to the first byte of
158     code. Intsead, it points to a structure that describes the function.
159     The first quadword in the structure is the address of the first byte
160     of code
161 so we end up dereferencing function pointers one time too many, and
162 segfaulting.
163]
164[NCG: Validate fixes
165Ben.Lippmeier@anu.edu.au**20090205080624]
166[NCG: Split RegAllocInfo into arch specific modules
167Ben.Lippmeier@anu.edu.au**20090204055126]
168[NCG: Move RegLiveness -> RegAlloc.Liveness
169Ben.Lippmeier@anu.edu.au**20090204035250]
170[NCG: Rename MachRegs, MachInstrs -> Regs, Instrs to reflect arch specific naming
171Ben.Lippmeier@anu.edu.au**20090204034107]
172[NCG: Split MachRegs.hs into arch specific modules
173Ben.Lippmeier@anu.edu.au**20090204030729]
174[NCG: Fix validate
175Ben.Lippmeier@anu.edu.au**20090205030642]
176[SPARC NCG: Fix some haddock problems.
177Ben.Lippmeier@anu.edu.au**20090204043802]
178[SPARC NCG: Add Pwr callish mach op
179Ben.Lippmeier@anu.edu.au**20090204000905]
180[NCG: Split MachInstrs into arch specific modules
181Ben.Lippmeier@anu.edu.au**20090203081327]
182[NCG: Move the graph allocator into its own dir
183Ben.Lippmeier@anu.edu.au**20090203071411]
184[SPARC NCG: Update cabal file
185Ben.Lippmeier@anu.edu.au**20090203062746]
186[SPARC NCG: Give regs o0-o5 back to the allocator
187Ben.Lippmeier@anu.edu.au**20090203062433]
188[NCG: Split out joinToTargets from linear alloctor into its own module.
189Ben.Lippmeier@anu.edu.au**20090203040540
190 
191  * Also fix a nasty bug when creating fixup code that has a cyclic
192    register movement graph.
193]
194[NCG: Split linear allocator into separate modules.
195Ben.Lippmeier@anu.edu.au**20090202055301]
196[SPARC NCG: Keep track of destinations when doing a tabled jump
197Ben.Lippmeier@anu.edu.au**20090123052247]
198[SPARC NCG: Do general 64 bit addition and conversion
199Ben.Lippmeier@anu.edu.au**20090123035152]
200[SPARC NCG: Don't need a write barrier for store synchronisation on SPARC under TSO.
201Ben.Lippmeier@anu.edu.au**20090123005051]
202[SPARC NCG: Use .skip instead of .space in assembler
203Ben.Lippmeier@anu.edu.au**20090122225150
204 
205  - In the GNU assembler they mean the same thing
206  - The Solaris assembler only has .skip
207 
208]
209[Check -XGADTs in (a) type family decls (b) pattern matches
210simonpj@microsoft.com**20090204150919
211 Ignore-this: 19a6268814440493eea436c48daa8414
212 
213 Following Trac #2905, we now require -XGADTs for *pattern matches* on
214 GADTs, not just on *definitions*.
215 
216 Also I found that -XGADTs wasn't being checked when declaring type families,
217 so I fixed that too.
218 
219]
220[Improve error reports for kind checking (Trac #2994)
221simonpj@microsoft.com**20090204150736
222 Ignore-this: 402fe9f025abf8e2a3088383c23a89f6
223 
224 I followed the suggestion in Trac #2994, which took longer than I
225 expected.  As usual I did a bit of tidying up at the same time,
226 and improved a few other error reports.
227 
228]
229[Further wibbles to 'deriving' for functor-like things
230simonpj@microsoft.com**20090204150625
231 Ignore-this: 1a69dfc25f741148b5b817aa66803d5c
232]
233[leave out rts/ from include-dirs in the inplace rts package
234Simon Marlow <marlowsd@gmail.com>**20090204104748
235 Ignore-this: 3a5c7e53121421600aa21a53b57cc9fb
236 it shouldn't be there, and might hide bugs
237]
238[Fix Trac #2999: change an ASSERT to a WARN
239simonpj@microsoft.com**20090204083800
240 Ignore-this: db6fdc200a06ba5f067d567ea64f89e1
241 
242 A bug in the constraint simplifier means that an equality can be solved
243 twice.  It's harmless, and will go away with the new constraint simplifier.
244 Hence warning, to avoid unnecessary outright failure on eg Trac #2999.
245 
246]
247[Improve transferPolyIdInfo for value-arg abstraction
248simonpj@microsoft.com**20090204082534
249 Ignore-this: 687def702522c3516050de1e14e5219f
250 
251 If we float a binding out of a *value* lambda, the fixing-up of IdInfo
252 is a bit more complicated than before.  Since in principle FloatOut
253 can do this (and thus can do full lambda lifting), it's imporrtant
254 that transferPolyIdInfo does the Right Thing.
255 
256 This doensn't matter unless you use FloatOut's abilty to lambda-lift,
257 which GHC mostly doesn't, yet.  But Max used it and tripped over this bug.
258 
259]
260[Two small improvements to LiberateCase
261simonpj@microsoft.com**20090204081919
262 Ignore-this: ca41d8d9ef1b409b32761b1a69bd1400
263 
264 Max Bolingbroke suggested these two small improvements to LiberateCase
265 (most of the size increase is comments :-)):
266 
267 a) Do LiberateCase on small functions even if they are mutually recursive
268    See Note [Small enough]
269 
270 b) Don't do LiberateCase on functions for which it'd be fruitless,
271    namely when a free varible is scrutinised *outside* the function
272    See Note [Avoiding fruitless liberate-case]
273 
274 There is virtually no effect on nofib, but Max tripped over cases
275 where it mattered slightly.
276 
277 
278]
279[Robustify lookupFamInstEnv, plus some refactoring
280simonpj@microsoft.com**20090115134818
281 Ignore-this: 493fdbd370a714bf9677b16d2ba533d7
282 
283 This patch deals with the following remark
284 
285      Suppose we have
286             type family T a :: * -> *
287             type instance T Int = []
288 
289      and now we encounter the type (T Int Bool).  If we call
290      lookupFamInstEnv on (T Int Bool) we'll fail, because T has arity 1.
291      Indeed, I *think* it's a precondition of lookupFamInstEnv that the
292      supplied types exactly match the arity of the type function.  But
293      that precondition is neither stated, nor is there an assertion to
294      check it.
295 
296 With this patch, lookupFamInstEnv can take "extra" type arguments in
297 the over-saturated case, and does the Right Thing.
298 
299 There was a nearly-identical function lookupFamInstEnvUnify, which
300 required the precisely analogous change, so I took the opportunity
301 to combine the two into one function, so that bugs can be fixed in one
302 place.  This was a bit harder than I expected, but I think the result
303 is ok.  The conflict-decision function moves from FamInst to FamInstEnv.
304 Net lines code decreases, although there are more comments.
305 
306 
307 
308]
309[Robustify lookupFamInstEnv
310simonpj@microsoft.com**20090114140117
311 Ignore-this: ee312b2b59155102d88397a33c591ad2
312 
313 Suppose we have
314         type family T a :: * -> *
315         type instance T Int = []
316 
317 and now we encounter the type (T Int Bool).  That is perfectly
318 fine, even though T is over-saturated here.
319 
320 This patch makes lookupFamInstEnv robust to such over-saturation.
321 Previously one caller (TcTyFuns.tcUnfoldSynFamInst) dealt with
322 the over-saturation case, but the others did not. It's better
323 to desl with the issue at the root, in lookupFamInstEnv itself.
324 
325]
326[Improve trace message
327simonpj@microsoft.com**20090113175806
328 Ignore-this: 2276ebc89246553cbb6a1a4cd7c76fd9
329]
330[Build dph with the stage2 compiler
331Ian Lynagh <igloo@earth.li>**20090203213613
332 It will use TH, so needs to be built with stage2.
333]
334[Optimise writing out the .s file
335Simon Marlow <marlowsd@gmail.com>**20090202145013
336 I noticed while working on the new IO library that GHC was writing out
337 the .s file in lots of little chunks.  It turns out that this is a
338 result of using multiple printDocs to avoid space leaks in the NCG,
339 where each printDoc is finishing up with an hFlush. 
340 
341 What's worse, is that this makes poor use of the optimisation inside
342 printDoc that uses its own buffering to avoid hitting the Handle all
343 the time.
344 
345 So I hacked around this by making the buffering optimisation inside
346 Pretty visible from the outside, for use in the NCG.  The changes are
347 quite small.
348]
349[better error message for missing package-qualified modules in ghc -M
350Simon Marlow <marlowsd@gmail.com>**20090123142001]
351[add wiki commentary links
352Simon Marlow <marlowsd@gmail.com>**20090130110844
353 Ignore-this: 3f27b426bc5ad54157edc06a421e28bf
354]
355[Force the result of user-defined commands
356Simon Marlow <marlowsd@gmail.com>**20090130091919
357 Ignore-this: f756d00cc062072e1945d63cfbbeb98
358 so that exceptions are reported with "*** Exception" instead of as a panic.
359]
360[Improve error reporting for precedence errors
361simonpj@microsoft.com**20090202164450
362 Ignore-this: 493643a40c119ba6ad54d0f220dc4606
363 
364 Adopt the suggestion of Trac #2993, and tidy up the reporting of
365 precedence parsing errors somewhat.
366 
367]
368[Add the ability to derive instances of Functor, Foldable, Traversable
369simonpj@microsoft.com**20090202134829
370 Ignore-this: f3013fefdd65f75fb5060ef0e002f40e
371 
372 This patch is a straightforward extension of the 'deriving' mechanism.
373 The ability to derive classes Functor, Foldable, Traverable is controlled
374 by a single flag  -XDeriveFunctor.  (Maybe that's a poor name.)
375 
376 Still to come: documentation
377 
378 Thanks to twanvl for developing the patch
379 
380 
381]
382[Comments about injecting implicit bindings
383simonpj@microsoft.com**20090130175403
384 Ignore-this: 7aa1a69f5a16811272bed0683234aca3
385]
386[Warn in configure if it looks like make 3.80 is about to be used
387Ian Lynagh <igloo@earth.li>**20090201203505
388 We get caught by
389     http://savannah.gnu.org/bugs/index.php?1516
390     $(eval ...) inside conditionals causes errors
391 with make 3.80, so warn the user if it looks like they're about to
392 try to use it.
393]
394[Fix Trac #2985: generating superclasses and recursive dictionaries
395simonpj@microsoft.com**20090130152738
396 Ignore-this: 921ab14e850085ddbe545b078e02120b
397 
398 The Note [Recursive instances and superclases] explains the subtle
399 issues to do with generating the bindings for superclasses when
400 we compile an instance declaration, at least if we want to do the
401 clever "recursive superclass" idea from the SYB3 paper.
402 
403 The old implementation of tcSimplifySuperClasses stumbled when
404 type equalities entered the picture (details in the Note); this
405 patch fixes the problem using a slightly hacky trick.  When we
406 re-engineer the constraint solver we'll want to keep an eye on
407 this.
408 
409 Probably worth merging to the 6.10 branch.
410 
411 
412]
413[White space only
414simonpj@microsoft.com**20090130152705
415 Ignore-this: fdc9c862fa91a57bdb81b7370eb482bd
416]
417[Two more wibbles to CorePrep (fixes HTTP package and DPH)
418simonpj@microsoft.com**20090129131954
419 Ignore-this: ee42b5f5a73a5277b5fd0e8c679e8fbe
420 
421 Ensuring that
422   a) lambdas show up only on the RHSs of binding after CorePrep
423   b) the arity of a binding exactly matches the maifest lambdas
424 is surprisingly tricky.
425 
426 I got it wrong (again) in my recent CorePrep shuffling, which broke
427 packages HTTP and DPH.  This patch fixes both.
428 
429]
430[Remove the doc/ contents from the GMP tarball
431Ian Lynagh <igloo@earth.li>**20090128200749
432 They are GFDLed, which causes problems for Debian
433]
434[#2973: we should virtualise the CWD inside the GHC API, not in the client
435Simon Marlow <marlowsd@gmail.com>**20090127121648
436 Ignore-this: 5d57181d25a0661ad20fa48154f4a80
437 The problem is that we install the client's CWD before calling
438 runStmt, but runStmt has to load modules before running the code.  We
439 need to install the CWD just before running the code instead, which
440 means it has to be done inside runStmt (and resume).
441]
442[Fix detection of i386 vs. x86_64 for -pc-solaris
443Simon Marlow <marlowsd@gmail.com>**20090127095343
444 Ignore-this: b415138105477e7edab96994babbe6d2
445 From #2951
446]
447[Implement #2191 (traceCcs# -- prints CCS of a value when available -- take 3)
448Samuel Bronson <naesten@gmail.com>**20090127084825
449 Ignore-this: ede3f18c70cfb7979ef21d7e8077dad6
450 In this version, I untag R1 before using it, and even enter R2 at the
451 end rather than simply returning it (which didn't work right when R2
452 was a thunk).
453]
454[add comment for ASSERT_LOCK_HELD()
455Simon Marlow <marlowsd@gmail.com>**20090126140030
456 Ignore-this: c3ce1e8df9d94eb92a17f4f58c496a41
457]
458[Fix #2961: we lost some of the generated code for stack args in genCCall
459Simon Marlow <marlowsd@gmail.com>**20090126150209
460 Ignore-this: 77de911bfc98ecca566f1744dfe75a7b
461 A real bug in the x86_64 native code gen: nice!
462 
463 This bug would have been caught by -Wall, and I would have gone though
464 and Walled this file but I know Ben is hacking on this file quite
465 heavily and I don't want to create undue conflicts.  Ben: it would be
466 nice to enable -Wall here when you have time.
467]
468[Make the libffi patch files portable
469Ian Lynagh <igloo@earth.li>**20090123180015
470 Solaris's patch can't apply them if the lines beginning "---" aren't
471 preceeded by a "diff -ur foo bar" line.
472]
473[SPARC NCG: Also do misaligned reads (this time for sure!)
474Ben.Lippmeier@anu.edu.au**20090122092156]
475[SPARC NCG: Also do misaligned reads
476Ben.Lippmeier@anu.edu.au**20090121232423]
477[When converting TH syntax to GHC syntax, need to put sections in parentheses
478Ian Lynagh <igloo@earth.li>**20090121141706
479 Fixes trac #2956
480]
481[SPARC NCG: Add a SPARC version of rts_mkInt64 that handles misaligned closure payloads.
482Ben.Lippmeier@anu.edu.au**20090121052334]
483[SPARC NCG: Reenable out of line 32 bit float ops
484Ben.Lippmeier@anu.edu.au**20090121034716]
485[SPARC NCG: Clean up formatting and add comments in genCCall
486Ben.Lippmeier@anu.edu.au**20090121025549]
487[SPARC NCG: Fix format problem when converting float to int
488Ben.Lippmeier@anu.edu.au**20090121012624]
489[SPARC NCG: fill branch delay slot after tabled jump (doh!)
490Ben.Lippmeier@anu.edu.au**20090121003729]
491[SPARC NCG: Add tabled switch
492Ben.Lippmeier@anu.edu.au**20090120214914]
493[SPARC NCG: Fix 64bit integers returned from ccalls
494Ben.Lippmeier@anu.edu.au**20090120090617]
495[#2875: Correct SYB's representation of Char
496'Jose Pedro Magalhaes <jpm@cs.uu.nl>'**20090119112321]
497[Fix #2759: add ability to serialize Rational
498'Jose Pedro Magalhaes <jpm@cs.uu.nl>'**20081209125551]
499[SPARC NCG: Fix warnings
500Ben.Lippmeier@anu.edu.au**20090120075100]
501[SPARC NCG: Remove a comment that was confusing haddock
502Ben.Lippmeier@anu.edu.au**20090116011853]
503[SPARC NCG: ppr 64 bit store sizes
504Ben.Lippmeier@anu.edu.au**20090120074000]
505[SPARC NCG: Fix generation of 64 bit ops on 32 bit sparc
506Ben.Lippmeier@anu.edu.au**20090120071536]
507[SPARC NCG: Add support for hardware divide
508Ben.Lippmeier@anu.edu.au**20090120052113]
509[SPARC NCG: Redo code for integer sign extension
510Ben.Lippmeier@anu.edu.au**20090115084105]
511[SPARC NCG: Fix signed/unsigned operand format bug
512Ben.Lippmeier@anu.edu.au**20090115080004]
513[More fixes to the SPARC native code generator
514Ben.Lippmeier@anu.edu.au**20090115055727
515 
516  * Fix loading of 64bit floats
517  * Put SRT and other read only static data in the .text segment
518]
519[Start fixing the SPARC native code generator
520Ben.Lippmeier@anu.edu.au**20090114054416
521 
522   * Use BlockIds in branch instructions instead of Imms.
523   * Assign FP values returned from C calls to the right regs
524   * Fix loading of F32s
525   * Add a SPARC version of the FreeRegs map to the linear allcator.
526]
527[Fix some holes in the SPARC native code generator.
528Ben.Lippmeier@anu.edu.au**20090112063310
529 
530 This makes about half the tests in codeGen/should_run work.
531]
532[Untag closure pointers before trying to print them.
533Ben.Lippmeier@anu.edu.au**20090112053421
534 
535 In RTS tracing code, need to untag the pointer before trying
536 to load the info table in printClosure()
537]
538[Add missing documention of -Da DEBUG: apply flag to RTS help.
539Ben.Lippmeier@anu.edu.au**20090112005625]
540[Better panic message in RegAllocLinear
541Ben.Lippmeier@anu.edu.au**20090110025802]
542[Make the SPARC NCG compile again - it's still broken though.
543Ben.Lippmeier@anu.edu.au**20090110014418]
544[Enable the native code generator for SPARC
545Ben.Lippmeier@anu.edu.au**20090105070429]
546[Always use PTHREAD_MUTEX_ERRORCHECK to create mutexes when -DDEBUG
547Ian Lynagh <igloo@earth.li>**20090118193328
548 Linux defines PTHREAD_MUTEX_ERRORCHECK = PTHREAD_MUTEX_ERRORCHECK_NP
549 anyway, so there's no need to special-case it.
550]
551[Use error-checking mutexes on all platforms when DEBUG is on
552Ian Lynagh <igloo@earth.li>**20090117215931
553 Otherwise ASSERT_LOCK_HELD will cause deadlocks
554]
555[Reinstate: Always check the result of pthread_mutex_lock() and pthread_mutex_unlock().
556Ian Lynagh <igloo@earth.li>**20090117200955
557 Sun Jan  4 19:24:43 GMT 2009  Matthias Kilian <kili@outback.escape.de>
558     Don't check pthread_mutex_*lock() only on Linux and/or only if DEBUG
559     is defined. The return values of those functions are well defined
560     and should be supported on all operation systems with pthreads. The
561     checks are cheap enough to do them even in the default build (without
562     -DDEBUG).
563     
564     While here, recycle an unused macro ASSERT_LOCK_NOTHELD, and let
565     the debugBelch part enabled with -DLOCK_DEBUG work independently
566     of -DDEBUG.
567]
568[Initialise and deinitialise the file_lock_mutex
569Ian Lynagh <igloo@earth.li>**20090117023947]
570[Create package.conf when installing a bindist
571Ian Lynagh <igloo@earth.li>**20090118110654]
572[validate fix on 32-bit
573Simon Marlow <marlowsd@gmail.com>**20090114162834]
574[fix validate on Windows
575Simon Marlow <marlowsd@gmail.com>**20090114155842]
576[UNDO: Always check the result of pthread_mutex_lock() and pthread_mutex_unlock().
577Simon Marlow <marlowsd@gmail.com>**20090116114339
578 Ignore-this: 6cc82d384582097785d78fba46ca29d2
579 This patch caused problems on Mac OS X, undoing until we can do it better.
580 
581 rolling back:
582 
583 Sun Jan  4 19:24:43 GMT 2009  Matthias Kilian <kili@outback.escape.de>
584   * Always check the result of pthread_mutex_lock() and pthread_mutex_unlock().
585   
586   Don't check pthread_mutex_*lock() only on Linux and/or only if DEBUG
587   is defined. The return values of those functions are well defined
588   and should be supported on all operation systems with pthreads. The
589   checks are cheap enough to do them even in the default build (without
590   -DDEBUG).
591   
592   While here, recycle an unused macro ASSERT_LOCK_NOTHELD, and let
593   the debugBelch part enabled with -DLOCK_DEBUG work independently
594   of -DDEBUG.
595   
596 
597     M ./includes/OSThreads.h -30 +10
598]
599[Update config.guess, config.sub and install.sh from automake-1.10.2
600Simon Marlow <marlowsd@gmail.com>**20090116095311
601 Ignore-this: cdc19dd28053a6a71283776ecb802c62
602 In particular, config.guess should now know about x86_64-pc-solaris2
603]
604[More useful error message when a package .hi file cannot be found:
605Simon Marlow <marlowsd@gmail.com>**20090115122524
606 Ignore-this: b595e2fac5d9b5214340f83a7d7dd730
607 
608 > import System.Process
609 Could not find module `System.Process':
610   There are files missing in the process-1.0.1.1 package,
611   try running 'ghc-pkg check'.
612   Use -v to see a list of the files searched for.
613]
614[soup-up "ghc-pkg check"
615Simon Marlow <marlowsd@gmail.com>**20090115122143
616 Ignore-this: 6d29af258eb31d417d01fed167cd5d47
617 
618 We now look for missing files (including .hi files), and report all
619 the packages that are transitively broken.
620 
621 $ ghc-pkg check
622 There are problems in package syb-0.1.0.0:
623   dependency foo-4.0.0.0 doesn't exist
624 There are problems in package process-1.0.1.1:
625   file System/Process.hi is missing
626 
627 The following packages are broken, either because they have a problem
628 listed above, or because they depend on a broken package.
629 syb-0.1.0.0
630 process-1.0.1.1
631 base-3.0.3.0
632 Cabal-1.7.0
633 haskell98-1.0.1.0
634 haddock-2.4.2
635 ghc-6.11
636]
637[document -feager-blackholing
638Simon Marlow <marlowsd@gmail.com>**20090115093922
639 Ignore-this: 5958a16c7148cb5df0f4b3f1e1dee6d6
640]
641[External Core: re-add code I removed mistakenly in last commit
642Tim Chevalier <chevalier@alum.wellesley.edu>**20090115002612]
643[External Core lib: lots of cleanup
644Tim Chevalier <chevalier@alum.wellesley.edu>**20090114224428
645 
646 - Factor out code for applying newtypes from Check into CoreUtils
647 - Use this code in Prep, which allowed for some simplification
648 - Change Merge and ElimDeadCode to not flatten top-level binds
649 - Add a flag for elimDeadCode to tell it whether to keep
650 exported bindings or not.
651 - Other things.
652]
653[External Core: print out more precise dependency info
654Tim Chevalier <chevalier@alum.wellesley.edu>**20090114221734
655 
656 Print out the same recursive/non-recursive binding groups
657 that existed in internal Core in an External Core file,
658 rather than dumping everything into one big recursive group.
659]
660[Fix "make install": Put "[]" in the install package.conf
661Ian Lynagh <igloo@earth.li>**20090114205945]
662[Remove redundant import; spotted by Thorkil Naur
663Ian Lynagh <igloo@earth.li>**20090114181937]
664[Remove a redundant import
665Ian Lynagh <igloo@earth.li>**20090114181212]
666[Detect when a C finalizer calls back to Haskell
667Simon Marlow <marlowsd@gmail.com>**20090114121526
668 Ignore-this: e361d7278e2478da2f300625076cc0ae
669 This is illegal now, after the fix for #1364, but it turns out that
670 the existing check for dodgy callbacks doesn't catch finalizers
671 calling back, so we need another test.  This will be particularly
672 important for 6.10.2, because the behaviour has changed.
673]
674[Fix Trac #2931
675simonpj@microsoft.com**20090113170948
676 Ignore-this: 6ff0207627165f3f7bd145171e59b533
677 
678 Fix the lexical analyser when it encounters 'x<EOF> and Template
679 Haskell is on.
680 
681]
682[Rewrite CorePrep and improve eta expansion
683simonpj@microsoft.com**20090113164953
684 Ignore-this: 910d1d613592c116714c324618b1e45c
685 
686 This patch does two main things
687 
688 a) Rewrite most of CorePrep to be much easier to understand (I hope!).
689    The invariants established by CorePrep are now written out, and
690    the code is more perspicuous.  It is surpringly hard to get right,
691    and the old code had become quite incomprehensible.
692 
693 b) Rewrite the eta-expander so that it does a bit of simplifying
694    on-the-fly, and thereby guarantees to maintain the CorePrep
695    invariants.  This make it much easier to use from CorePrep, and
696    is a generally good thing anyway.
697 
698 A couple of pieces of re-structuring:
699 
700 *  I moved the eta-expander and arity analysis stuff into a new
701    module coreSyn/CoreArity.
702 
703    Max will find that the type CoreArity.EtaInfo looks strangely
704    familiar.
705 
706 *  I moved a bunch of comments from Simplify to OccurAnal; that's
707    why it looks as though there's a lot of lines changed in those
708    modules.
709 
710 On the way I fixed various things
711 
712   - Function arguments are eta expanded
713        f (map g)  ===>  let s = \x. map g x in f s
714 
715   - Trac #2368
716 
717 The result is a modest performance gain, I think mainly due
718 to the first of these changes:
719 
720 --------------------------------------------------------------------------------
721         Program           Size    Allocs   Runtime   Elapsed
722 --------------------------------------------------------------------------------
723             Min          -1.0%    -17.4%    -19.1%    -46.4%
724             Max          +0.3%     +0.5%     +5.4%    +53.8%
725  Geometric Mean          -0.1%     -0.3%     -7.0%    -10.2%
726 
727 
728 
729]
730[Rename isIdentityCoercion to isIdentityCoI; add Coercion.isIdentityCoercion
731simonpj@microsoft.com**20090113164804
732 Ignore-this: ac05f38a092959c08972c768fe427e06
733]
734[Spelling in comment only
735simonpj@microsoft.com**20090113164624
736 Ignore-this: 2eb6372f996b9133683918aecad1a5aa
737]
738[Make the ASSERT more informative
739simonpj@microsoft.com**20090113164133
740 Ignore-this: 4059e33cf594403e03c0eb4169dc300f
741]
742[Export mapOL from OrdList
743simonpj@microsoft.com**20090113164051
744 Ignore-this: 3debd81ae00d3745ec248197b97d312f
745]
746[Improve error messages slightly
747simonpj@microsoft.com**20090113164020
748 Ignore-this: 89090ec03d8ea201f64105c0dbb8d5f9
749]
750[Do not do SpecConstr on functions that unconditionally diverge
751simonpj@microsoft.com**20090113162918
752 Ignore-this: cb0c210b936941b241c312c72545bfe2
753 
754 There is no point in specialising a function that is guaranteed to
755 diverge, and doing so screwed up arity stuff. 
756 
757 See Note [Do not specialise diverging functions].
758 
759 
760]
761[Make -XTypeFamilies imply -XRelaxedPolyRec (Trac #2944)
762simonpj@microsoft.com**20090113162716
763 Ignore-this: 8ab21566045c8bc8050ed7dda04e2df
764]
765[Fix Trac #2937: deserialising assoicated type definitions
766simonpj@microsoft.com**20090113153217
767 Ignore-this: 7d7852a70a34fc22773757709735cc24
768 
769 The deserialiser (TcIface) for associated type definitions wasn't
770 taking into account that the class decl brings into scope some
771 type variables that scope over the data/type family declaration.
772 
773 Easy to fix: the new function is TcIface.bindIfaceTyVars_AT
774 
775]
776[Always check the result of pthread_mutex_lock() and pthread_mutex_unlock().
777Matthias Kilian <kili@outback.escape.de>**20090104192443
778 
779 Don't check pthread_mutex_*lock() only on Linux and/or only if DEBUG
780 is defined. The return values of those functions are well defined
781 and should be supported on all operation systems with pthreads. The
782 checks are cheap enough to do them even in the default build (without
783 -DDEBUG).
784 
785 While here, recycle an unused macro ASSERT_LOCK_NOTHELD, and let
786 the debugBelch part enabled with -DLOCK_DEBUG work independently
787 of -DDEBUG.
788 
789]
790[sanity checking fixes
791Simon Marlow <marlowsd@gmail.com>**20090112121042]
792[Keep the remembered sets local to each thread during parallel GC
793Simon Marlow <marlowsd@gmail.com>**20090112121024
794 This turns out to be quite vital for parallel programs:
795 
796   - The way we discover which threads to traverse is by finding
797     dirty threads via the remembered sets (aka mutable lists).
798 
799   - A dirty thread will be on the remembered set of the capability
800     that was running it, and we really want to traverse that thread's
801     stack using the GC thread for the capability, because it is in
802     that CPU's cache.  If we get this wrong, we get penalised badly by
803     the memory system.
804 
805 Previously we had per-capability mutable lists but they were
806 aggregated before GC and traversed by just one of the GC threads.
807 This resulted in very poor performance particularly for parallel
808 programs with deep stacks.
809 
810 Now we keep per-capability remembered sets throughout GC, which also
811 removes a lock (recordMutableGen_sync).
812]
813[indicate which TSOs are dirty in the printAllThreads() output
814Simon Marlow <marlowsd@gmail.com>**20090107151449]
815[Fix Trac #2584: Pretty printing of types with HsDocTy
816David Waern <david.waern@gmail.com>**20090109191713
817 
818 The pretty printing clause for HsDocTy was wrong, causing brackets to be left
819 out. We now print Haddock comments on types as if they were postfix type
820 operators.
821]
822[Add "Word size" to the +RTS --info output
823Ian Lynagh <igloo@earth.li>**20090109160454]
824[Check that make supports eval
825Ian Lynagh <igloo@earth.li>**20090109151006]
826[Add some more fields to +RTS --info
827Ian Lynagh <igloo@earth.li>**20090108131101]
828[FIX BUILD on Windows (fix for #2873 broke it)
829Simon Marlow <marlowsd@gmail.com>**20090109090658]
830[when calling mmap() with MAP_ANON, the fd argument should be -1
831Simon Marlow <marlowsd@gmail.com>**20090108155341
832 might fix #2925
833]
834[Fix Trac #2914: record wild cards and assoicated types
835simonpj@microsoft.com**20090108124118]
836[Fix #2873: should fail if a package DB desn't exist
837Simon Marlow <marlowsd@gmail.com>**20090108095628
838 We allowed non-existence before because the user DB is allowed to not
839 exist, so now we have an explicit exception for that case.
840]
841[Close the races between throwTo and thread completion
842Simon Marlow <marlowsd@gmail.com>**20090107140507
843 Any threads we missed were being caught by the GC (possibly the idle
844 GC if the system was otherwise inactive), but that's not ideal.  The
845 fix (from Bertram Felgenhauer) is to use lockTSO to synchronise,
846 imposing an unconditional lockTSO on thread exit.  I couldn't measure
847 any performance overhead from doing this, so it seems reasonable.
848]
849[add comment
850Simon Marlow <marlowsd@gmail.com>**20090107121142]
851[Fix two more locking issues in throwTo()
852Bertram Felgenhauer <int-e@gmx.de>**20090107120808]
853[maybePerformBlockedException() should handle ThreadComplete/ThreadKilled
854Simon Marlow <marlowsd@gmail.com>**20090107120734
855 Part of the fix for #2910
856]
857[fix a race where the timer signal could remain turned off, leading to deadlock
858Simon Marlow <marlowsd@gmail.com>**20090107120652]
859[putMVar and takeMVar: add write_barrier() to fix race with throwTo
860Simon Marlow <marlowsd@gmail.com>**20090107112026]
861[cruft removal
862Simon Marlow <marlowsd@gmail.com>**20090106154408]
863[wake up the blocked exception queue on ThreadFinished; fixes #2910
864Simon Marlow <marlowsd@gmail.com>**20090106153254]
865[bump GHC's max stack size to 512M
866Simon Marlow <marlowsd@gmail.com>**20081219112211
867 To accomodate compiling very long static lists (#2002)
868]
869[ext-core: change .cabal file so we can build with either GHC 6.8 or 6.10
870Tim Chevalier <chevalier@alum.wellesley.edu>**20090105192757]
871[ext-core: fix some Prep bugs
872Tim Chevalier <chevalier@alum.wellesley.edu>**20090105192734]
873[ext-core: use shorter names when combining modules
874Tim Chevalier <chevalier@alum.wellesley.edu>**20090105192645]
875[ext-core: twiddle primitive things
876Tim Chevalier <chevalier@alum.wellesley.edu>**20090105192434]
877[Don't pin a register for gc_thread on SPARC.
878Ben.Lippmeier@anu.edu.au**20090105030758
879 
880 This makes the build work again.
881]
882[Require HsColour by default
883Ian Lynagh <igloo@earth.li>**20090104214647
884 This should stop us ending up without HsColour'ed sources on some
885 platforms.
886 
887 We also now tell Cabal where to find HsColour, rather than it finding
888 it itself.
889]
890[Fix build
891Ian Lynagh <igloo@earth.li>**20090104211810]
892[Add GHCi completions to :set and :show
893Ori Avtalion <ori@avtalion.name>**20081209194210]
894[Fix sync-all: Check for --complete/partial before --<anything>
895Ian Lynagh <igloo@earth.li>**20090104184652
896 Patch from megacz in trac #2857
897]
898[Remove time from extralibs at request of maintainer
899Ian Lynagh <igloo@earth.li>**20090104115509]
900[validate fix: InteractiveEval no longer needs to import  IdInfo
901Ian Lynagh <igloo@earth.li>**20090103154754]
902[Fix validate: strs is no longer used in IfaceSyn
903Ian Lynagh <igloo@earth.li>**20090103153624]
904[Remove trailing whitespace from HaddockUtils
905Ian Lynagh <igloo@earth.li>**20081229191727]
906[Fix warnings in HaddockUtils
907Ian Lynagh <igloo@earth.li>**20081229191657]
908[Remove dead code from HaddockUtils
909Ian Lynagh <igloo@earth.li>**20081229191430]
910[Make record selectors into ordinary functions
911simonpj@microsoft.com**20090102142851
912 
913 This biggish patch addresses Trac #2670.  The main effect is to make
914 record selectors into ordinary functions, whose unfoldings appear in
915 interface files, in contrast to their previous existence as magic
916 "implicit Ids".  This means that the usual machinery of optimisation,
917 analysis, and inlining applies to them, which was failing before when
918 the selector was somewhat complicated.  (Which it can be when
919 strictness annotations, unboxing annotations, and GADTs are involved.)
920 
921 The change involves the following points
922 
923 * Changes in Var.lhs to the representation of Var.  Now a LocalId can
924   have an IdDetails as well as a GlobalId.  In particular, the
925   information that an Id is a record selector is kept in the
926   IdDetails.  While compiling the current module, the record selector
927   *must* be a LocalId, so that it participates properly in compilation
928   (free variables etc).
929 
930   This led me to change the (hidden) representation of Var, so that there
931   is now only one constructor for Id, not two.
932 
933 * The IdDetails is persisted into interface files, so that an
934   importing module can see which Ids are records selectors.
935 
936 * In TcTyClDecls, we generate the record-selector bindings in renamed,
937   but not typechecked form.  In this way, we can get the typechecker
938   to add all the types and so on, which is jolly helpful especially
939   when GADTs or type families are involved.  Just like derived
940   instance declarations.
941 
942   This is the big new chunk of 180 lines of code (much of which is
943   commentary).  A call to the same function, mkAuxBinds, is needed in
944   TcInstDcls for associated types.
945 
946 * The typechecker therefore has to pin the correct IdDetails on to
947   the record selector, when it typechecks it.  There was a neat way
948   to do this, by adding a new sort of signature to HsBinds.Sig, namely
949   IdSig.  This contains an Id (with the correct Name, Type, and IdDetails);
950   the type checker uses it as the binder for the final binding.  This
951   worked out rather easily.
952 
953 * Record selectors are no longer "implicit ids", which entails changes to
954      IfaceSyn.ifaceDeclSubBndrs
955      HscTypes.implicitTyThings
956      TidyPgm.getImplicitBinds
957   (These three functions must agree.)
958 
959 * MkId.mkRecordSelectorId is deleted entirely, some 300+ lines (incl
960   comments) of very error prone code.  Happy days.
961 
962 * A TyCon no longer contains the list of record selectors:
963   algTcSelIds is gone
964 
965 The renamer is unaffected, including the way that import and export of
966 record selectors is handled.
967 
968 Other small things
969 
970 * IfaceSyn.ifaceDeclSubBndrs had a fragile test for whether a data
971   constructor had a wrapper.  I've replaced that with an explicit flag
972   in the interface file. More robust I hope.
973 
974 * I renamed isIdVar to isId, which touched a few otherwise-unrelated files.
975 
976 
977]
978[Fix Trac #2721: reject newtype deriving if the class has associated types
979simonpj@microsoft.com**20081231164300]
980[-XImpredicativeTypes implies -XRankNTypes, and improve error msg in TcMType
981simonpj@microsoft.com**20081231152517
982 
983 If you are going for impredicative types you almost certainly want RankN
984 too. The change to TcMType improves the error when you say
985      T (forall a. blah)
986 where T is a type synonym.  This doesn't necessarily need impredicativity,
987 if you have LiberalTypeSynonyms.
988 
989]
990[Fix Trac #2856: make deriving work for type families
991simonpj@microsoft.com**20081231144151
992 
993 Darn, but TcDeriv is complicated, when type families get in on
994 the act!  This patch makes GeneralisedNewtypeDeriving work
995 properly for type families.  I think.
996 
997 In order to do so, I found that GeneralisedNewtypeDeriving can
998 work for recursive newtypes too -- and since families are conservatively
999 marked recursive, that's a crucial part of the fix, and useful too.
1000 See Note [Recursive newtypes] in TcDeriv.
1001 
1002]
1003[White space and spelling in comments
1004simonpj@microsoft.com**20081231144131]
1005[Remove -XImpredicativeTypes from -fglasgow-exts
1006simonpj@microsoft.com**20081231144006
1007 
1008 See Trac #2846: impredicative types are far from stable, so
1009 -fglasgow-exts should not imply them.  Maybe we should merge
1010 this into 6.10?
1011 
1012]
1013[Improve error reporting for 'deriving'
1014simonpj@microsoft.com**20081231143521
1015 
1016 a) Improve the extra suggested fix when there's a "no instance"
1017    error in a deriving clause.
1018 
1019 b) Improve error location recording in tcInstDecl2
1020 
1021 Many of the changes in tcInstDecl2 are simple reformatting.
1022 
1023 
1024]
1025[Improve error message in deriving (fix Trac #2851)
1026simonpj@microsoft.com**20081230165906]
1027[Avoid nasty name clash with associated data types (fixes Trac #2888)
1028simonpj@microsoft.com**20081230164432
1029 
1030 The main bug was in TcHsType; see Note [Avoid name clashes for
1031 associated data types].  However I did a bit of re-factoring while
1032 I was abouut it.
1033 
1034 I'm still a but unhappy with the use of TyCon.setTyConArgPoss; it'd
1035 be better to construct the TyCon correctly in the first place.  But
1036 that means passing an extra parameter to tcTyDecl1... maybe we should
1037 do this.
1038 
1039 
1040]
1041[Refactor RnEnv to fix Trac #2901
1042simonpj@microsoft.com**20081230150445
1043 
1044 This tidy-up fixes Trac #2901, and eliminates 20 lines of code.
1045 Mainly this is done by making a version of lookupGlobalOccRn that
1046 returns (Maybe Name); this replaces lookupSrcOccRn but does more.
1047 
1048]
1049[Add quotes to error message
1050simonpj@microsoft.com**20081230150402]
1051[Tidy up treatment of big lambda (fixes Trac #2898)
1052simonpj@microsoft.com**20081230145948
1053 
1054 There was a leftover big lambda in the CorePrep'd code, which confused
1055 the bytecode generator.  Actually big lambdas are harmless.  This patch
1056 refactors ByteCodeGen so that it systemantically used 'bcView' to eliminate
1057 junk.  I did a little clean up in CorePrep too.
1058 
1059 See comments in Trac #2898.
1060 
1061]
1062[Fix warnings in ByteCodeAsm
1063Ian Lynagh <igloo@earth.li>**20081229174726]
1064[Fix warnings in ByteCodeInstr
1065Ian Lynagh <igloo@earth.li>**20081229173331]
1066[Fix warnings in Rules
1067Ian Lynagh <igloo@earth.li>**20081229171832]
1068[Fix warnings in StgCmmForeign
1069Ian Lynagh <igloo@earth.li>**20081229165957]
1070[Fix warnings in CgCallConv
1071Ian Lynagh <igloo@earth.li>**20081229165402]
1072[Fix warnings in SMRep
1073Ian Lynagh <igloo@earth.li>**20081229164959]
1074[Fix warnings in ClosureInfo
1075Ian Lynagh <igloo@earth.li>**20081229164618]
1076[Fix warnings in CgTicky
1077Ian Lynagh <igloo@earth.li>**20081229153416]
1078[Fix warnings in CgCon
1079Ian Lynagh <igloo@earth.li>**20081229151733]
1080[Fix warnings in WorkWrap
1081Ian Lynagh <igloo@earth.li>**20081229150406]
1082[Fix warnings in NCGMonad
1083Ian Lynagh <igloo@earth.li>**20081229145627]
1084[Fix warnings in CmmInfo
1085Ian Lynagh <igloo@earth.li>**20081229145307]
1086[Fix warnings in CmmCPSGen
1087Ian Lynagh <igloo@earth.li>**20081229145119]
1088[Fix warnings in CmmProcPoint
1089Ian Lynagh <igloo@earth.li>**20081229144214]
1090[Fix warnings in CmmCallConv
1091Ian Lynagh <igloo@earth.li>**20081229141924]
1092[Fix warnings in CmmLive
1093Ian Lynagh <igloo@earth.li>**20081229141035]
1094[Fix warnings in CmmCPS
1095Ian Lynagh <igloo@earth.li>**20081229133158]
1096[Fix warnings in CmmUtils
1097Ian Lynagh <igloo@earth.li>**20081229132637]
1098[Comment out dead function breakProc
1099Ian Lynagh <igloo@earth.li>**20081229115647]
1100[Fix warnings in CmmBrokenBlock
1101Ian Lynagh <igloo@earth.li>**20081229115527]
1102[Comments only.  Haddockify parts of TcRnTypes.
1103Thomas Schilling <nominolo@googlemail.com>**20081211154657]
1104[Comments only.  Fix typo.
1105Thomas Schilling <nominolo@googlemail.com>**20081211153104]
1106[Include PprTyThings in tags file.
1107Thomas Schilling <nominolo@googlemail.com>**20081211153005]
1108[Use DynFlags to work out if we are doing ticky ticky profiling
1109Ian Lynagh <igloo@earth.li>**20081218161928
1110 We used to use StaticFlags
1111]
1112[Fix warnings in CgExpr
1113Ian Lynagh <igloo@earth.li>**20081217201152]
1114[Fix warnings in CgBindery
1115Ian Lynagh <igloo@earth.li>**20081217194607]
1116[Fix warnings in CgStackery
1117Ian Lynagh <igloo@earth.li>**20081217191713]
1118[Fix warnings in CgCase
1119Ian Lynagh <igloo@earth.li>**20081217190848]
1120[Remove some dead code from CgCase
1121Ian Lynagh <igloo@earth.li>**20081217184755]
1122[Fix warnings in StgCmmProf
1123Ian Lynagh <igloo@earth.li>**20081217182236]
1124[Fix warnings in CgProf
1125Ian Lynagh <igloo@earth.li>**20081217181711]
1126[Fix warnings in CgInfoTbls
1127Ian Lynagh <igloo@earth.li>**20081217180144]
1128[Remove dead function srtLabelAndLength from CgInfoTbls
1129Ian Lynagh <igloo@earth.li>**20081217180044]
1130[Fix warnings in CgHeapery
1131Ian Lynagh <igloo@earth.li>**20081217175726]
1132[Fix warnings in CgTailCall
1133Ian Lynagh <igloo@earth.li>**20081217175040]
1134[Remove a little dead code from CgTailCall
1135Ian Lynagh <igloo@earth.li>**20081217174947]
1136[Fix warnings in CodeGen
1137Ian Lynagh <igloo@earth.li>**20081217165904]
1138[Fix warnings in StgCmmTicky
1139Ian Lynagh <igloo@earth.li>**20081217165433]
1140[Remove dead code from CgUtils
1141Ian Lynagh <igloo@earth.li>**20081217163920]
1142[Fix warnings in CgPrimOp
1143Ian Lynagh <igloo@earth.li>**20081217163912]
1144[Fix warnings in CgMonad
1145Ian Lynagh <igloo@earth.li>**20081217163903]
1146[Fix warnings in CgClosure
1147Ian Lynagh <igloo@earth.li>**20081217163850]
1148[Fix warnings in CgForeignCall
1149Ian Lynagh <igloo@earth.li>**20081215222515]
1150[Remove some redundant code
1151Ian Lynagh <igloo@earth.li>**20081215194047
1152 We were looking at opt_DoTickyProfiling, and if it was set claling ifTicky
1153 which looks at opt_DoTickyProfiling itself.
1154]
1155[Fix warnings in CgLetNoEscape
1156Ian Lynagh <igloo@earth.li>**20081215173752]
1157[Workaround for #2262, from Barney Stratford
1158Simon Marlow <marlowsd@gmail.com>**20081216124706
1159 See http://www.haskell.org/pipermail/glasgow-haskell-users/2008-December/016333.html
1160]
1161[UNDO: Add -fpass-case-bndr-to-join-points
1162Simon Marlow <marlowsd@gmail.com>**20081216114235
1163 
1164 rolling back:
1165 
1166 Fri Dec  5 10:51:59 GMT 2008  simonpj@microsoft.com
1167   * Add -fpass-case-bndr-to-join-points
1168   
1169   See Note [Passing the case binder to join points] in Simplify.lhs
1170   The default now is *not* to pass the case binder.  There are some
1171   nofib results with the above note; the effect is almost always
1172   negligible.
1173   
1174   I don't expect this flag to be used by users (hence no docs). It's just
1175   there to let me try the performance effects of switching on and off.
1176   
1177 
1178     M ./compiler/main/StaticFlagParser.hs +1
1179     M ./compiler/main/StaticFlags.hs +4
1180     M ./compiler/simplCore/Simplify.lhs -14 +73
1181]
1182[Rollback INLINE patches
1183Simon Marlow <marlowsd@gmail.com>**20081216103556
1184 
1185 rolling back:
1186 
1187 Fri Dec  5 16:54:00 GMT 2008  simonpj@microsoft.com
1188   * Completely new treatment of INLINE pragmas (big patch)
1189   
1190   This is a major patch, which changes the way INLINE pragmas work.
1191   Although lots of files are touched, the net is only +21 lines of
1192   code -- and I bet that most of those are comments!
1193   
1194   HEADS UP: interface file format has changed, so you'll need to
1195   recompile everything.
1196   
1197   There is not much effect on overall performance for nofib,
1198   probably because those programs don't make heavy use of INLINE pragmas.
1199   
1200           Program           Size    Allocs   Runtime   Elapsed
1201               Min         -11.3%     -6.9%     -9.2%     -8.2%
1202               Max          -0.1%     +4.6%     +7.5%     +8.9%
1203    Geometric Mean          -2.2%     -0.2%     -1.0%     -0.8%
1204   
1205   (The +4.6% for on allocs is cichelli; see other patch relating to
1206   -fpass-case-bndr-to-join-points.)
1207   
1208   The old INLINE system
1209   ~~~~~~~~~~~~~~~~~~~~~
1210   The old system worked like this. A function with an INLINE pragam
1211   got a right-hand side which looked like
1212        f = __inline_me__ (\xy. e)
1213   The __inline_me__ part was an InlineNote, and was treated specially
1214   in various ways.  Notably, the simplifier didn't inline inside an
1215   __inline_me__ note. 
1216   
1217   As a result, the code for f itself was pretty crappy. That matters
1218   if you say (map f xs), because then you execute the code for f,
1219   rather than inlining a copy at the call site.
1220   
1221   The new story: InlineRules
1222   ~~~~~~~~~~~~~~~~~~~~~~~~~~
1223   The new system removes the InlineMe Note altogether.  Instead there
1224   is a new constructor InlineRule in CoreSyn.Unfolding.  This is a
1225   bit like a RULE, in that it remembers the template to be inlined inside
1226   the InlineRule.  No simplification or inlining is done on an InlineRule,
1227   just like RULEs. 
1228   
1229   An Id can have an InlineRule *or* a CoreUnfolding (since these are two
1230   constructors from Unfolding). The simplifier treats them differently:
1231   
1232     - An InlineRule is has the substitution applied (like RULES) but
1233       is otherwise left undisturbed.
1234   
1235     - A CoreUnfolding is updated with the new RHS of the definition,
1236       on each iteration of the simplifier.
1237   
1238   An InlineRule fires regardless of size, but *only* when the function
1239   is applied to enough arguments.  The "arity" of the rule is specified
1240   (by the programmer) as the number of args on the LHS of the "=".  So
1241   it makes a difference whether you say
1242        {-# INLINE f #-}
1243        f x = \y -> e     or     f x y = e
1244   This is one of the big new features that InlineRule gives us, and it
1245   is one that Roman really wanted.
1246   
1247   In contrast, a CoreUnfolding can fire when it is applied to fewer
1248   args than than the function has lambdas, provided the result is small
1249   enough.
1250   
1251   
1252   Consequential stuff
1253   ~~~~~~~~~~~~~~~~~~~
1254   * A 'wrapper' no longer has a WrapperInfo in the IdInfo.  Instead,
1255     the InlineRule has a field identifying wrappers.
1256   
1257   * Of course, IfaceSyn and interface serialisation changes appropriately.
1258   
1259   * Making implication constraints inline nicely was a bit fiddly. In
1260     the end I added a var_inline field to HsBInd.VarBind, which is why
1261     this patch affects the type checker slightly
1262   
1263   * I made some changes to the way in which eta expansion happens in
1264     CorePrep, mainly to ensure that *arguments* that become let-bound
1265     are also eta-expanded.  I'm still not too happy with the clarity
1266     and robustness fo the result.
1267   
1268   * We now complain if the programmer gives an INLINE pragma for
1269     a recursive function (prevsiously we just ignored it).  Reason for
1270     change: we don't want an InlineRule on a LoopBreaker, because then
1271     we'd have to check for loop-breaker-hood at occurrence sites (which
1272     isn't currenlty done).  Some tests need changing as a result.
1273   
1274   This patch has been in my tree for quite a while, so there are
1275   probably some other minor changes.
1276   
1277 
1278     M ./compiler/basicTypes/Id.lhs -11
1279     M ./compiler/basicTypes/IdInfo.lhs -82
1280     M ./compiler/basicTypes/MkId.lhs -2 +2
1281     M ./compiler/coreSyn/CoreFVs.lhs -2 +25
1282     M ./compiler/coreSyn/CoreLint.lhs -5 +1
1283     M ./compiler/coreSyn/CorePrep.lhs -59 +53
1284     M ./compiler/coreSyn/CoreSubst.lhs -22 +31
1285     M ./compiler/coreSyn/CoreSyn.lhs -66 +92
1286     M ./compiler/coreSyn/CoreUnfold.lhs -112 +112
1287     M ./compiler/coreSyn/CoreUtils.lhs -185 +184
1288     M ./compiler/coreSyn/MkExternalCore.lhs -1
1289     M ./compiler/coreSyn/PprCore.lhs -4 +40
1290     M ./compiler/deSugar/DsBinds.lhs -70 +118
1291     M ./compiler/deSugar/DsForeign.lhs -2 +4
1292     M ./compiler/deSugar/DsMeta.hs -4 +3
1293     M ./compiler/hsSyn/HsBinds.lhs -3 +3
1294     M ./compiler/hsSyn/HsUtils.lhs -2 +7
1295     M ./compiler/iface/BinIface.hs -11 +25
1296     M ./compiler/iface/IfaceSyn.lhs -13 +21
1297     M ./compiler/iface/MkIface.lhs -24 +19
1298     M ./compiler/iface/TcIface.lhs -29 +23
1299     M ./compiler/main/TidyPgm.lhs -55 +49
1300     M ./compiler/parser/ParserCore.y -5 +6
1301     M ./compiler/simplCore/CSE.lhs -2 +1
1302     M ./compiler/simplCore/FloatIn.lhs -6 +1
1303     M ./compiler/simplCore/FloatOut.lhs -23
1304     M ./compiler/simplCore/OccurAnal.lhs -36 +5
1305     M ./compiler/simplCore/SetLevels.lhs -59 +54
1306     M ./compiler/simplCore/SimplCore.lhs -48 +52
1307     M ./compiler/simplCore/SimplEnv.lhs -26 +22
1308     M ./compiler/simplCore/SimplUtils.lhs -28 +4
1309     M ./compiler/simplCore/Simplify.lhs -91 +109
1310     M ./compiler/specialise/Specialise.lhs -15 +18
1311     M ./compiler/stranal/WorkWrap.lhs -14 +11
1312     M ./compiler/stranal/WwLib.lhs -2 +2
1313     M ./compiler/typecheck/Inst.lhs -1 +3
1314     M ./compiler/typecheck/TcBinds.lhs -17 +27
1315     M ./compiler/typecheck/TcClassDcl.lhs -1 +2
1316     M ./compiler/typecheck/TcExpr.lhs -4 +6
1317     M ./compiler/typecheck/TcForeign.lhs -1 +1
1318     M ./compiler/typecheck/TcGenDeriv.lhs -14 +13
1319     M ./compiler/typecheck/TcHsSyn.lhs -3 +2
1320     M ./compiler/typecheck/TcInstDcls.lhs -5 +4
1321     M ./compiler/typecheck/TcRnDriver.lhs -2 +11
1322     M ./compiler/typecheck/TcSimplify.lhs -10 +17
1323     M ./compiler/vectorise/VectType.hs +7
1324 
1325 Mon Dec  8 12:43:10 GMT 2008  simonpj@microsoft.com
1326   * White space only
1327 
1328     M ./compiler/simplCore/Simplify.lhs -2
1329 
1330 Mon Dec  8 12:48:40 GMT 2008  simonpj@microsoft.com
1331   * Move simpleOptExpr from CoreUnfold to CoreSubst
1332 
1333     M ./compiler/coreSyn/CoreSubst.lhs -1 +87
1334     M ./compiler/coreSyn/CoreUnfold.lhs -72 +1
1335 
1336 Mon Dec  8 17:30:18 GMT 2008  simonpj@microsoft.com
1337   * Use CoreSubst.simpleOptExpr in place of the ad-hoc simpleSubst (reduces code too)
1338 
1339     M ./compiler/deSugar/DsBinds.lhs -50 +16
1340 
1341 Tue Dec  9 17:03:02 GMT 2008  simonpj@microsoft.com
1342   * Fix Trac #2861: bogus eta expansion
1343   
1344   Urghlhl!  I "tided up" the treatment of the "state hack" in CoreUtils, but
1345   missed an unexpected interaction with the way that a bottoming function
1346   simply swallows excess arguments.  There's a long
1347        Note [State hack and bottoming functions]
1348   to explain (which accounts for most of the new lines of code).
1349   
1350 
1351     M ./compiler/coreSyn/CoreUtils.lhs -16 +53
1352 
1353 Mon Dec 15 10:02:21 GMT 2008  Simon Marlow <marlowsd@gmail.com>
1354   * Revert CorePrep part of "Completely new treatment of INLINE pragmas..."
1355   
1356   The original patch said:
1357   
1358   * I made some changes to the way in which eta expansion happens in
1359     CorePrep, mainly to ensure that *arguments* that become let-bound
1360     are also eta-expanded.  I'm still not too happy with the clarity
1361     and robustness fo the result.
1362     
1363   Unfortunately this change apparently broke some invariants that were
1364   relied on elsewhere, and in particular lead to panics when compiling
1365   with profiling on.
1366   
1367   Will re-investigate in the new year.
1368 
1369     M ./compiler/coreSyn/CorePrep.lhs -53 +58
1370     M ./configure.ac -1 +1
1371 
1372 Mon Dec 15 12:28:51 GMT 2008  Simon Marlow <marlowsd@gmail.com>
1373   * revert accidental change to configure.ac
1374 
1375     M ./configure.ac -1 +1
1376]
1377[revert accidental change to configure.ac
1378Simon Marlow <marlowsd@gmail.com>**20081215122851]
1379[Revert CorePrep part of "Completely new treatment of INLINE pragmas..."
1380Simon Marlow <marlowsd@gmail.com>**20081215100221
1381 
1382 The original patch said:
1383 
1384 * I made some changes to the way in which eta expansion happens in
1385   CorePrep, mainly to ensure that *arguments* that become let-bound
1386   are also eta-expanded.  I'm still not too happy with the clarity
1387   and robustness fo the result.
1388   
1389 Unfortunately this change apparently broke some invariants that were
1390 relied on elsewhere, and in particular lead to panics when compiling
1391 with profiling on.
1392 
1393 Will re-investigate in the new year.
1394]
1395[wake up other Capabilities even when there is only one spark (see #2868)
1396Simon Marlow <marlowsd@gmail.com>**20081210164644]
1397[Document new GC options -q1 and -qg<n>
1398Simon Marlow <marlowsd@gmail.com>**20081210164557]
1399[SysTools no longer needs -fno-cse
1400Ian Lynagh <igloo@earth.li>**20081211182327]
1401[Make the lists of files and directories to be cleaned-up non-global
1402Ian Lynagh <igloo@earth.li>**20081211180739
1403 They still need to be stored in IORefs, as the exception handler needs
1404 to know what they all are.
1405]
1406[The default cleanup handler should /always/ delete the temp files
1407Ian Lynagh <igloo@earth.li>**20081211170006
1408 Not only if there has been an exception. It worked for GHC anyway,
1409 as it was getting an ExitSuccess exception, but GHC API clients
1410 shouldn't be required to do that.
1411]
1412[Fix user guide typesetting
1413Ian Lynagh <igloo@earth.li>**20081210165434]
1414[FIX #1364: added support for C finalizers that run as soon as the value is not longer reachable.
1415Simon Marlow <marlowsd@gmail.com>**20081210150425
1416   
1417 Patch originally by Ivan Tomac <tomac@pacific.net.au>, amended by
1418 Simon Marlow:
1419 
1420   - mkWeakFinalizer# commoned up with mkWeakFinalizerEnv#
1421   - GC parameters to ALLOC_PRIM fixed
1422]
1423[On FreeBSD, try MAP_FIXED if ordinary mmap() fails to give us suitable memory
1424Simon Marlow <marlowsd@gmail.com>**20081210115751
1425 This appears to be necessary on FreeBSD.  It might be necessary on
1426 other OSs too, but I'm being cautious because using MAP_FIXED can lead
1427 to crashes by overwriting existing mappings, and we have no (easy) way
1428 to prevent that.
1429]
1430[Document hs_init() infelicity (#2863)
1431Simon Marlow <marlowsd@gmail.com>**20081209164322]
1432[Improve documentation for data family instances (cf Trac #1968)
1433simonpj@microsoft.com**20081210054432
1434 
1435 The HEAD allows GADT syntax for data/newtype family instances.
1436 (GHC 6.10 does not seem to.)
1437 
1438]
1439[Make some profiling flags dynamic
1440Ian Lynagh <igloo@earth.li>**20081209230157
1441 In particular:
1442     -fauto-sccs-on-all-toplevs          -auto-all   -no-auto-all
1443     -fauto-sccs-on-exported-toplevs     -auto       -no-auto
1444     -fauto-sccs-on-individual-cafs      -caf-all    -no-caf-all
1445]
1446[Fix warnings in StgCmmGran
1447Ian Lynagh <igloo@earth.li>**20081209222413]
1448[Add OPTIONS_CATCH,DERIVE,YHC to those that GHC knows about; trac #2847
1449Ian Lynagh <igloo@earth.li>**20081209191724]
1450[Fix warnings in CgHpc
1451Ian Lynagh <igloo@earth.li>**20081209191713]
1452[Parse pragma names better; trac #2847
1453Ian Lynagh <igloo@earth.li>**20081209190318
1454 We require that pragma names are not followed by pragma character,
1455 defined as
1456     isAlphaNum c || c == '_'
1457]
1458[Fix warnings in CgParallel
1459Ian Lynagh <igloo@earth.li>**20081209184402]
1460[Fix warnings in StgCmmHpc
1461Ian Lynagh <igloo@earth.li>**20081209184004]
1462[Remove an unnecessary -w flag
1463Ian Lynagh <igloo@earth.li>**20081209183812]
1464[Fix Trac #2861: bogus eta expansion
1465simonpj@microsoft.com**20081209170302
1466 
1467 Urghlhl!  I "tided up" the treatment of the "state hack" in CoreUtils, but
1468 missed an unexpected interaction with the way that a bottoming function
1469 simply swallows excess arguments.  There's a long
1470      Note [State hack and bottoming functions]
1471 to explain (which accounts for most of the new lines of code).
1472 
1473]
1474[Fix #2592: do an orderly shutdown when the heap is exhausted
1475Simon Marlow <marlowsd@gmail.com>**20081209105919
1476 Really we should be raising an exception in this case, but that's
1477 tricky (see comments).  At least now we shut down the runtime
1478 correctly rather than just exiting.
1479]
1480[Fix #2848: avoid overflow during time calculation
1481Simon Marlow <marlowsd@gmail.com>**20081209105600]
1482[Fix #2838: we should narrow a CmmInt before converting to ImmInteger
1483Simon Marlow <marlowsd@gmail.com>**20081209105515]
1484[fix an assertion failure in prof/threaded/debug mode
1485Simon Marlow <marlowsd@gmail.com>**20081204101201]
1486[Inject implicit bindings after CoreTidy, not before Simplify
1487simonpj@microsoft.com**20081208173525
1488 
1489 Originally I inject the "implicit bindings" (record selectors, class
1490 method selectors, data con wrappers...) after CoreTidy.  However, in a
1491 misguided attempt to fix Trac #2070, I moved the injection point to
1492 before the Simplifier, so that record selectors would be optimised by
1493 the simplifier.
1494 
1495 This was misguided because record selectors (indeed all implicit bindings)
1496 are GlobalIds, whose IdInfo is meant to be frozen.  But the Simplifier,
1497 and other Core-to-Core optimisations, merrily change the IdInfo.  That
1498 ultimately made Trac #2844 happen, where a record selector got arity 2,
1499 but the GlobalId (which importing scopes re-construct from the class decl
1500 rather than reading from the interface file) has arity 1.
1501 
1502 So this patch moves the injection back to CoreTidy. Happily #2070 should
1503 still be OK because we now use CoreSubst.simpleOptExpr on the unfoldings
1504 for implict things, which gets rid of the most gratuitous infelicities.
1505 
1506 Still, there's a strong case for stoppping record selectors from being
1507 GlobalIds, and treating them much more like dict-funs.  I'm thinking
1508 about that.  Meanwhile, #2844 is ok now.
1509 
1510]
1511[Add assertion for arity match (checks Trac #2844)
1512simonpj@microsoft.com**20081208173241
1513 
1514 The exported arity of a function must match the arity for the
1515 STG function.  Trac #2844 was a pretty obscure manifestation of
1516 the failure of this invariant. This patch doesn't cure the bug;
1517 rather it adds an assertion to CoreToStg to check the invariant
1518 so we should get an earlier and less obscure warning if this
1519 fails in future.
1520 
1521]
1522[Use CoreSubst.simpleOptExpr in place of the ad-hoc simpleSubst (reduces code too)
1523simonpj@microsoft.com**20081208173018]
1524[Move simpleOptExpr from CoreUnfold to CoreSubst
1525simonpj@microsoft.com**20081208124840]
1526[White space only
1527simonpj@microsoft.com**20081208124310]
1528[Comments only
1529simonpj@microsoft.com**20081208124155]
1530[Completely new treatment of INLINE pragmas (big patch)
1531simonpj@microsoft.com**20081205165400
1532 
1533 This is a major patch, which changes the way INLINE pragmas work.
1534 Although lots of files are touched, the net is only +21 lines of
1535 code -- and I bet that most of those are comments!
1536 
1537 HEADS UP: interface file format has changed, so you'll need to
1538 recompile everything.
1539 
1540 There is not much effect on overall performance for nofib,
1541 probably because those programs don't make heavy use of INLINE pragmas.
1542 
1543         Program           Size    Allocs   Runtime   Elapsed
1544             Min         -11.3%     -6.9%     -9.2%     -8.2%
1545             Max          -0.1%     +4.6%     +7.5%     +8.9%
1546  Geometric Mean          -2.2%     -0.2%     -1.0%     -0.8%
1547 
1548 (The +4.6% for on allocs is cichelli; see other patch relating to
1549 -fpass-case-bndr-to-join-points.)
1550 
1551 The old INLINE system
1552 ~~~~~~~~~~~~~~~~~~~~~
1553 The old system worked like this. A function with an INLINE pragam
1554 got a right-hand side which looked like
1555      f = __inline_me__ (\xy. e)
1556 The __inline_me__ part was an InlineNote, and was treated specially
1557 in various ways.  Notably, the simplifier didn't inline inside an
1558 __inline_me__ note. 
1559 
1560 As a result, the code for f itself was pretty crappy. That matters
1561 if you say (map f xs), because then you execute the code for f,
1562 rather than inlining a copy at the call site.
1563 
1564 The new story: InlineRules
1565 ~~~~~~~~~~~~~~~~~~~~~~~~~~
1566 The new system removes the InlineMe Note altogether.  Instead there
1567 is a new constructor InlineRule in CoreSyn.Unfolding.  This is a
1568 bit like a RULE, in that it remembers the template to be inlined inside
1569 the InlineRule.  No simplification or inlining is done on an InlineRule,
1570 just like RULEs. 
1571 
1572 An Id can have an InlineRule *or* a CoreUnfolding (since these are two
1573 constructors from Unfolding). The simplifier treats them differently:
1574 
1575   - An InlineRule is has the substitution applied (like RULES) but
1576     is otherwise left undisturbed.
1577 
1578   - A CoreUnfolding is updated with the new RHS of the definition,
1579     on each iteration of the simplifier.
1580 
1581 An InlineRule fires regardless of size, but *only* when the function
1582 is applied to enough arguments.  The "arity" of the rule is specified
1583 (by the programmer) as the number of args on the LHS of the "=".  So
1584 it makes a difference whether you say
1585        {-# INLINE f #-}
1586        f x = \y -> e     or     f x y = e
1587 This is one of the big new features that InlineRule gives us, and it
1588 is one that Roman really wanted.
1589 
1590 In contrast, a CoreUnfolding can fire when it is applied to fewer
1591 args than than the function has lambdas, provided the result is small
1592 enough.
1593 
1594 
1595 Consequential stuff
1596 ~~~~~~~~~~~~~~~~~~~
1597 * A 'wrapper' no longer has a WrapperInfo in the IdInfo.  Instead,
1598   the InlineRule has a field identifying wrappers.
1599 
1600 * Of course, IfaceSyn and interface serialisation changes appropriately.
1601 
1602 * Making implication constraints inline nicely was a bit fiddly. In
1603   the end I added a var_inline field to HsBInd.VarBind, which is why
1604   this patch affects the type checker slightly
1605 
1606 * I made some changes to the way in which eta expansion happens in
1607   CorePrep, mainly to ensure that *arguments* that become let-bound
1608   are also eta-expanded.  I'm still not too happy with the clarity
1609   and robustness fo the result.
1610 
1611 * We now complain if the programmer gives an INLINE pragma for
1612   a recursive function (prevsiously we just ignored it).  Reason for
1613   change: we don't want an InlineRule on a LoopBreaker, because then
1614   we'd have to check for loop-breaker-hood at occurrence sites (which
1615   isn't currenlty done).  Some tests need changing as a result.
1616 
1617 This patch has been in my tree for quite a while, so there are
1618 probably some other minor changes.
1619 
1620]
1621[Add -fpass-case-bndr-to-join-points
1622simonpj@microsoft.com**20081205105159
1623 
1624 See Note [Passing the case binder to join points] in Simplify.lhs
1625 The default now is *not* to pass the case binder.  There are some
1626 nofib results with the above note; the effect is almost always
1627 negligible.
1628 
1629 I don't expect this flag to be used by users (hence no docs). It's just
1630 there to let me try the performance effects of switching on and off.
1631 
1632]
1633[Add static flag -fsimple-list-literals
1634simonpj@microsoft.com**20081205105002
1635 
1636 The new static flag -fsimple-list-literals makes ExplicitList literals
1637 be desugared in the straightforward way, rather than using 'build' as
1638 now.  See SLPJ comments with Note [Desugaring explicit lists].
1639 
1640 I don't expect this flag to be used by users (hence no docs). It's just
1641 there to let me try the performance effects of switching on and off.
1642 
1643]
1644[Comments only in OccurAnal
1645simonpj@microsoft.com**20081205103252]
1646[Comments only
1647simonpj@microsoft.com**20081205102437]
1648[Layout only
1649simonpj@microsoft.com**20081205102252]
1650[Comments only (Note [Entering error thunks])
1651simonpj@microsoft.com**20081205102149]
1652[Make CoreToStg a little more robust to eta expansion
1653simonpj@microsoft.com**20081205101932]
1654[Add no-op case for addIdSpecialisations (very minor optimisation)
1655simonpj@microsoft.com**20081205101022]
1656[Trim redundant import
1657simonpj@microsoft.com**20081205101006]
1658[Make CoreTidy retain deadness info (better -ddump-simpl)
1659simonpj@microsoft.com**20081205100518
1660 
1661 GHC now retains more robust information about dead variables; but
1662 CoreTidy was throwing it away.  This patch makes CoreTidy retain it,
1663 which gives better output for -ddump-simpl.
1664 
1665 New opportunity: shrink interface files by using wildcards for dead variables.
1666 
1667 
1668]
1669[Remove INLINE pragmas on recursive functions
1670simonpj@microsoft.com**20081205100353
1671 
1672 INLINE pragmas on recursive functions are ignored; and this
1673 is checked in my upcoming patch for inlinings.
1674 
1675]
1676[Comments only (on Activation)
1677simonpj@microsoft.com**20081205100139]
1678[We need to tell cabal-bin which version of Cabal to use
1679Ian Lynagh <igloo@earth.li>**20081203123208
1680 Otherwise, if the bootstrapping compiler has a newer version, we get
1681 a mismatch between the version used to compile ghc-prim's Setup.hs and
1682 the version that installPackage uses.
1683]
1684[Document 'loadModule'.
1685Thomas Schilling <nominolo@googlemail.com>**20081202154800]
1686[Add 'needsTemplateHaskell' utility function and document why one might
1687Thomas Schilling <nominolo@googlemail.com>**20081202152358
1688 want to use it.
1689]
1690[Documentation only.
1691Thomas Schilling <nominolo@googlemail.com>**20081202150158]
1692[Export 'succeeded' and 'failed' helper functions.
1693Thomas Schilling <nominolo@googlemail.com>**20081202144451]
1694[Put full ImportDecls in ModSummary instead of just ModuleNames
1695Simon Marlow <marlowsd@gmail.com>**20081202133736
1696 ... and use it to make ghc -M generate correct cross-package
1697 dependencies when using package-qualified imports (needed for the new
1698 build system).  Since we're already parsing the ImportDecl from the
1699 source file, there seems no good reason not to keep it in the
1700 ModSummary, it might be useful for other things too.
1701]
1702[ghc -M: need to add a dep on Prelude unless -fno-implicit-prelude is on
1703Simon Marlow <marlowsd@gmail.com>**20081128165707]
1704[make -include-pkg-deps work (not sure when this got lost)
1705Simon Marlow <marlowsd@gmail.com>**20081128135746]
1706[Fix more problems caused by padding in the Capability structure
1707Simon Marlow <marlowsd@gmail.com>**20081202120735
1708 Fixes crashes on Windows and Sparc
1709]
1710[add missing case to Ord GlobalReg (EagerBlackhole == EagerBlackhole)
1711Simon Marlow <marlowsd@gmail.com>**20081128130106]
1712[Better error message for fundep conflict
1713simonpj@microsoft.com**20081201162845]
1714[Fix typo in quasi-quote documentation's sample.
1715shelarcy <shelarcy@gmail.com>**20081129024344]
1716[Remove the v_Split_info global variable and use a field of dflags instead
1717Ian Lynagh <igloo@earth.li>**20081130152403]
1718[Document the --machine-readable RTS flag
1719Ian Lynagh <igloo@earth.li>**20081130152311]
1720[Let 'loadModule' generate proper code depending on the 'hscTarget'.
1721Thomas Schilling <nominolo@googlemail.com>**20081128164412
1722 
1723 With this change it should be possible to perform something similar to
1724 'load' by traversing the module graph in dependency order and calling
1725 '{parse,typecheck,load}Module' on each.  Of course, if you want smart
1726 recompilation checking you should still use 'load'.
1727]
1728[Expose a separate 'hscBackend' phase for 'HsCompiler' and change
1729Thomas Schilling <nominolo@googlemail.com>**20081128163746
1730 parameter to 'InteractiveStatus' to a 'Maybe'.
1731]
1732[Whoops, *don't* reset the complete session in 'withLocalCallbacks'.
1733Thomas Schilling <nominolo@googlemail.com>**20081128150727]
1734[Use a record instead of a typeclass for 'HsCompiler'.  This is mostly
1735Thomas Schilling <nominolo@googlemail.com>**20081128121947
1736 equivalent to a typeclass implementation that uses a functional
1737 dependency from the target mode to the result type.
1738]
1739[Remove dead code
1740Ian Lynagh <igloo@earth.li>**20081128193831]
1741[Update docs not to talk about deprecated -optdep-* flags; fixes trac #2773
1742Ian Lynagh <igloo@earth.li>**20081128193633]
1743[Use relative URLs in the GHC API haddock docs; fixes #2755
1744Ian Lynagh <igloo@earth.li>**20081128184511]
1745[Teach runghc about --help; fixes trac #2757
1746Ian Lynagh <igloo@earth.li>**20081128191706]
1747[Use a per-session data structure for callbacks.  Make 'WarnErrLogger'
1748Thomas Schilling <nominolo@googlemail.com>**20081128103628
1749 part of it.
1750 
1751 Part of the GHC API essentially represents a compilation framework.
1752 The difference of a *framework* as opposed to a *library* is that the
1753 overall structure of the functionality is pre-defined but certain
1754 details can be customised via callbacks.  (Also known as the Hollywood
1755 Principle: "Don't call us, we'll call you.")
1756 
1757 This patch introduces a per-session data structure that contains all
1758 the callbacks instead of adding lots of small function arguments
1759 whenever we want to give the user more control over certain parts of
1760 the API.  This should also help with future changes: Adding a new
1761 callback doesn't break old code since code that doesn't know about the
1762 new callback will use the (hopefully sane) default implementation.
1763 
1764 Overall, however, we should try and keep the number of callbacks small
1765 and well-defined (and provide useful defaults) and use simple library
1766 routines for the rest.
1767]
1768[Improve error message for #2739 (but no fix).
1769Thomas Schilling <nominolo@googlemail.com>**20081127135725
1770 
1771 This patch changes 'loadModule' to define a fake linkable.  The
1772 previous implementation of providing no linkable at all violated a
1773 pre-condition in the ByteCode linker.  This doesn't fix #2739, but it
1774 improves the error message a bit.
1775]
1776[Remove the packing I added recently to the Capability structure
1777Simon Marlow <marlowsd@gmail.com>**20081128105046
1778 The problem is that the packing caused some unaligned loads, which
1779 lead to bus errors on Sparc (and reduced performance elsewhere,
1780 presumably).
1781]
1782[don't emit CmmComments for now
1783Simon Marlow <marlowsd@gmail.com>**20081127090145
1784   - if the string contains */, we need to fix it (demonstrated by
1785     building Cabal with -fvia-C)
1786   - the strings can get quite large, so we probably only want to
1787     inject comments when some debugging option is on.
1788]
1789[Collect instead of print warnings in 'warnUnnecessarySourceImports'.
1790Thomas Schilling <nominolo@googlemail.com>**20081127102534]
1791[Force recompilation of BCOs when they were compiled in HscNothing mode.
1792Thomas Schilling <nominolo@googlemail.com>**20081126183402
1793 
1794 Previously, loading a set of modules in HscNothing mode and then
1795 switching to HscInterpreted could lead to crashes since modules
1796 compiled with HscNothing were thought to be valid bytecode objects.
1797 
1798 This patch forces recompilation in these cases, hence switching between
1799 HscNothing and HscInterpreted should be safe now.
1800]
1801[Documentation only: Add module description for HscMain.
1802Thomas Schilling <nominolo@googlemail.com>**20081126134344]
1803[Include GHCi files in ctags/etags.
1804Thomas Schilling <nominolo@googlemail.com>**20081126122801]
1805[drop some debugging traces and use only one flag for new codegen
1806dias@eecs.harvard.edu**20081126180808]
1807[one more missing patch from new codegen path
1808dias@eecs.harvard.edu**20081126165742]
1809[Fix Trac #2817 (TH syntax -> HsSyn conversion)
1810simonpj@microsoft.com**20081126154022]
1811[Fix Trac #2756: CorePrep strictness bug
1812simonpj@microsoft.com**20081126143448]
1813[Format output for :t more nicely
1814simonpj@microsoft.com**20081126134814]
1815[Fix Trac #2766: printing operator type variables
1816simonpj@microsoft.com**20081126132202]
1817[Fix build following codegen patch
1818simonpj@microsoft.com**20081126125526]
1819[Removed warnings, made Haddock happy, added examples in documentation
1820dias@eecs.harvard.edu**20081017170707
1821 The interesting examples talk about our story with heap checks in
1822 case alternatives and our story with the case scrutinee as a Boolean.
1823]
1824[Fixed linear regalloc bug, dropped some tracing code
1825dias@eecs.harvard.edu**20081016104218
1826 o The linear-scan register allocator sometimes allocated a block
1827   before allocating one of its predecessors, which could lead
1828   to inconsistent allocations. Now, we allocate a block only
1829   if a predecessor has set the "incoming" assignments for the block
1830   (or if it's the procedure's entry block).
1831 o Also commented out some tracing code on the new codegen path.
1832]
1833[Keep update frames live even in functions that never return
1834dias@eecs.harvard.edu**20081014165437
1835 An unusual case, but without it:
1836 (a) we had an assertion failure
1837 (b) we can overwrite the caller's infotable, which might cause
1838     the garbage collector to collect live data.
1839 Better to keep the update frame live at all call sites,
1840 not just at returns.
1841]
1842[Removed space and time inefficiency in procpoint splitting
1843dias@eecs.harvard.edu**20081014160354
1844 I was adding extra jumps to every procpoint, even when the split-off graph
1845 referred to only some of the procpoints. No effect on correctness,
1846 but a big effect on space/time efficiency when there are lots of procpoints...
1847]
1848[Clarify the SRT building process
1849dias@eecs.harvard.edu**20081014140202
1850 Before: building a closure that would build an SRT given the top-level
1851 SRT. It was somewhat difficult to understand the control flow, and it
1852 may have had held onto some data structures long after they should be dead.
1853 Now, I just bundle the info we need about CAFs along with the procedure
1854 and directly call a new top-level function to build the SRTs later.
1855]
1856[Don't adjust hp up when the case scrutinee won't allocate
1857dias@eecs.harvard.edu**20081014112618
1858 
1859 If the case scrutinee can't allocate, we don't need to do a heap
1860 check in the case alternatives. (A previous patch got that right.)
1861 In that case, we had better not adjust the heap pointer to recover
1862 unused stack space before evaluating the scrutinee -- because we
1863 aren't going to reallocate for the case alternative.
1864]
1865[Floating infotables were reversed in C back end
1866dias@eecs.harvard.edu**20081013152718]
1867[forgot a few files
1868dias@eecs.harvard.edu**20081013134251]
1869[Big collection of patches for the new codegen branch.
1870dias@eecs.harvard.edu**20081013132556
1871 o Fixed bug that emitted the copy-in code for closure entry
1872   in the wrong place -- at the initialization of the closure.
1873 o Refactored some of the closure entry code.
1874 o Added code to check that no LocalRegs are live-in to a procedure
1875    -- trip up some buggy programs earlier
1876 o Fixed environment bindings for thunks
1877    -- we weren't (re)binding the free variables in a thunk
1878 o Fixed a bug in proc-point splitting that dropped some updates
1879   to the entry block in a procedure.
1880 o Fixed improper calls to code that generates CmmLit's for strings
1881 o New invariant on cg_loc in CgIdInfo: the expression is always tagged
1882 o Code to load free vars on entry to a thunk was (wrongly) placed before
1883   the heap check.
1884 o Some of the StgCmm code was redundantly passing around Id's
1885   along with CgIdInfo's; no more.
1886 o Initialize the LocalReg's that point to a closure before allocating and
1887   initializing the closure itself -- otherwise, we have problems with
1888   recursive closure bindings
1889 o BlockEnv and BlockSet types are now abstract.
1890 o Update frames:
1891   - push arguments in Old call area
1892   - keep track of the return sp in the FCode monad
1893   - keep the return sp in every call, tail call, and return
1894       (because it might be different at different call sites,
1895        e.g. tail calls to the gc after a heap check are performed
1896             before pushing the update frame)
1897   - set the sp appropriately on returns and tail calls
1898 o Reduce call, tail call, and return to a single LastCall node
1899 o Added slow entry code, using different calling conventions on entry and tail call
1900 o More fixes to the calling convention code.
1901   The tricky stuff is all about the closure environment: it must be passed in R1,
1902   but in non-closures, there is no such argument, so we can't treat all arguments
1903   the same way: the closure environment is special. Maybe the right step forward
1904   would be to define a different calling convention for closure arguments.
1905 o Let-no-escapes need to be emitted out-of-line -- otherwise, we drop code.
1906 o Respect RTS requirement of word alignment for pointers
1907   My stack allocation can pack sub-word values into a single word on the stack,
1908   but it wasn't requiring word-alignment for pointers. It does now,
1909   by word-aligning both pointer registers and call areas.
1910 o CmmLint was over-aggresively ruling out non-word-aligned memory references,
1911   which may be kosher now that we can spill small values into a single word.
1912 o Wrong label order on a conditional branch when compiling switches.
1913 o void args weren't dropped in many cases.
1914   To help prevent this kind of mistake, I defined a NonVoid wrapper,
1915   which I'm applying only to Id's for now, although there are probably
1916   other good candidates.
1917 o A little code refactoring: separate modules for procpoint analysis splitting,
1918   stack layout, and building infotables.
1919 o Stack limit check: insert along with the heap limit check, using a symbolic
1920   constant (a special CmmLit), then replace it when the stack layout is known.
1921 o Removed last node: MidAddToContext
1922 o Adding block id as a literal: means that the lowering of the calling conventions
1923   no longer has to produce labels early, which was inhibiting common-block elimination.
1924   Will also make it easier for the non-procpoint-splitting path.
1925 o Info tables: don't try to describe the update frame!
1926 o Over aggressive use of NonVoid!!!!
1927   Don't drop the non-void args before setting the type of the closure!!!
1928 o Sanity checking:
1929   Added a pass to stub dead dead slots on the stack
1930   (only ~10 lines with the dataflow framework)
1931 o More sanity checking:
1932   Check that incoming pointer arguments are non-stubbed.
1933   Note: these checks are still subject to dead-code removal, but they should
1934   still be quite helpful.
1935 o Better sanity checking: why stop at function arguments?
1936   Instead, in mkAssign, check that _any_ assignment to a pointer type is non-null
1937   -- the sooner the crash, the easier it is to debug.
1938   Still need to add the debugging flag to turn these checks on explicitly.
1939 o Fixed yet another calling convention bug.
1940   This time, the calls to the GC were wrong. I've added a new convention
1941   for GC calls and invoked it where appropriate.
1942   We should really straighten out the calling convention stuff:
1943     some of the code (and documentation) is spread across the compiler,
1944     and there's some magical use of the node register that should really
1945     be handled (not avoided) by calling conventions.
1946 o Switch bug: the arms in mkCmmLitSwitch weren't returning to a single join point.
1947 o Environment shadowing problem in Stg->Cmm:
1948   When a closure f is bound at the top-level, we should not bind f to the
1949   node register on entry to the closure.
1950   Why? Because if the body of f contains a let-bound closure g that refers
1951   to f, we want to make sure that it refers to the static closure for f.
1952   Normally, this would all be fine, because when we compile a closure,
1953   we rebind free variables in the environment. But f doesn't look like
1954   a free variable because it's a static value. So, the binding for f
1955   remains in the environment when we compile g, inconveniently referring
1956   to the wrong thing.
1957   Now, I bind the variable in the local environment only if the closure is not
1958   bound at the top level. It's still okay to make assumptions about the
1959   node holding the closure environment; we just won't find the binding
1960   in the environment, so code that names the closure will now directly
1961   get the label of the static closure, not the node register holding a
1962   pointer to the static closure.
1963 o Don't generate bogus Cmm code containing SRTs during the STG -> Cmm pass!
1964   The tables made reference to some labels that don't exist when we compute and
1965   generate the tables in the back end.
1966 o Safe foreign calls need some special treatment (at least until we have the integrated
1967   codegen). In particular:
1968   o they need info tables
1969   o they are not procpoints -- the successor had better be in the same procedure
1970   o we cannot (yet) implement the calling conventions early, which means we have
1971     to carry the calling-conv info all the way to the end
1972 o We weren't following the old convention when registering a module.
1973   Now, we use update frames to push any new modules that have to be registered
1974   and enter the youngest one on the stack.
1975   We also use the update frame machinery to specify that the return should pop
1976   the return address off the stack.
1977 o At each safe foreign call, an infotable must be at the bottom of the stack,
1978   and the TSO->sp must point to it.
1979 o More problems with void args in a direct call to a function:
1980   We were checking the args (minus voids) to check whether the call was saturated,
1981   which caused problems when the function really wasn't saturated because it
1982   took an extra void argument.
1983 o Forgot to distinguish integer != from floating != during Stg->Cmm
1984 o Updating slotEnv and areaMap to include safe foreign calls
1985   The dataflow analyses that produce the slotEnv and areaMap give
1986   results for each basic block, but we also need the results for
1987   a safe foreign call, which is a middle node.
1988   After running the dataflow analysis, we have another pass that
1989   updates the results to includ any safe foreign calls.
1990 o Added a static flag for the debugging technique that inserts
1991   instructions to stub dead slots on the stack and crashes when
1992   a stubbed value is loaded into a pointer-typed LocalReg.
1993 o C back end expects to see return continuations before their call sites.
1994   Sorted the flowgraphs appropriately after splitting.
1995 o PrimOp calling conventions are special -- unlimited registers, no stack
1996   Yet another calling convention...
1997 o More void value problems: if the RHS of a case arm is a void-typed variable,
1998   don't try to return it.
1999 o When calling some primOp, they may allocate memory; if so, we need to
2000   do a heap check when we return from the call.
2001 
2002]
2003[Merging in the new codegen branch
2004dias@eecs.harvard.edu**20080814124027
2005 This merge does not turn on the new codegen (which only compiles
2006 a select few programs at this point),
2007 but it does introduce some changes to the old code generator.
2008 
2009 The high bits:
2010 1. The Rep Swamp patch is finally here.
2011    The highlight is that the representation of types at the
2012    machine level has changed.
2013    Consequently, this patch contains updates across several back ends.
2014 2. The new Stg -> Cmm path is here, although it appears to have a
2015    fair number of bugs lurking.
2016 3. Many improvements along the CmmCPSZ path, including:
2017    o stack layout
2018    o some code for infotables, half of which is right and half wrong
2019    o proc-point splitting
2020]
2021[Major clean-up of HscMain.
2022Thomas Schilling <nominolo@googlemail.com>**20081125153201
2023 
2024 This patch entails a major restructuring of HscMain and a small bugfix
2025 to MkIface (which required the restructuring in HscMain).
2026 
2027 In MkIface:
2028 
2029   - mkIface* no longer outputs orphan warnings directly and also no
2030     longer quits GHC when -Werror is set.  Instead, errors are
2031     reported using the common IO (Messages, Maybe result) scheme.
2032 
2033 In HscMain:
2034 
2035   - Get rid of the 'Comp' monad.  This monad was mostly GhcMonad + two
2036     reader arguments, a ModSummary for the currently compiled module
2037     and a possible old interface.  The latter actually lead to a small
2038     space-leak since only its hash was needed (to check whether the
2039     newly-generated interface file was the same as the original one).
2040 
2041     Functions originally of type 'Comp' now only take the arguments
2042     that they actually need.  This leads to slighly longer argument
2043     lists in some places, however, it is now much easier to see what
2044     is actually going on.
2045 
2046   - Get rid of 'myParseModule'.  Rename 'parseFile' to 'hscParse'.
2047 
2048   - Join 'deSugarModule' and 'hscDesugar' (keeping the latter).
2049 
2050   - Rename 'typecheck{Rename}Module{'}' to 'hscTypecheck{Rename}'.
2051     One variant keeps the renamed syntax, the other doesn't.
2052 
2053   - Parameterise 'HscStatus', so that 'InteractiveStatus' is just a
2054     different parameterisation of 'HscStatus'.
2055 
2056   - 'hscCompile{OneShot,Batch,Nothing,Interactive}' are now
2057     implemented using a (local) typeclass called 'HsCompiler'.  The
2058     idea is to make the common structure more obvious.  Using this
2059     typeclass we now have two functions 'genericHscCompile' (original
2060     'hscCompiler') and 'genericHscRecompile' (original 'genComp')
2061     describing the default pipeline.  The methods of the typeclass
2062     describe a sort of "hook" interface (in OO-terms this would be
2063     called the "template method" pattern).
2064 
2065     One problem with this approach is that we parameterise over the
2066     /result/ type which, in fact, is not actually different for
2067     "nothing" and "batch" mode.  To avoid functional dependencies or
2068     associated types, we use type tags to make them artificially
2069     different and parameterise the type class over the result type.
2070     A perhaps better approach might be to use records instead.
2071     
2072   - Drop some redundant 'HscEnv' arguments.  These were likely
2073     different from what 'getSession' would return because during
2074     compilation we temporarily set the module's DynFlags as well as a
2075     few other fields.  We now use the 'withTempSession' combinator to
2076     temporarily change the 'HscEnv' and automatically restore the
2077     original session after the enclosed action has returned (even in
2078     case of exceptions).
2079 
2080   - Rename 'hscCompile' to 'hscGenHardCode' (since that is what it
2081     does).
2082 
2083 Calls in 'GHC' and 'DriverPipeline' accordingly needed small
2084 adaptions.
2085]
2086[Fix Trac #2799: TcType.isOverloadedTy
2087simonpj@microsoft.com**20081125110540
2088 
2089 A missing case (for equality predicates) in isOverloadedTy make
2090 bindInstsOfLocalFuns/Pats do the wrong thing.  Core Lint nailed it.
2091 
2092 Merge to 6.10 branch.
2093 
2094]
2095[Fix #2740: we were missing the free variables on some expressions
2096Simon Marlow <marlowsd@gmail.com>**20081125103113
2097 Particularly boolean expresions: the conditional of an 'if', and
2098 guards, were missing their free variables.
2099]
2100[Fix symbol macro names in Linker.c
2101Thorkil Naur <naur@post11.tele.dk>**20081121160149]
2102[Add a --machine-readable RTS flag
2103Ian Lynagh <igloo@earth.li>**20081123152127
2104 Currently it only affects the -t flag output
2105]
2106[Return errors instead of dying in myParseModule.
2107Thomas Schilling <nominolo@googlemail.com>**20081122154151]
2108[Comments/Haddockification only.
2109Thomas Schilling <nominolo@googlemail.com>**20081122143018]
2110[Report source span instead of just source location for unused names.
2111Thomas Schilling <nominolo@googlemail.com>**20081122142641]
2112[Change 'handleFlagWarnings' to throw exceptions instead of dying.
2113Thomas Schilling <nominolo@googlemail.com>**20081122130658
2114 
2115 It now uses the standard warning log and error reporting mechanism.
2116]
2117[Document exported functions in main/HeaderInfo.
2118Thomas Schilling <nominolo@googlemail.com>**20081121145307]
2119[Remove warning supression klugde in main/HeaderInfo
2120Thomas Schilling <nominolo@googlemail.com>**20081121144155]
2121[Use mutator threads to do GC, instead of having a separate pool of GC threads
2122Simon Marlow <marlowsd@gmail.com>**20081121151233
2123 
2124 Previously, the GC had its own pool of threads to use as workers when
2125 doing parallel GC.  There was a "leader", which was the mutator thread
2126 that initiated the GC, and the other threads were taken from the pool.
2127 
2128 This was simple and worked fine for sequential programs, where we did
2129 most of the benchmarking for the parallel GC, but falls down for
2130 parallel programs.  When we have N mutator threads and N cores, at GC
2131 time we would have to stop N-1 mutator threads and start up N-1 GC
2132 threads, and hope that the OS schedules them all onto separate cores.
2133 It practice it doesn't, as you might expect.
2134 
2135 Now we use the mutator threads to do GC.  This works quite nicely,
2136 particularly for parallel programs, where each mutator thread scans
2137 its own spark pool, which is probably in its cache anyway.
2138 
2139 There are some flag changes:
2140 
2141   -g<n> is removed (-g1 is still accepted for backwards compat).
2142   There's no way to have a different number of GC threads than mutator
2143   threads now.
2144 
2145   -q1       Use one OS thread for GC (turns off parallel GC)
2146   -qg<n>    Use parallel GC for generations >= <n> (default: 1)
2147 
2148 Using parallel GC only for generations >=1 works well for sequential
2149 programs.  Compiling an ordinary sequential program with -threaded and
2150 running it with -N2 or more should help if you do a lot of GC.  I've
2151 found that adding -qg0 (do parallel GC for generation 0 too) speeds up
2152 some parallel programs, but slows down some sequential programs.
2153 Being conservative, I left the threshold at 1.
2154 
2155 ToDo: document the new options.
2156 
2157]
2158[we shouldn't update topBound in discardSparks()
2159Simon Marlow <marlowsd@gmail.com>**20081121113539]
2160[Throw SourceErrors instead of ProgramErrors in main/HeaderInfo.
2161Thomas Schilling <nominolo@googlemail.com>**20081121141339
2162 
2163 Parse errors during dependency analysis or options parsing really
2164 shouldn't kill GHC; this is particularly annoying for GHC API clients.
2165]
2166[fix the build when !USE_MMAP
2167Simon Marlow <marlowsd@gmail.com>**20081121085418]
2168[round the size up to a page in mmapForLinker() instead of in the caller
2169Simon Marlow <marlowsd@gmail.com>**20081120154014]
2170[Fix a race in the deadlock-detection code
2171Simon Marlow <marlowsd@gmail.com>**20081120112438
2172 After a deadlock it was possible for the timer signal to remain off,
2173 which meant that the next deadlock would not be detected, and the
2174 system would hang.  Spotted by conc047(threaded2).
2175]
2176[error message wibble
2177Simon Marlow <marlowsd@gmail.com>**20081120084901]
2178[Fix flag name -XDisambiguateRecordFields
2179simonpj@microsoft.com**20081120123205]
2180[Fix regTableToCapability() if gcc introduces padding
2181Simon Marlow <marlowsd@gmail.com>**20081119162910
2182 Also avoid padding if possible using __attribute__((packed))
2183 Fixes the Windows build
2184]
2185[Fix 32-bit breakage
2186Simon Marlow <marlowsd@gmail.com>**20081119145429]
2187[Small refactoring, and add comments
2188Simon Marlow <marlowsd@gmail.com>**20081119143702
2189 I discovered a new invariant while experimenting (blackholing is not
2190 optional when using parallel GC), so documented it.
2191]
2192[Fix some unsigned comparisions that should be signed
2193Simon Marlow <marlowsd@gmail.com>**20081119143205
2194 Fixes crashes when using reclaimSpark() (not used currently, but may
2195 be in the future).
2196]
2197[Remove incorrect assertions in steal()
2198Simon Marlow <marlowsd@gmail.com>**20081119143043]
2199[don't run sparks if there are other threads on this Capability
2200Simon Marlow <marlowsd@gmail.com>**20081114121022]
2201[Fix typo (HAVE_LIBGMP => HAVE_LIB_GMP); omit local gmp includes if HAVE_LIB_GMP
2202Simon Marlow <marlowsd@gmail.com>**20081119131056
2203 If we're using the system's installed GMP, we don't want to be picking
2204 up the local gmp.h header file.
2205 
2206 Fixes 2469(ghci) for me, because it turns out the system's GMP is more
2207 up-to-date than GHC's version and has a fix for more recent versions
2208 of gcc.  We also need to pull in a more recent GMP, but that's a
2209 separte issue.
2210]
2211[Fix some more shutdown races
2212Simon Marlow <marlowsd@gmail.com>**20081119124848
2213 There were races between workerTaskStop() and freeTaskManager(): we
2214 need to be sure that all Tasks have exited properly before we start
2215 tearing things down.  This isn't completely straighforward, see
2216 comments for details.
2217]
2218[Add help messages about --with-editline-(includes,libraries) to the ghc configure script.
2219Judah Jacobson <judah.jacobson@gmail.com>**20081114183334]
2220[Add optional eager black-holing, with new flag -feager-blackholing
2221Simon Marlow <marlowsd@gmail.com>**20081118142442
2222 
2223 Eager blackholing can improve parallel performance by reducing the
2224 chances that two threads perform the same computation.  However, it
2225 has a cost: one extra memory write per thunk entry. 
2226 
2227 To get the best results, any code which may be executed in parallel
2228 should be compiled with eager blackholing turned on.  But since
2229 there's a cost for sequential code, we make it optional and turn it on
2230 for the parallel package only.  It might be a good idea to compile
2231 applications (or modules) with parallel code in with
2232 -feager-blackholing.
2233 
2234 ToDo: document -feager-blackholing.
2235]
2236[Fix #2783: detect black-hole loops properly
2237Simon Marlow <marlowsd@gmail.com>**20081117144515
2238 At some point we regressed on detecting simple black-hole loops.  This
2239 happened due to the introduction of duplicate-work detection for
2240 parallelism: a black-hole loop looks very much like duplicate work,
2241 except it's duplicate work being performed by the very same thread.
2242 So we have to detect and handle this case.
2243]
2244[Fix warning on Windows (use deleteThread() not deleteThread_())
2245Simon Marlow <marlowsd@gmail.com>**20081117143047]
2246[fix compile breakage on Windows
2247Simon Marlow <marlowsd@gmail.com>**20081117142831]
2248[Attempt to fix #2512 and #2063;  add +RTS -xm<address> -RTS option
2249Simon Marlow <marlowsd@gmail.com>**20081117120556
2250 On x86_64, the RTS needs to allocate memory in the low 2Gb of the
2251 address space.  On Linux we can do this with MAP_32BIT, but sometimes
2252 this doesn't work (#2512) and other OSs don't support it at all
2253 (#2063).  So to work around this:
2254 
2255   - Try MAP_32BIT first, if available.
2256 
2257   - Otherwise, try allocating memory from a fixed address (by default
2258     1Gb)
2259 
2260   - We now provide an option to configure the address to allocate
2261     from.  This allows a workaround on machines where the default
2262     breaks, and also provides a way for people to test workarounds
2263     that we can incorporate in future releases.
2264]
2265[Another shutdown fix
2266Simon Marlow <marlowsd@gmail.com>**20081117094350
2267 If we encounter a runnable thread during shutdown, just kill it.  All
2268 the threads are supposed to be dead at this stage, but this catches
2269 threads that might have just returned from a foreign call, or were
2270 finalizers created by the GC.
2271 
2272 Fixes memo002(threaded1)
2273]
2274[Correct an example in the users guide
2275Ian Lynagh <igloo@earth.li>**20081116174938]
2276[Fix gen_contents_index when not run inplace; trac #2764
2277Ian Lynagh <igloo@earth.li>**20081116174122
2278 Based on a patch from juhpetersen.
2279]
2280[close the temporary Handle before removing the file
2281Simon Marlow <marlowsd@gmail.com>**20081114130958]
2282[refactor: move unlockClosure() into SMPClosureOps() where it should be
2283Simon Marlow <marlowsd@gmail.com>**20081114095817]
2284[Omit definitions of cas() and xchg() in .hc code
2285Simon Marlow <marlowsd@gmail.com>**20081114095738
2286 They cause compilation errors (correctly) with newer gccs
2287 Shows up compiling the RTS via C, which happens on Windows
2288]
2289[Don't put stdin into non-blocking mode (#2778, #2777)
2290Simon Marlow <marlowsd@gmail.com>**20081114130546
2291 This used to be necessary when our I/O library needed all FDs in
2292 O_NONBLOCK mode, and readline used to put stdin back into blocking
2293 mode.  Nowadays the I/O library can cope with FDs in blocking mode,
2294 and #2778/#2777 show why this is important.
2295]
2296[Rmoeve --enable-dotnet
2297Simon Marlow <marlowsd@gmail.com>**20081114124929]
2298[#2751: disourage --enable-shared in ./configure --help
2299Simon Marlow <marlowsd@gmail.com>**20081114124748]
2300[add a warning that --enable-shared is experimental
2301Simon Marlow <marlowsd@gmail.com>**20081114104034]
2302[lookupSymbol: revert to looking up both with and without the @N suffix
2303Simon Marlow <marlowsd@gmail.com>**20081113122927]
2304[#2768: fix compatibility problem with newer version of mingw
2305Simon Marlow <marlowsd@gmail.com>**20081113114626]
2306[notice ^C exceptions when waiting for I/O
2307Simon Marlow <marlowsd@gmail.com>**20081113114342]
2308[Fix a bug in the recompilation checking logic.
2309Thomas Schilling <nominolo@googlemail.com>**20081113162653
2310 
2311 Previously, using target HscNothing resulted in unnessesary
2312 recompilation because 'upsweep_mod' treated HscInterface specially.
2313 This patch changes relaxes this.
2314 
2315 When running GHC with debug level 5, 'upsweep_mod' will now also be
2316 more verbose about what it is doing.
2317 
2318 There is (at least) one possible remaining problem, though: When using
2319 target 'HscNothing' we generate a fake linkable to signal that we have
2320 processed a module.  When switching to 'HscInterpreted' this may cause
2321 objects to not be recompiled.  Switching from HscNothing to
2322 HscInterpreted is therefore only safe if we unload everything first.
2323]
2324[Fix another subtle shutdown deadlock
2325Simon Marlow <marlowsd@gmail.com>**20081113160005
2326 The problem occurred when a thread tries to GC during shutdown.  In
2327 order to GC it has to acquire all the Capabilities in the system, but
2328 during shutdown, some of the Capabilities have already been closed and
2329 can never be acquired.
2330]
2331[Fix an extremely subtle deadlock bug on x86_64
2332Simon Marlow <marlowsd@gmail.com>**20081113155730
2333 The recent_activity flag was an unsigned int, but we sometimes do a
2334 64-bit xchg() on it, which overwrites the next word in memory.  This
2335 happened to contain the sched_state flag, which is used to control the
2336 orderly shutdown of the system.  If the xchg() happened during
2337 shutdown, the scheduler would get confused and deadlock.  Don't you
2338 just love C?
2339]
2340[move an assertion
2341Simon Marlow <marlowsd@gmail.com>**20081113154542]
2342[Always zap the trailing @N from symbols when looking up in a DLL
2343Simon Marlow <marlowsd@gmail.com>**20081112111518
2344 
2345 Fixes win32002(ghci)
2346 
2347 Previously we only did this for references from object files, but we
2348 should do it for all symbols, including those that GHCi looks up due
2349 to FFI calls from bytecode.
2350]
2351[Only allocate a mark stack if we're actually doing marking
2352Simon Marlow <marlowsd@gmail.com>**20081112112144
2353 saves a bit of memory in major GCs
2354]
2355[Fix parse error with older gccs (#2752)
2356Simon Marlow <marlowsd@gmail.com>**20081111135344]
2357[Fix to i386_insert_ffrees (#2724, #1944)
2358Simon Marlow <marlowsd@gmail.com>**20081111125619
2359 The i386 native code generator has to arrange that the FPU stack is
2360 clear on exit from any function that uses the FPU.  Unfortunately it
2361 was getting this wrong (and has been ever since this code was written,
2362 I think): it was looking for basic blocks that used the FPU and adding
2363 the code to clear the FPU stack on any non-local exit from the block.
2364 In fact it should be doing this on a whole-function basis, rather than
2365 individual basic blocks.
2366]
2367[Fix bootstrap with 6.10.1 on Windows
2368Simon Marlow <marlowsd@gmail.com>**20081110134318
2369 ghc-pkg doesn't understand the old syntax any more, so 'ghc-pkg -l' fails
2370]
2371[Perform case-insensitive matching of path components in getBaseDir on Windows (Fixes bug 2743)
2372Neil Mitchell <ndmitchell@gmail.com>**20081105134315]
2373[Documentation only.  Clarify that 'load*' may indeed throw SourceErrors.
2374Thomas Schilling <nominolo@googlemail.com>**20081110175614
2375 
2376 I don't think errors during dependency analysis should be passed to
2377 the logger.
2378]
2379[Fix documentation (to say the opposite).
2380Thomas Schilling <nominolo@googlemail.com>**20081110153819]
2381[Fix line numbers in TAGS files.
2382Thomas Schilling <nominolo@googlemail.com>**20081110153621]
2383[Documentation only.
2384Thomas Schilling <nominolo@googlemail.com>**20081110153456]
2385[Add 'packageDbModules' function to GHC API.
2386Thomas Schilling <nominolo@googlemail.com>**20081110143510
2387 
2388 This function returns a list of all modules available through the
2389 package DB.
2390 
2391 MERGE TO 6.10
2392]
2393[We now require GHC 6.6, so we always have Applicative
2394Ian Lynagh <igloo@earth.li>**20081108144723]
2395[Remove a CPP test that's always true (__GLASGOW_HASKELL__ >= 605)
2396Ian Lynagh <igloo@earth.li>**20081108144544]
2397[Remove some dead code now that __GLASGOW_HASKELL__ >= 606
2398Ian Lynagh <igloo@earth.li>**20081108144459]
2399[Remove some flag duplication from a Makefile
2400Ian Lynagh <igloo@earth.li>**20081108144412]
2401[ghc_ge_605 is now always YES
2402Ian Lynagh <igloo@earth.li>**20081108144328]
2403[Remove the GHC 6.4 unicode compat stuff; we can now just use Data.Char
2404Ian Lynagh <igloo@earth.li>**20081108143423]
2405[Fix libffi bindist
2406Clemens Fruhwirth <clemens@endorphin.org>**20081108094725]
2407[Replace couple of fromJust with expectJust
2408Clemens Fruhwirth <clemens@endorphin.org>**20081107160735]
2409[Bugfix for patch "Do not filter the rts from linked libraries..." (#2745)
2410Simon Marlow <marlowsd@gmail.com>**20081107092925
2411 The sense of the #ifdef was wrong
2412]
2413[fix via-C compilation: import ghczmprim_GHCziBool_False_closure
2414Simon Marlow <marlowsd@gmail.com>**20081107090432]
2415[disable instance MonadPlus CoreM for GHC <= 6.6
2416Simon Marlow <marlowsd@gmail.com>**20081107085250]
2417[re-instate counting of sparks converted
2418Simon Marlow <marlowsd@gmail.com>**20081106160810
2419 lost in patch "Run sparks in batches"
2420]
2421[fix ASSERT_SPARK_POOL_INVARIANTS(): top>bottom is valid
2422Simon Marlow <marlowsd@gmail.com>**20081106155826]
2423[pruneSparkQueue(): fix bug when top>bottom
2424Simon Marlow <marlowsd@gmail.com>**20081106155648]
2425[don't yield if the system is shutting down
2426Simon Marlow <marlowsd@gmail.com>**20081106155356]
2427[leave out ATTRIBUTE_ALIGNED on Windows, it gives a warning
2428Simon Marlow <marlowsd@gmail.com>**20081106132105]
2429[Cope with ThreadRelocated when traversing the blocked_queue
2430Simon Marlow <marlowsd@gmail.com>**20081106114045
2431 Fixes "invalid what_next field" in ioref001 on Windows, and perhaps others
2432]
2433[Remove dead code.
2434Thomas Schilling <nominolo@googlemail.com>**20081031162036]
2435[Run sparks in batches, instead of creating a new thread for each one
2436Simon Marlow <marlowsd@gmail.com>**20081106113639
2437 Signficantly reduces the overhead for par, which means that we can
2438 make use of paralellism at a much finer granularity.
2439]
2440[allocateInGen(): increase alloc_blocks (#2747)
2441Simon Marlow <marlowsd@gmail.com>**20081106113714]
2442[disable MonadPlus instance that doesn't compile with 6.6
2443Simon Marlow <marlowsd@gmail.com>**20081106100411]
2444[don't yield the Capability if blackholes_need_checking
2445Simon Marlow <marlowsd@gmail.com>**20081105154928]
2446[deadlock fix: reset the flag *after* checking the blackhole queue
2447Simon Marlow <marlowsd@gmail.com>**20081105150542]
2448[retreat the top/bottom fields of the spark pool in pruneSparkPool()
2449Simon Marlow <marlowsd@gmail.com>**20081105150359]
2450[fix the :help docs for :set stop (#2737)
2451Simon Marlow <marlowsd@gmail.com>**20081104092929]
2452[bugfix: don't ingore the return value from rts_evalIO()
2453Simon Marlow <marlowsd@gmail.com>**20081104142147]
2454[Document the new SPARKS statistic, and xref from the parallelism section
2455Simon Marlow <marlowsd@gmail.com>**20081024120236]
2456[Move the freeing of Capabilities later in the shutdown sequence
2457Simon Marlow <marlowsd@gmail.com>**20081024104301
2458 Fixes a bug whereby the Capability has been freed but other
2459 Capabilities are still trying to steal sparks from its pool.
2460]
2461[Pad Capabilities and Tasks to 64 bytes
2462Simon Marlow <marlowsd@gmail.com>**20081023080749
2463 This is just good practice to avoid placing two structures heavily
2464 accessed by different CPUs on the same cache line
2465]
2466[Fix desugaring of record update (fixes Trac #2735)
2467simonpj@microsoft.com**20081103110819]
2468[Refuse to register packages with unversioned dependencies; trac #1837
2469Ian Lynagh <igloo@earth.li>**20081031181746]
2470[We now require GHC 6.6 to build the HEAD (and thus 6.12)
2471Ian Lynagh <igloo@earth.li>**20081031171506]
2472[:set prompt now understand Haskell String syntax; trace #2652
2473Ian Lynagh <igloo@earth.li>**20081031145227]
2474[Comments only
2475simonpj@microsoft.com**20081031140236]
2476[Quickfix for warning.
2477Thomas Schilling <nominolo@googlemail.com>**20081031113125]
2478[Export typeclasses for accessing compiler results.
2479Thomas Schilling <nominolo@googlemail.com>**20081028182310
2480 
2481 MERGE TO 6.10.
2482]
2483[Minor refactoring.
2484Thomas Schilling <nominolo@googlemail.com>**20081028182202]
2485[Include record fields in tags.
2486Thomas Schilling <nominolo@googlemail.com>**20081028180538]
2487[Fix imports
2488simonpj@microsoft.com**20081031092306]
2489[Improve error reporting for non-rigid GADT matches
2490simonpj@microsoft.com**20081030143947
2491 
2492 Following suggestions from users, this patch improves the error message
2493 when a GADT match needs a rigid type:
2494 
2495  tcfail172.hs:19:10:
2496      GADT pattern match in non-rigid context for `Nil'
2497 -      Solution: add a type signature
2498 +      Probable solution: add a type signature for `is_normal'
2499      In the pattern: Nil
2500      In the definition of `is_normal': is_normal Nil = True
2501 
2502 Now GHC tries to tell you what to give a type signature *for*.
2503 Thanks to Daniel Gorin and others for the suggestions.
2504 
2505]
2506[Add (a) CoreM monad, (b) new Annotations feature
2507simonpj@microsoft.com**20081030125108
2508 
2509 This patch, written by Max Bolingbroke,  does two things
2510 
2511 1.  It adds a new CoreM monad (defined in simplCore/CoreMonad),
2512     which is used as the top-level monad for all the Core-to-Core
2513     transformations (starting at SimplCore).  It supports
2514        * I/O (for debug printing)
2515        * Unique supply
2516        * Statistics gathering
2517        * Access to the HscEnv, RuleBase, Annotations, Module
2518     The patch therefore refactors the top "skin" of every Core-to-Core
2519     pass, but does not change their functionality.
2520 
2521 2.  It adds a completely new facility to GHC: Core "annotations".
2522     The idea is that you can say
2523        {#- ANN foo (Just "Hello") #-}
2524     which adds the annotation (Just "Hello") to the top level function
2525     foo.  These annotations can be looked up in any Core-to-Core pass,
2526     and are persisted into interface files.  (Hence a Core-to-Core pass
2527     can also query the annotations of imported things.)  Furthermore,
2528     a Core-to-Core pass can add new annotations (eg strictness info)
2529     of its own, which can be queried by importing modules.
2530 
2531 The design of the annotation system is somewhat in flux.  It's
2532 designed to work with the (upcoming) dynamic plug-ins mechanism,
2533 but is meanwhile independently useful.
2534 
2535 Do not merge to 6.10! 
2536 
2537]
2538[Fix Trac #2674: in TH reject empty case expressions and function definitions
2539simonpj@microsoft.com**20081030094528]
2540[Change naming conventions for compiler-generated dictionaries and type functions
2541simonpj@microsoft.com**20081029140858
2542 
2543 Up to now, the data constructor dictionary for class C as been called
2544 ":DC". But there is no reason for the colon to be at the front; indeed
2545 it confuses the (simple-minded) pretty-printer for types.  So this
2546 patch changes it to be "D:C".  This makes Core a lot easier to read.
2547 Having a colon in the middle ensures that it can't clash with a user-written
2548 data type.
2549 
2550 Similarly I changed
2551 
2552   T:C     Data type corresponding a class dictionary (was :TC)
2553   D:C     Data constructor for class dictionary (was :DC)
2554 
2555   NTCo:T   Coercion mapping from a newtype T to its representation type
2556                (was :CoT)
2557 
2558   TFCo:R   Coercion mapping from a data family to its respresentation type R
2559                (was :CoFR)
2560 
2561   Rn:T     The n'th respresentation data type for a data type T
2562                (was :RnT)
2563 
2564 
2565 Do not merge to 6.10.
2566 
2567 HEADS-UP: you'll need to recompile libraries from scratch. 
2568 
2569 ROMAN: you could do the same for OccName.mkVectTyConOcc etc, if you wanted.
2570 
2571 
2572]
2573[Fix tcrun031: yet more tidying up in TcDeriv
2574simonpj@microsoft.com**20081029130155]
2575[Add Outputable instance for CoercionI
2576simonpj@microsoft.com**20081029130114]
2577[Fix Trac #2720: inlining and casts
2578simonpj@microsoft.com**20081028140828
2579 
2580 The issue here is what happens when we have
2581 
2582        (f |> co) x
2583 
2584 where f is itself marked INLINE.  We want callSiteInline to "see"
2585 the fact that the function is applied, and hence have some incentive
2586 to inline.  I've done this by extending CoreUnfold.CallCtxt with
2587 ValAppCtxt.  I think that should catch this case without messing up
2588 any of the others.
2589 
2590]
2591[Clarify documentatoin
2592simonpj@microsoft.com**20081028133009]
2593[Update library version numbers in the release notes
2594Ian Lynagh <igloo@earth.li>**20081023144018]
2595[various updates to the release notes
2596Simon Marlow <marlowsd@gmail.com>**20081007151647]
2597[Add library release notes
2598Ian Lynagh <igloo@earth.li>**20080920155722]
2599[Add release notes for the compiler
2600Ian Lynagh <igloo@earth.li>**20080920114857]
2601[Doc fix
2602Ian Lynagh <igloo@earth.li>**20081028150534]
2603[Rename some variables in docs
2604Ian Lynagh <igloo@earth.li>**20081028150447]
2605[Fix typos
2606Ian Lynagh <igloo@earth.li>**20081028144655]
2607[Mostly-fix Trac #2595: updates for existentials
2608simonpj@microsoft.com**20081028115427
2609 
2610 Ganesh wanted to update records that involve existentials.  That
2611 seems reasonable to me, and this patch covers existentials, GADTs,
2612 and data type families.
2613 
2614 The restriction is that
2615   The types of the updated fields may mention only the
2616   universally-quantified type variables of the data constructor
2617 
2618 This doesn't allow everything in #2595 (it allows 'g' but not 'f' in
2619 the ticket), but it gets a lot closer.
2620 
2621 Lots of the new lines are comments!
2622 
2623]
2624[Fix Trac #2723: keep track of record field names in the renamer
2625simonpj@microsoft.com**20081028110445
2626 
2627 The idea here is that with -XNamedFieldPuns and -XRecordWildCards we don't
2628 want to report shadowing errors for
2629        let fld = <blah> in C { .. }
2630 But to suppress such shadowing errors, the renamer needs to know that
2631 'fld' *is* a record selector.  Hence the new NameSet in
2632 TcRnFypes.RecFieldEnv
2633 
2634]
2635[Remove dead code
2636simonpj@microsoft.com**20081028074639]
2637[Fix Trac #2713: refactor and tidy up renaming of fixity decls
2638simonpj@microsoft.com**20081027222738
2639 
2640 In fixing #2713, this patch also eliminates two almost-unused
2641 functions from RnEnv (lookupBndr and lookupBndr_maybe).  The
2642 net lines of code is prety much unchanged, but more of them
2643 are comments!
2644 
2645]
2646[Fix Trac #2701: make deriving check better for unlifted args
2647simonpj@microsoft.com**20081025171211
2648 
2649 Getting the automatic deriving mechanism to work really smoothly
2650 is surprisingly hard.  I keep finding myself in TcDeriv!
2651 
2652 Anyway, this is a nice clean fix to Trac #2701.
2653 
2654]
2655[Use pdflatex rather than latex for building
2656Ian Lynagh <igloo@earth.li>**20081024112400
2657 The Windows builder is having problems running ps2pdf, so this works
2658 aroudn the problem.
2659]
2660[Remove an unmatched } in core.tex
2661Ian Lynagh <igloo@earth.li>**20081024111750]
2662[Add a usepackage{url}
2663Ian Lynagh <igloo@earth.li>**20081024111458]
2664[Update ANNOUNCE
2665Ian Lynagh <igloo@earth.li>**20081022164423]
2666[Fix a bug in the new scheduler
2667Simon Marlow <marlowsd@gmail.com>**20081023155017
2668 If the current thread blocks, we should yield the Capability
2669 immediately, because the thread and hence possibly the current Task
2670 are now owned by someone else.  This worked in the old scheduler, but
2671 we moved where the yield happens in the new scheduler which broke it.
2672]
2673[add an assertion
2674Simon Marlow <marlowsd@gmail.com>**20081023154551]
2675[fix a warning
2676Simon Marlow <marlowsd@gmail.com>**20081023082213]
2677[traverse the spark pools only once during GC rather than twice
2678Simon Marlow <marlowsd@gmail.com>**20081022115233]
2679[Refactoring and reorganisation of the scheduler
2680Simon Marlow <marlowsd@gmail.com>**20081022092744
2681 
2682 Change the way we look for work in the scheduler.  Previously,
2683 checking to see whether there was anything to do was a
2684 non-side-effecting operation, but this has changed now that we do
2685 work-stealing.  This lead to a refactoring of the inner loop of the
2686 scheduler.
2687 
2688 Also, lots of cleanup in the new work-stealing code, but no functional
2689 changes.
2690 
2691 One new statistic is added to the +RTS -s output:
2692 
2693   SPARKS: 1430 (2 converted, 1427 pruned)
2694 
2695 lets you know something about the use of `par` in the program.
2696]
2697[Work stealing for sparks
2698berthold@mathematik.uni-marburg.de**20080915132846
2699 
2700    Spark stealing support for PARALLEL_HASKELL and THREADED_RTS versions of the RTS.
2701   
2702   Spark pools are per capability, separately allocated and held in the Capability
2703   structure. The implementation uses Double-Ended Queues (deque) and cas-protected
2704   access.
2705   
2706   The write end of the queue (position bottom) can only be used with
2707   mutual exclusion, i.e. by exactly one caller at a time.
2708   Multiple readers can steal()/findSpark() from the read end
2709   (position top), and are synchronised without a lock, based on a cas
2710   of the top position. One reader wins, the others return NULL for a
2711   failure.
2712   
2713   Work stealing is called when Capabilities find no other work (inside yieldCapability),
2714   and tries all capabilities 0..n-1 twice, unless a theft succeeds.
2715   
2716   Inside schedulePushWork, all considered cap.s (those which were idle and could
2717   be grabbed) are woken up. Future versions should wake up capabilities immediately when
2718   putting a new spark in the local pool, from newSpark().
2719 
2720 Patch has been re-recorded due to conflicting bugfixes in the sparks.c, also fixing a
2721 (strange) conflict in the scheduler.
2722 
2723]
2724[include an elapsed time table
2725Simon Marlow <marlowsd@gmail.com>**20081023080648]
2726[generate a valid summary for older GHC versions too
2727Simon Marlow <marlowsd@gmail.com>**20081023080629]
2728[Fix Trac #2714 (a minor wibble)
2729simonpj@microsoft.com**20081022145138
2730 
2731 In boxy_match (which is a pure function used by preSubType) we can
2732 encounter TyVars not just TcTyVars; this patch takes account of that.
2733 
2734]
2735[Reject programs with superclass equalities for now
2736Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20081021131721
2737 - The current implementation of type families cannot properly deal
2738   with superclass equalities.  Instead of making a half-hearted attempt at
2739   supporting them, which mostly ends in cryptic error message, rejecting
2740   right away with an appropriate message.
2741 
2742   MERGE TO 6.10
2743]
2744[Fix doc syntax
2745Ian Lynagh <igloo@earth.li>**20081021183317]
2746[Don't put the README file in the Windows installer; fixes trac #2698
2747Ian Lynagh <igloo@earth.li>**20081021162543
2748 The README file talks about getting and building the sources, which
2749 doesn't make sense for the installer.
2750]
2751[Comments and parens only
2752simonpj@microsoft.com**20081021151401]
2753[Do proper cloning in worker/wrapper splitting
2754simonpj@microsoft.com**20081021143156
2755 
2756 See Note [Freshen type variables] in WwLib.  We need to clone type
2757 variables when building a worker/wrapper split, else we simply get
2758 bogus code, admittedly in rather obscure situations.  I can't quite
2759 remember what program showed this up, unfortunately, but there
2760 definitely *was* one!  (You get a Lint error.)
2761 
2762]
2763[Don't float an expression wrapped in a cast
2764simonpj@microsoft.com**20081021143019
2765 
2766 There is no point in floating out an expression wrapped in a coercion;
2767 If we do we'll transform 
2768        lvl = e |> co [_$_]
2769 to     
2770        lvl' = e; lvl = lvl' |> co
2771 and then inline lvl.  Better just to float out the payload (e).
2772 
2773]
2774[Fix Trac #2668, and refactor TcDeriv
2775simonpj@microsoft.com**20081021142922
2776 
2777 TcDeriv deals with both standalone and ordinary 'deriving';
2778 and with both data types and 'newtype deriving'.  The result
2779 is really rather compilcated and ad hoc.  Ryan discovered
2780 #2668; this patch fixes that bug, and makes the internal interfces
2781 #more uniform.  Specifically, the business of knocking off
2782 type arguments from the instance type until it matches the kind of the
2783 class, is now done by derivTyData, not mkNewTypeEqn, because the
2784 latter is shared with standalone derriving, whree the trimmed
2785 type application is what the user wrote.
2786 
2787]
2788[Spelling error in comment
2789simonpj@microsoft.com**20081019233511]
2790[White space only
2791simonpj@microsoft.com**20081019233352]
2792[Comments to explain strict overlap checking for type family instances
2793simonpj@microsoft.com**20081019184208]
2794[Allow type families to use GADT syntax (and be GADTs)
2795simonpj@microsoft.com**20080923140535
2796 
2797 We've always intended to allow you to use GADT syntax for
2798 data families:
2799        data instance T [a] where
2800          T1 :: a -> T [a]
2801 and indeed to allow data instances to *be* GADTs
2802        data intsance T [a] where
2803          T1 :: Int -> T [Int]
2804          T2 :: a -> b -> T [(a,b)]
2805 
2806 This patch fixes the renamer and type checker to allow this.
2807       
2808]
2809[Improve crash message from applyTys and applyTypeToArgs
2810simonpj@microsoft.com**20080923135419]
2811[Wibble to ungrammatical error message
2812simonpj@microsoft.com**20080920232256]
2813[Comments only: replace ":=:" by "~" (notation for equality predicates)
2814simonpj@microsoft.com**20080920232024]
2815[FIX #2693
2816Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20081021120107
2817 - As long as the first reduceContext in tcSimplifyRestricted potentially
2818   performs improvement, we need to zonk again before the second reduceContext.
2819   It would be better to prevent the improvement in the first place, but given
2820   the current situation zonking is definitely the right thing to do.
2821 
2822   MERGE TO 6.10
2823]
2824[Restore the terminal attributes even if ghci does not exit normally.
2825Judah Jacobson <judah.jacobson@gmail.com>**20081020164109]
2826[FIX #2688
2827Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20081021044213
2828 - Change in TcSimplify.reduceContext:
2829 
2830      We do *not* go around for new extra_eqs.  Morally, we should,
2831      but we can't without risking non-termination (see #2688).  By
2832      not going around, we miss some legal programs mixing FDs and
2833      TFs, but we never claimed to support such programs in the
2834      current implementation anyway.
2835 
2836   MERGE TO 6.10
2837]
2838[Move documentation within 80 column boundary.
2839Thomas Schilling <nominolo@googlemail.com>**20081014134016]
2840[Improve haddock documentation for 'GHC.topSortModuleGraph'.
2841Thomas Schilling <nominolo@googlemail.com>**20081014133833]
2842[Improve haddock documentation for HsExpr module.
2843Thomas Schilling <nominolo@googlemail.com>**20081014133740]
2844[Improve Haddock-markup for HsDecls module.
2845Thomas Schilling <nominolo@googlemail.com>**20081014133556]
2846[Run Haddock with compacting GC and show RTS statistics.
2847Thomas Schilling <nominolo@googlemail.com>**20081020111410]
2848[FIX (partially) #2703: bug in stack overflow handling when inside block
2849Simon Marlow <marlowsd@gmail.com>**20081020121103
2850 As a result of a previous ticket (#767) we disabled the generation of
2851 StackOverflow exceptions when inside a Control.Exception.block, on the
2852 grounds that StackOverflow is like an asynchronous exception.  Instead
2853 we just increase the stack size.  However, the stack size calculation
2854 was wrong, and ended up not increasing the size of the stack, with the
2855 result that the runtime just kept re-allocating the stack and filling
2856 up memory.
2857]
2858[Re-export Located(..) and related functions
2859Simon Marlow <marlowsd@gmail.com>**20081020102422
2860 So that clients don't need to import SrcLoc
2861]
2862[whitespace fix
2863Simon Marlow <marlowsd@gmail.com>**20081020101241]
2864[FIX #2691: Manually reset the terminal to its initial settings; works around a bug in libedit.
2865Judah Jacobson <judah.jacobson@gmail.com>**20081016024838]
2866[Eliminate duplicate flags in the tab completion of ghci's :set command.
2867Judah Jacobson <judah.jacobson@gmail.com>**20081016015721]
2868[Add dph haddock docs to the doc index
2869Ian Lynagh <igloo@earth.li>**20081019133208]
2870[Clean the bootstrapping extensible-exceptions package
2871Ian Lynagh <igloo@earth.li>**20081017195942]
2872[Fix trac #2687
2873Ian Lynagh <igloo@earth.li>**20081015163412
2874 OtherPunctuation, ConnectorPunctuation and DashPunctuation are now
2875 treated as symbols, rather than merely graphic characters.
2876]
2877[Fix trac #2680; avoid quadratic behaviour from (++)
2878Ian Lynagh <igloo@earth.li>**20081015163235]
2879[Fix the build when the bootstrapping compiler has a newer Cabal than us
2880Ian Lynagh <igloo@earth.li>**20081015144023
2881 We need to forcibly use the in-tree Cabal, or we get version mismatch errors
2882]
2883[Fix the name of prologue.txt when making bindists
2884Ian Lynagh <igloo@earth.li>**20081014114714]
2885[Comments only
2886simonpj@microsoft.com**20081015084501]
2887[Fix Trac #2497; two separate typos in Lexer.x
2888simonpj@microsoft.com**20081015084344
2889 
2890 The patch to switch on lexing of 'forall' inside a RULES pragma
2891 wasn't working.  This fixes it so that it does.
2892 
2893]
2894[Update manual: tidy up instances, say more about type families in instance decls
2895simonpj@microsoft.com**20081015080509]
2896[Make tags work on Unices, too.
2897Thomas Schilling <nominolo@googlemail.com>**20081014211236]
2898[Undefine __PIC__ before defining it to work around "multiple definitions of __PIC__" warnings
2899Clemens Fruhwirth <clemens@endorphin.org>**20081014143206]
2900[Add "dyn" to GhcRTSWays when compiling --enable-shared
2901Clemens Fruhwirth <clemens@endorphin.org>**20081014125123]
2902[Fill out the ghc package's cabal file
2903Ian Lynagh <igloo@earth.li>**20081013235817]
2904[Patching libffi so it can be built as DLL
2905Clemens Fruhwirth <clemens@endorphin.org>**20081014103459
2906 
2907 libffi-dllize-3.0.6.patch should be pushed upstream
2908]
2909[Add 'etags' makefile target.
2910Thomas Schilling <nominolo@googlemail.com>**20081013170927
2911 
2912 This only works with stage2 since `ghctags' is built against stage1
2913 but not against the bootstrapping compiler.  Also note that all of GHC
2914 must typecheck for this target to succeed.  Perhaps we should not
2915 overwrite the old TAGS file by default then.
2916]
2917[Use cabal information to get GHC's flags to `ghctags'.
2918Thomas Schilling <nominolo@googlemail.com>**20081013170658
2919 
2920 By giving the dist-directory to ghctags we can get all the GHC API
2921 flags we need in order to load the required modules.  The flag name
2922 could perhaps be improved, but apart from that it seems to work well.
2923]
2924[Version bump for libffi to 3.0.6
2925Clemens Fruhwirth <clemens@endorphin.org>**20081014081300]
2926[Encode shared/static configuration into stamps to do the right thing when rebuilding
2927Clemens Fruhwirth <clemens@endorphin.org>**20081013221530]
2928[Add a link to the GHC API docs from the library haddock index
2929Ian Lynagh <igloo@earth.li>**20081013195943]
2930[Link to the GHC API documentation from the main doc page
2931Ian Lynagh <igloo@earth.li>**20081013200927]
2932[Whitespace only in docs/index.html
2933Ian Lynagh <igloo@earth.li>**20081013200625]
2934[Tweak gen_contents_index
2935Ian Lynagh <igloo@earth.li>**20081013192548
2936 It now works again after it has been installed, as well as while it is
2937 in a source tree.
2938 After it's been installed it filters out the ghc package, as that
2939 currently swamps everything else in the index.
2940]
2941[Build fixes for DLLized rts
2942Clemens Fruhwirth <clemens@endorphin.org>**20081013201608]
2943[Do not filter the rts from linked libraries in linkDynLib as Windows does not allow unresolved symbols
2944Clemens Fruhwirth <clemens@endorphin.org>**20081013201426]
2945[Add HsFFI.o to INSTALL_LIBS
2946Clemens Fruhwirth <clemens@endorphin.org>**20081013200945]
2947[Rename symbol macros to a consistant naming scheme
2948Clemens Fruhwirth <clemens@endorphin.org>**20081013162433]
2949[Fix #2685: two Bool arguments to tidyTypeEnv were the wrong way around
2950Simon Marlow <marlowsd@gmail.com>**20081013121339
2951 So -XTemplateHaskell was behaving like -fomit-interface-file-pragmas,
2952 and vice versa.
2953]
2954[Simplify the "is $bindir in $PATH" test
2955Ian Lynagh <igloo@earth.li>**20081011191008]
2956[Correct the "is $bindir in $PATH" test
2957Ian Lynagh <igloo@earth.li>**20081011191030
2958 We were testing neq instead of eq
2959]
2960[Fix a typo which was causing ghci to quit on commands errors
2961pepe <mnislaih@gmail.com>**20081011114720]
2962[Drop libm from the linker dependencies for libffi
2963Clemens Fruhwirth <clemens@endorphin.org>**20081011074524]
2964[Do not generate haddock documentation when running install-docs in libffi
2965Clemens Fruhwirth <clemens@endorphin.org>**20081010192318]
2966[When waking up thread blocked on TVars, wake oldest first (#2319)
2967Josef Svenningsson <josef.svenningsson@gmail.com>**20081010150322
2968 StgTVarWatchQueue contains the threads blocked on a TVar in order
2969 youngest first. The list has to be traversed backwards to unpark the threads
2970 oldest first.
2971 
2972 This improves the fairness when using STM in some situations.
2973]
2974[add readTVarIO :: TVar a -> IO a
2975Simon Marlow <marlowsd@gmail.com>**20081010131545]
2976[fix #2636: throw missing module errors as SourceErrors, not ErrMsg
2977Simon Marlow <marlowsd@gmail.com>**20081010131535]
2978[atomicModifyIORef: use a local cas() instead of the global lock
2979Simon Marlow <simonmar@microsoft.com>**20081008154702
2980 This should improve scaling when using atomicModifyIORef
2981]
2982[Delay building libffi until package.conf is created and fix bindist
2983Clemens Fruhwirth <clemens@endorphin.org>**20081010073106]
2984[Install a versioned ghc-pkg script; fixes trac #2662
2985Ian Lynagh <igloo@earth.li>**20081009164946]
2986[Fix bindist creation: Only the main RTS was being put in the bindists
2987Ian Lynagh <igloo@earth.li>**20081009163451]
2988[pushAtom: add missing case for MachNullAddr (#2589)
2989Simon Marlow <marlowsd@gmail.com>**20081009091118]
2990[undo incorrect assertion, and fix comments
2991Simon Marlow <marlowsd@gmail.com>**20081009085118]
2992[remove old GRAN/PARALLEL_HASKELL code
2993Simon Marlow <marlowsd@gmail.com>**20081009085051]
2994[FIX #2639
2995Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20081009132328
2996 
2997   MERGE TO 6.10
2998]
2999[Cover PredTy case in Type.tyFamInsts
3000Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20081009061435
3001 
3002   MERGE TO 6.10
3003]
3004[Drop ghcconfig.h/RtsConfig.h from libffi's package.conf.in
3005Clemens Fruhwirth <clemens@endorphin.org>**20081009071342]
3006[Don't use sed's -i flag as Solaris doesn't know it in libffi/Makefile
3007Clemens Fruhwirth <clemens@endorphin.org>**20081008234455]
3008[Don't use /dev/null trick to create empty object files in libffi/Makefile
3009Clemens Fruhwirth <clemens@endorphin.org>**20081008232902]
3010[Turn libffi into a Haskell package
3011Clemens Fruhwirth <clemens@endorphin.org>**20081008170443]
3012[Make 'getModSummary' deterministic.
3013Thomas Schilling <nominolo@googlemail.com>**20081008144032]
3014[Add accessors to 'HsModule' and haddockify it.
3015Thomas Schilling <nominolo@googlemail.com>**20081007235656]
3016[fix syntax errors in src-dist publish rules
3017Simon Marlow <marlowsd@gmail.com>**20081008103432]
3018[add comments and an ASSERT_LOCK_HELD()
3019Simon Marlow <marlowsd@gmail.com>**20081008112627]
3020[Fix #2663: we had a hard-wired capabilities[0]
3021Simon Marlow <marlowsd@gmail.com>**20081008112609
3022 For some unknown reason in schedulePostRunThread() we were always
3023 passing capabilities[0] rather than the current Capability to
3024 throwToSingleThreaded().  This caused all kinds of weird failures and
3025 crashes in STM code when running on multiple processors.
3026]
3027[Fix #1955 for heap profiles generated by +RTS -hT
3028Simon Marlow <marlowsd@gmail.com>**20081003150745]
3029[add a section id for +RTS -hT
3030Simon Marlow <marlowsd@gmail.com>**20081007151007]
3031[update documentation for PostfixOperators
3032Simon Marlow <marlowsd@gmail.com>**20081007150957]
3033[fix markup
3034Simon Marlow <marlowsd@gmail.com>**20081007150943]
3035[Fix bug in DPH docs
3036Roman Leshchinskiy <rl@cse.unsw.edu.au>**20081008101618]
3037[Add short DPH section to users guide
3038Roman Leshchinskiy <rl@cse.unsw.edu.au>**20081008064754
3039 
3040 MERGE TO 6.10
3041]
3042[Users Guide: added type family documentation
3043Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20081008061927
3044 
3045   MERGE TO 6.10
3046]
3047[Track changes to package dph
3048Roman Leshchinskiy <rl@cse.unsw.edu.au>**20081008032859
3049 
3050 MERGE TO 6.10
3051]
3052[Build a profiled GHC API by default if p is in GhcLibWays
3053Ian Lynagh <igloo@earth.li>**20081007152318]
3054[Check whether mk/validate.mk defines anything after validating
3055Ian Lynagh <igloo@earth.li>**20081007144855]
3056[Remove #define _BSD_SOURCE from Stg.h
3057Ian Lynagh <igloo@earth.li>**20081006101959
3058 It's no longer needed, as base no longer #includes it
3059]
3060[Make ghctags compile again.
3061Thomas Schilling <nominolo@googlemail.com>**20081007135705]
3062[Revert AutoLinkPackages change for dynamic libraries. Cabal handles that now.
3063Clemens Fruhwirth <clemens@endorphin.org>**20081007100417]
3064[Change suffix for dyn. linked executables from _real to .dyn
3065Clemens Fruhwirth <clemens@endorphin.org>**20081007100750]
3066[Add accessors to 'Target' fields and haddockify.
3067Thomas Schilling <nominolo@googlemail.com>**20081006222940
3068 
3069 MERGE TO 6.10
3070]
3071[Make 'gblock' and 'gunblock' part of 'ExceptionMonad'.  This way the
3072Thomas Schilling <nominolo@googlemail.com>**20081006222831
3073 default implementations of 'gbracket' and 'gfinally' just work.
3074 
3075 MERGE TO 6.10
3076]
3077[Add Word8 support to vectoriser
3078Roman Leshchinskiy <rl@cse.unsw.edu.au>**20081007004416
3079 
3080 MERGE TO 6.10
3081]
3082[Fix generating OS X installers: Set COMMAND_MODE=unix2003
3083Ian Lynagh <igloo@earth.li>**20081005222715
3084 If we don't specify COMMAND_MODE=unix2003 then xcodebuild defaults
3085 to setting it to legacy, which means that ar builds archives
3086 without a table of contents. That makes the build fail later on.
3087]
3088[We need to set datadir = $(libdir) in bindists
3089Ian Lynagh <igloo@earth.li>**20081005143307
3090 We already do in the normal Makefiles.
3091 
3092 This is because GHC needs package.conf and unlit to be in the same place
3093 (and things like ghc-pkg need to agree on where package.conf is, so we
3094 just set it globally).
3095]
3096[prep-bin-dist-mingw complains if it finds a bad version of windres
3097Ian Lynagh <igloo@earth.li>**20081004175351]
3098[removed Data.Generics.Basics, added Data.Data
3099'Jose Pedro Magalhaes <jpm@cs.uu.nl>'**20081002082808]
3100[Fix a build problem with GHC 6.4.2
3101Ian Lynagh <igloo@earth.li>**20081003195700]
3102[No AutoLinkPackages for dynamic library linking
3103Clemens Fruhwirth <clemens@endorphin.org>**20081003185304]
3104[use ghcError for error in command line
3105Clemens Fruhwirth <clemens@endorphin.org>**20081001125648]
3106[Fix warnings
3107simonpj@microsoft.com**20081003171207]
3108[Always use extensible exceptions in ghc-pkg, rather than using ifdefs
3109Ian Lynagh <igloo@earth.li>**20081003161247]
3110[Use a proper exception for IOEnvFailure, not just a UserError
3111Ian Lynagh <igloo@earth.li>**20081003160129]
3112[Use an extensible-exceptions package when bootstrapping
3113Ian Lynagh <igloo@earth.li>**20081003140216
3114 Ifdefs for whether we had extensible exceptions or not were spreading
3115 through GHC's source, and things would only have got worse for the next
3116 2-3 years, so instead we now use an implementation of extensible
3117 exceptions built on top of the old exception type.
3118]
3119[Expunge ThFake, cure Trac #2632
3120simonpj@microsoft.com**20081003140423
3121 
3122 This patch fixes a dirty hack (the fake ThFake module), which in turn
3123 was causing Trac #2632.
3124 
3125 The new scheme is that the top-level binders in a TH [d| ... |] decl splice
3126 get Internal names.  That breaks a previous invariant that things like
3127 TyCons always have External names, but these TyCons are never long-lived;
3128 they live only long enough to typecheck the TH quotation; the result is
3129 discarded.  So it seems cool.
3130 
3131 Nevertheless -- Template Haskell folk: please test your code.  The testsuite
3132 is OK but it's conceivable that I've broken something in TH.  Let's see.
3133 
3134]
3135[Make a debug check more refined
3136simonpj@microsoft.com**20081003140144]
3137[Add ASSERTs to all calls of nameModule
3138simonpj@microsoft.com**20081003135334
3139 
3140 nameModule fails on an InternalName.  These ASSERTS tell you
3141 which call failed.
3142 
3143]
3144[Let parseModule take a ModSummary like checkAndLoadModule did.
3145Thomas Schilling <nominolo@googlemail.com>**20081002230412
3146 
3147 To get the ModSummary for a ModuleName getModSummary can be used.
3148 It's not called find* or lookup* because it assumes that the module is
3149 in the module graph and throws an exception if it cannot be found.
3150 Overall, I'm not quite sure about the usefulness of this function
3151 since the user has no control about which filetype to grab (hs or
3152 hs-boot).
3153]
3154[Remove some out-of-date entries from .darcs-boring
3155Ian Lynagh <igloo@earth.li>**20081002201519]
3156[TFs: Allow repeated variables in left-hand sides of instances
3157Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20081002134539
3158 
3159   MERGE TO 6.10
3160]
3161[Clean up some comments
3162Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20081002074642
3163 
3164   MERGE TO 6.10
3165]
3166[Make the new binder-swap stuff in OccurAnal work right for GlobalIds
3167simonpj@microsoft.com**20081002133002
3168 
3169 See Note [Binder swap on GlobalId scrutinees].  I hadn't got this
3170 right before, so repeated cases on imported Ids weren't getting optimised.
3171 
3172 
3173]
3174[Minor refactoring only
3175simonpj@microsoft.com**20081002132929]
3176[Comments only
3177simonpj@microsoft.com**20081002132833]
3178[Zap dead-ness info appropriately in SpecConstr
3179simonpj@microsoft.com**20081002132657
3180 
3181 SpecConstr can make pattern binders come alive, so we must remember
3182 to zap their dead-variable annotation.  See extendCaseBndrs.
3183 
3184 (This was triggering a Core Lint failure in DPH.)
3185 
3186]
3187[Suppress invalid Core Lint complaint about lack of constructors
3188simonpj@microsoft.com**20081002132426]
3189[add some more GC roots (fixes conc048, and possibly some others)
3190Simon Marlow <marlowsd@gmail.com>**20081001164427]
3191[Document +RTS -hT
3192Simon Marlow <marlowsd@gmail.com>**20081001163222
3193 We forgot to document this in GHC 6.8
3194]
3195[fix new-qualified-operators link
3196Simon Marlow <marlowsd@gmail.com>**20081001163105]
3197[Proper error message for unsupported pattern signatures
3198Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20081001144339
3199 - Pattern signatures must be identical to the type expected for the pattern;
3200   see Note [Pattern coercions]
3201 - We now signal an appropriate error if an equality coercion would be needed
3202   (instead of just generating Core that doesn't typecheck)
3203 
3204   MERGE TO 6.10
3205]
3206[Prevent excessive inlining with DPH
3207Roman Leshchinskiy <rl@cse.unsw.edu.au>**20081002012055
3208 
3209 This adds a new flag -finline-if-enough-args which disables inlining for
3210 partially applied functions. It is automatically set by -Odph. This is a
3211 temporary hack and should remain undocumented.
3212 
3213 MERGE TO 6.10
3214 
3215]
3216[On Windows, check that we have a good version of windres when configuring
3217Ian Lynagh <igloo@earth.li>**20081001171133]
3218[Call $(PERL) rather than perl when making the manpage
3219Ian Lynagh <igloo@earth.li>**20080930155054]
3220[don't install the installPackage program
3221Ian Lynagh <igloo@earth.li>**20080930145714]
3222[Fix #2637: conc032(threaded2) failure
3223Simon Marlow <marlowsd@gmail.com>**20081001135549
3224 There was a race condition whereby a thread doing throwTo could be
3225 blocked on a thread that had finished, and the GC would detect this
3226 as a deadlock rather than raising the pending exception.  We can't
3227 close the race, but we can make the right thing happen when the GC
3228 runs later.
3229]
3230[Remove outdated link to OGI webpage
3231Simon Marlow <marlowsd@gmail.com>**20080930150912]
3232[TFs: Fixed InstContextNorm (and simplification of IPs)
3233Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20081001131303
3234 
3235   MERGE TO 6.10
3236]
3237[TcSimplify.reduceImplication: clean up
3238Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20081001091315
3239 - This cleans up some of the mess in reduceImplication and documents the
3240   precondition on the form of wanted equalities properly.
3241 - I also made the back off test a bit smarter by allowing to back off in the
3242   presence of wanted equalities as long as none of them got solved in the
3243   attempt.  (That should save generating some superfluous bindings.)
3244 
3245   MERGE TO 6.10
3246]
3247[Make sure to zonk the kind of coercion variables
3248Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20081001053243
3249 
3250   MERGE TO 6.10
3251]
3252[Remover PROT_EXEC flag from mmap()
3253Simon Marlow <marlowsd@gmail.com>**20080930141842
3254 Needed for #738 fix
3255]
3256[Fix #2410: carefully generate unique names for CAF CCs
3257Simon Marlow <marlowsd@gmail.com>**20080930141812]
3258[fix #2594: we were erroneously applying masks, as the reporter suggested
3259Simon Marlow <marlowsd@gmail.com>**20080930115611
3260 My guess is that this is left over from when we represented Int8 and
3261 friends as zero-extended rather than sign-extended.  It's amazing it hasn't
3262 been noticed earlier.
3263]
3264[Unconditionalize definition of DYNAMIC_* so that libffi.so/.dll is removed even when BuildSharedLibs is reset to NO
3265Clemens Fruhwirth <clemens@endorphin.org>**20080930085449]
3266[Type families: need to instantiate flexible skolems before other flexibles
3267Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20080930053559
3268 
3269 MERGE TO 6.10
3270]
3271[Fix warnings
3272Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20080929142227]
3273[Type families: consider subst rules both way
3274Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20080929141040
3275 - applySubstFam, applySubstVarVar & applySubstVarFam need to return their
3276   second argument -to be put into the todo list- if the rule would be
3277   applicable if the equalities would be supplied in the opposite order.
3278 
3279 MERGE TO 6.10
3280]
3281[Clean up a bit and improve an error message
3282pepe**20080926211429]
3283[Don't capture error calls in tryUser
3284pepe**20080926204836
3285 
3286 A previous patch slightly changed the semantics of tryUser.
3287 This patch restores the original behaviour
3288 (as expected in :print)
3289 
3290]
3291[tweaks to this section of the docs
3292Simon Marlow <simonmar@microsoft.com>**20080927141834]
3293[Add -outputdir flag (#2295)
3294Simon Marlow <simonmar@microsoft.com>**20080927141822]
3295[oops, forgot to add -XNewQualifiedOperators to the flags table
3296Simon Marlow <simonmar@microsoft.com>**20080923140449]
3297[Fix making OS X installers from source tarballs
3298Ian Lynagh <igloo@earth.li>**20080927150507
3299 I'm not sure why it works in the HEAD, but when making an installer
3300 from the 6.10.1 beta configure hangs when doing the CHECK_HIST_ERRORS
3301 test (during rl_initialize, I believe). Giving make /dev/null as stdin
3302 fixes it.
3303]
3304[Make the matching of the filename ghc.exe case insensitive, fixes bug #2603
3305Neil Mitchell <ndmitchell@gmail.com>**20080916160311]
3306[Fix #2411: missing case for CATCH_STM_FRAME in raiseAsync()
3307Simon Marlow <simonmar@microsoft.com>**20080926232806]
3308[Fix parsing of -ignore-package flag.
3309Bertram Felgenhauer <int-e@gmx.de>**20080925053820]
3310[Add an example of how to use SCCs to the user guide
3311Ian Lynagh <igloo@earth.li>**20080926203832]
3312[Add some description of the +RTS -t/-s/-S output
3313Ian Lynagh <igloo@earth.li>**20080926200203]
3314[Remove a redundant options pragma
3315Ian Lynagh <igloo@earth.li>**20080926152731]
3316[Split ShowVersion etc off into a different type to DoInteractive etc
3317Ian Lynagh <igloo@earth.li>**20080926140539
3318 This fixes trac #1348 (ghci --help gave ghc's help), and also tidies
3319 things up a bit. Things would be even tidier if the usage.txt files were
3320 put into a .hs file, so that ShowUsage wouldn't need to be able to find
3321 the libdir.
3322]
3323[Pass SRC_HC_OPTS to GHC when building GHC's Main.hs
3324Ian Lynagh <igloo@earth.li>**20080926131609]
3325[Improve runghc docs; fixes trac #2477
3326Ian Lynagh <igloo@earth.li>**20080926124425]
3327[Type families: fixes in flattening & finalisation
3328Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20080925225324
3329 * Finalisation didn't do the right thing for equalities x ~ y, where
3330   x was instantiated, but not zonked and y flexible (need to do y := x)
3331 * During flattening we weren't careful enough when turning wanteds
3332   intermediates into locals
3333 
3334 Both bugs showed up in a small example of SPJ:
3335 
3336   linear :: HasTrie (Basis v) => (Basis v, v)
3337   linear =  basisValue
3338 
3339   class HasTrie a where
3340 
3341   type family Basis u :: *
3342 
3343   basisValue :: (Basis v,v)
3344   basisValue = error "urk"
3345 
3346]
3347[Fix the behaviour of flags like --help and --version; fixes trac #2620
3348Ian Lynagh <igloo@earth.li>**20080925165618
3349 They should override other mode flags, not conflict with them
3350]
3351[Follow the integer package changes
3352Ian Lynagh <igloo@earth.li>**20080925133855]
3353[Type families: fix decomposition problem
3354Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20080925084139
3355 * Fixes the problem reported in
3356   <http://www.haskell.org/pipermail/haskell-cafe/2008-July/044911.html>
3357]
3358[Don't exit ghci if :info is called on an undefined identifier.
3359Judah Jacobson <judah.jacobson@gmail.com>**20080924212422]
3360[Fix maintainer-clean
3361Ian Lynagh <igloo@earth.li>**20080924230553]
3362[Use -f when making the runhaskell symlink
3363Ian Lynagh <igloo@earth.li>**20080924124255
3364 Otherwise installation fails if runhaskell already exists.
3365]
3366[Use -perm -100 rather than -perm /a+x when looking for executable files
3367Ian Lynagh <igloo@earth.li>**20080924124137
3368 /a+x doesn't work on some Solaris and OS X machines. Spotted by
3369 Christian Maeder.
3370]
3371[Use $(FIND) rather than find, as the former may be gfind
3372Ian Lynagh <igloo@earth.li>**20080924123323]
3373[Look for gfind as well as find
3374Ian Lynagh <igloo@earth.li>**20080924123046]
3375[In configure, don't call FPTOOLS_HADDOCK
3376Ian Lynagh <igloo@earth.li>**20080924122558
3377 We now use the in-tree haddock, so we don't need to look for it.
3378]
3379[Use $(TAR) rather than tar
3380Ian Lynagh <igloo@earth.li>**20080924121759
3381 Fixes problems on Solaris, where we need to use gtar instead of tar
3382]
3383[Add $(strip) to a Makefile test
3384Ian Lynagh <igloo@earth.li>**20080924120940
3385 Fixes making bindists on solaris. Patch from Christian Maeder.
3386]
3387[Use test -f rather than test -e, for portability (Solaris)
3388Ian Lynagh <igloo@earth.li>**20080924120840]
3389[Remove some dependencies on bootstrapping.conf from libraries/Makefile
3390Ian Lynagh <igloo@earth.li>**20080923205755
3391 They were causing some unnecessary work:
3392 Running make in a built tree reregisters the GHC package in
3393 bootstrapping.conf, and the build system thought that this updated
3394 timestamp meant that the configure stamps were out of date. This is
3395 particularly bad for the libraries with configure scripts, as those
3396 take a while to run.
3397 
3398 The bootstrapping.conf is built in an earlier phase ("make boot") so
3399 one shouldn't rely on the dependencies anyway.
3400]
3401[Bump the version number to 6.11
3402Ian Lynagh <igloo@earth.li>**20080923165613]
3403[Generalise type of 'defaultErrorHandler' so it can be used inside a Ghc session.
3404Thomas Schilling <nominolo@googlemail.com>**20080921085647]
3405[Make "sh -e boot" work
3406Ian Lynagh <igloo@earth.li>**20080921111508]
3407[Use -f rather than -e for portability
3408Ian Lynagh <igloo@earth.li>**20080921111436]
3409[Add some special cases for putting dph in bindists
3410Ian Lynagh <igloo@earth.li>**20080921000406]
3411[Escape a hash in the Makefile (it was breaking source dist creation)
3412Ian Lynagh <igloo@earth.li>**20080920232945]
3413[Disallow package flags in OPTIONS_GHC pragmas (#2499)
3414Simon Marlow <simonmar@microsoft.com>**20080923173904]
3415[#2566: emit a warning for 'ghc -c foo.bar'
3416Simon Marlow <simonmar@microsoft.com>**20080923144956
3417 
3418 $ ghc -c foo.bar
3419 Warning: the following files would be used as linker inputs, but linking is not being done: foo.bar
3420 ghc: no input files
3421 Usage: For basic information, try the `--help' option.
3422]
3423[Fix to new executable allocation code (fixed print002 etc.)
3424Simon Marlow <simonmar@microsoft.com>**20080922210915
3425 The problem here is caused by the fact that info tables include a
3426 relative offset to the string naming the constructor.  Executable
3427 memory now resides at two places in the address space: one for writing
3428 and one for executing.  In the info tables generated by GHCi, we were
3429 calculating the offset relative to the writable instance, rather than
3430 the executable instance, which meant that the GHCi debugger couldn't
3431 find the names for constructors it found in the heap.
3432]
3433[clean sm/Evac_thr.c and sm/Scav_thr.c
3434Simon Marlow <simonmar@microsoft.com>**20080922152827]
3435[add -XNewQualifiedOperators (Haskell' qualified operator syntax)
3436Simon Marlow <simonmar@microsoft.com>**20080922152340]
3437[Fix Trac #2597 (first bug): correct type checking for empty list
3438simonpj@microsoft.com**20080920212010
3439 
3440 The GHC front end never generates (ExplicitList []), but TH can.
3441 This patch makes the typechecker robust to such programs.
3442 
3443]
3444[Fix Trac #2597 (second bug): complain about an empty DoE block
3445simonpj@microsoft.com**20080920211101
3446 
3447 When converting an empty do-block from TH syntax to HsSyn,
3448 complain rather than crashing.
3449 
3450]
3451[Update dependencies
3452Ian Lynagh <igloo@earth.li>**20080920183534]
3453[Fix building with GHC 6.6
3454Ian Lynagh <igloo@earth.li>**20080920162918]
3455[Remove fno-method-sharing from the list of static flags
3456Ian Lynagh <igloo@earth.li>**20080920010635
3457 It is now a dynamic flag
3458]
3459[Tidy up the treatment of dead binders
3460simonpj@microsoft.com**20080920175238
3461 
3462 This patch does a lot of tidying up of the way that dead variables are
3463 handled in Core.  Just the sort of thing to do on an aeroplane.
3464 
3465 * The tricky "binder-swap" optimisation is moved from the Simplifier
3466   to the Occurrence Analyser.  See Note [Binder swap] in OccurAnal.
3467   This is really a nice change.  It should reduce the number of
3468   simplifier iteratoins (slightly perhaps).  And it means that
3469   we can be much less pessimistic about zapping occurrence info
3470   on binders in a case expression. 
3471 
3472 * For example:
3473        case x of y { (a,b) -> e }
3474   Previously, each time around, even if y,a,b were all dead, the
3475   Simplifier would pessimistically zap their OccInfo, so that we
3476   can't see they are dead any more.  As a result virtually no
3477   case expression ended up with dead binders.  This wasn't Bad
3478   in itself, but it always felt wrong.
3479 
3480 * I added a check to CoreLint to check that a dead binder really
3481   isn't used.  That showed up a couple of bugs in CSE. (Only in
3482   this sense -- they didn't really matter.)
3483   
3484 * I've changed the PprCore printer to print "_" for a dead variable.
3485   (Use -dppr-debug to see it again.)  This reduces clutter quite a
3486   bit, and of course it's much more useful with the above change.
3487 
3488 * Another benefit of the binder-swap change is that I could get rid of
3489   the Simplifier hack (working, but hacky) in which the InScopeSet was
3490   used to map a variable to a *different* variable. That allowed me
3491   to remove VarEnv.modifyInScopeSet, and to simplify lookupInScopeSet
3492   so that it doesn't look for a fixpoint.  This fixes no bugs, but
3493   is a useful cleanup.
3494 
3495 * Roman pointed out that Id.mkWildId is jolly dangerous, because
3496   of its fixed unique.  So I've
3497 
3498      - localied it to MkCore, where it is private (not exported)
3499 
3500      - renamed it to 'mkWildBinder' to stress that you should only
3501        use it at binding sites, unless you really know what you are
3502        doing
3503 
3504      - provided a function MkCore.mkWildCase that emodies the most
3505        common use of mkWildId, and use that elsewhere
3506 
3507    So things are much better
3508 
3509 * A knock-on change is that I found a common pattern of localising
3510   a potentially global Id, and made a function for it: Id.localiseId
3511 
3512]
3513[Gix the ghcii script
3514Ian Lynagh <igloo@earth.li>**20080919174651
3515 The ghc executable name doesn't have a version number on Windows, so
3516 don't put one in the script.
3517]
3518[Create runhaskell as well as runghc
3519Ian Lynagh <igloo@earth.li>**20080919153010]
3520[On Linux use libffi for allocating executable memory (fixed #738)
3521Simon Marlow <marlowsd@gmail.com>**20080919134602]
3522[Move the context_switch flag into the Capability
3523Simon Marlow <marlowsd@gmail.com>**20080919102601
3524 Fixes a long-standing bug that could in some cases cause sub-optimal
3525 scheduling behaviour.
3526]
3527[Fix building the extralibs tarball
3528Ian Lynagh <igloo@earth.li>**20080919133555
3529 We now need to dig the appropriate lines out of packages, rather than
3530 just catting libraries/extra-packages, in order to find out what the
3531 extralibs are.
3532]
3533[Install libffi when installing frmo a bindist
3534Ian Lynagh <igloo@earth.li>**20080919130332]
3535[Fix how we put libffi into bindists
3536Ian Lynagh <igloo@earth.li>**20080919125528]
3537[TAG 6.10 branch has been forked
3538Ian Lynagh <igloo@earth.li>**20080919123437]
3539[Don't require Parser.y in a source dist
3540Ian Lynagh <igloo@earth.li>**20080919115831]
3541[Add HpcParser.hs to source dists
3542Ian Lynagh <igloo@earth.li>**20080919115816]
3543[Fix the list of generated files that need to go into the source dists
3544Ian Lynagh <igloo@earth.li>**20080919112522]
3545[Improve documentation of overlapping instances
3546simonpj@microsoft.com**20080919093147]
3547[Put generated files in source dists
3548Ian Lynagh <igloo@earth.li>**20080918194424
3549 We don't want to require that users building source dists have alex/happy
3550]
3551[Add libraries/syb to .darcs-boring
3552Ian Lynagh <igloo@earth.li>**20080918190116]
3553[Fix a couple of issues with :print
3554pepe**20080918122133
3555       
3556       - Ticket #1995: Unsoundness with newtypes
3557       - Ticket #2475: "Can't unify" error when stopped at an exception
3558       
3559       In addition this patch adds the following:
3560       
3561       - Unfailingness: RTTI cannot panic anymore.
3562         In case of failure, it recovers gracefully by returning the "I know nothing" type
3563       - A -ddump-rtti flag
3564 
3565]
3566[wibble
3567pepe <mnislaih@gmail.com>**20080418172303]
3568[RichTokenStream support
3569Chaddai Fouche <chaddai.fouche@gmail.com>**20080918165256
3570 
3571 This patch adds support for raw token streams, that contain more
3572 information than normal token streams (they contains comments at
3573 least). The "lexTokenStream" function brings this support to the
3574 Lexer module. In addition to that, functions have been added to
3575 the GHC module to make easier to recover of the token stream of
3576 a module ("getTokenStream").
3577 
3578 Building on that, I added what could be called "rich token
3579 stream": token stream to which have been added the source string
3580 corresponding to each token, the function addSourceToToken takes
3581 a StringBuffer and a starting SrcLoc and a token stream and build
3582 this rich token stream. getRichTokenStream is a convenience
3583 function to get a module rich token stream. "showRichTokenStream"
3584 use the SrcLoc information in such a token stream to get a string
3585 similar to the original source (except unsignificant
3586 whitespaces). Thus "putStrLn . showRichTokenStream =<<
3587 getRichTokenStream s mod" should print a valid module source, the
3588 interesting part being to modify the token stream between the get
3589 and the show of course.
3590]
3591[When passing gcc -B, also tell it where the mingw include directory is
3592Ian Lynagh <igloo@earth.li>**20080918143312]
3593[Don't put the mingw directory in RTS's package.conf
3594Ian Lynagh <igloo@earth.li>**20080918143118]
3595[Be more forceful when cleaning in compiler/ and ghc/
3596Ian Lynagh <igloo@earth.li>**20080918134443
3597 Now that the Cabal file is generated by configure, it would be nice
3598 if clean worked even if the cabal file is missing. So now we just rm -rf
3599 the dist directory.
3600]
3601[Generate ghc.cabal and ghc-bin.cabal with configure
3602Ian Lynagh <igloo@earth.li>**20080918133636
3603 This allows us to put the proper version number into them
3604]
3605[Make the ghci scripts point to the versioned GHC program, not just "ghc"
3606Ian Lynagh <igloo@earth.li>**20080918122516]
3607[Fix Trac #1470: improve handling of recursive instances (needed for SYB3)
3608simonpj@microsoft.com**20080918161719
3609 
3610 This bug has been hanging around for a long time, as you'll see by its
3611 number. The fix implements a feature that is really needed by SYB3, to
3612 allow an instance to (rather indirectly) refer to itself.  The trickiness
3613 comes when solving the superclass constraints.
3614 
3615 The whoel issue is explained in Note [Recursive instances and superclases]
3616 in TcSimplify.
3617 
3618 In cracking this one I found I could remove the WantSCs argument to the
3619 ReduceMe flag, which is a worthwhile simplification.  Good!
3620 
3621]
3622[Comments only
3623simonpj@microsoft.com**20080918155602]
3624[Replace ASSERT with WARN, and explain why
3625simonpj@microsoft.com**20080918155245
3626 
3627 The DPH library tripped an ASSERT.  The code is actually OK, but it's
3628 badly-optimised so I changed it to WARN.  The issue here is explained
3629 in ClosureInfo, Note [Unsafe coerce complications].
3630 
3631]
3632[Add a missing "prime" (env' --> env'') thereby fixing a tripping WARN.  Hurrah!
3633simonpj@microsoft.com**20080918155144]
3634[Fix nasty infelicity: do not short-cut empty substitution in the simplifier
3635simonpj@microsoft.com**20080917162910
3636 
3637 I was perplexed about why an arity-related WARN was tripping. It took
3638 me _day_ (sigh) to find that it was because SimplEnv.substExpr was taking
3639 a short cut when the substitution was empty, thereby not subsituting for
3640 Ids in scope, which must be done (CoreSubst Note [Extending the Subst]).
3641 
3642 The fix is a matter of deleting the "optimisation".  Same with
3643 CoreSubst.substSpec, although I don't know if that actually caused a
3644 probem.
3645 
3646]
3647[Avoid arity reduction when doing eta-reduce
3648simonpj@microsoft.com**20080917162704
3649 
3650 We like things with high arity, so when doing eta reduction
3651 it's probably a good idea to avoid reducing arity.
3652 
3653]
3654[Add extra WARN test
3655simonpj@microsoft.com**20080917162434
3656 
3657 This warning tests that the arity of a function does not decrease.
3658 And that it's at least as great as the strictness signature.
3659 
3660 Failing this test isn't a disater, but it's distinctly odd and
3661 usually indicates that not enough information is getting propagated
3662 around, and hence you may get more simplifier iterations.
3663 
3664]
3665[Comments only
3666simonpj@microsoft.com**20080917162350]
3667[Re-adjust interaction between -ddump flags and force-recompilation
3668simonpj@microsoft.com**20080917161920
3669 
3670 If you say -ddump-xx we effectively add -fforce-recomp, so that you
3671 see your dump output.  But this works badly in --make mode, because
3672 you get the ddump output for every module, which is probably not what
3673 you want.  This patch forces recompilation with -ddump-X only in one-shot
3674 mode. 
3675 
3676 Of course, this only affects people using -ddump options.
3677 
3678]
3679[Add Outputable GhcMode instance
3680simonpj@microsoft.com**20080917161847]
3681[Improve error reporting for 'deriving' (Trac #2604)
3682simonpj@microsoft.com**20080917135104]
3683[Add link to GADT paper re rigid types
3684simonpj@microsoft.com**20080916094521]
3685[Fix MacOS X build: don't believe __GNUC_GNU_INLINE__ on MacOS X
3686Simon Marlow <marlowsd@gmail.com>**20080918112856]
3687[require Alex version 2.1.0
3688Simon Marlow <marlowsd@gmail.com>**20080918112812
3689 Having 2.0.1 causes some unicode tests to fail
3690]
3691[Type families: fixes in the new solver
3692Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20080918100934]
3693[ext-core library: Parser fixes; make it build with the HEAD
3694Tim Chevalier <chevalier@alum.wellesley.edu>**20080918090349
3695 
3696 In the ext-core parser I guess I never tested:
3697 * existential type variable bindings in case alts
3698 * empty data declarations
3699 
3700 That'll learn me!
3701]
3702[Wibble ghc-pkg imports to fix building on Windows
3703Ian Lynagh <igloo@earth.li>**20080917210813]
3704[ghc-pkg needs to make package.conf with sensible permissions
3705Ian Lynagh <igloo@earth.li>**20080917192155
3706 It was calling openTempFile which uses a 600 permissions mask.
3707]
3708[Change 'loadWithCompiler' callback argument to just print warnings.
3709Thomas Schilling <nominolo@googlemail.com>**20080917102925
3710 Rename function accordingly.
3711 
3712 The callback wasn't very flexible to begin with.  There's pretty much
3713 no way around to calling 'compile' inside that callback since
3714 'upsweep' depends on certain side effects of compile.  It therefore
3715 makes more sense to restrict the callback to its intended use only,
3716 namely to log warnings and errors.
3717]
3718[Fix: GhcStage2HcOpts were being added to stage 3 too
3719Simon Marlow <marlowsd@gmail.com>**20080917085917]
3720[Type families: unify with family apps in checking mode
3721Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20080917062548]
3722[Type families: bug fixes
3723Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20080916151254]
3724[Keep sysnonyms folded in equalities if possible
3725Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20080916075700]
3726[Type families: apply flattening coercions in the right order
3727Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20080916055136]
3728[TcTyFuns: tidy warning
3729Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20080915031423]
3730[Signature for Inst.isValidWantedEqInst
3731Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20080915030118]
3732[Remember if RewriteInst is swapped & bug fixes
3733Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20080914163639]
3734[Type families: fixed all non-termination in the testsuite
3735Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20080914120638]
3736[Type families: completed the new equality solver
3737Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20080913133631
3738 - Implements normalisation of class constraints containing synonym family
3739   applications or skolems refined by local equalities.
3740 - Clean up of TcSimplify.reduceContext by using the new equality solver.
3741 - Removed all the now unused code of the old algorithm.
3742 - This completes the implementation of the new algorithm, but it is largely
3743   untested => many regressions.
3744]
3745[Use the new -optdep flag replacements when building with >= GHC 6.9
3746Ian Lynagh <igloo@earth.li>**20080916220057
3747 Fix building the HEAD with itself
3748]
3749[Use "exec" when running ghc in the wrapper
3750Ian Lynagh <igloo@earth.li>**20080915100217]
3751[Add "#!/bin/sh" to runghc.wrapper
3752Ian Lynagh <igloo@earth.li>**20080914153507]
3753[Add a "#!/bin/sh" to ghc.wrapper
3754Ian Lynagh <igloo@earth.li>**20080914153344]
3755[Fixing directory creation to not create "" directories inside hpc report (harmless but needless)
3756andygill@ku.edu**20080916172313]
3757[Fix Trac #2052 Allowing hpc to understand hsc files.
3758andygill@ku.edu**20080916030521]
3759[Fix Trac #2311: creates subdirs for package coverage information
3760andygill@ku.edu**20080915204322]
3761[FIX #2469: sort out our static/extern inline story
3762Simon Marlow <marlowsd@gmail.com>**20080916132222
3763 gcc has changed the meaning of "extern inline" when certain flags are
3764 on (e.g. --std=gnu99), and this broke our use of it in the header
3765 files.
3766]
3767[Fix a warning
3768Simon Marlow <marlowsd@gmail.com>**20080916130922]
3769[Stop using mremap() to allocate space for trampolines
3770Simon Marlow <marlowsd@gmail.com>**20080915145924
3771 
3772 This was causing problems because sometimes mremap() moved the memory
3773 we had allocated from the low 2Gb to above the 2Gb boundary, causing
3774 some linkages to fail.  There's no MAP_32BIT flag to mremap().
3775 
3776 So now we just use mmap(MAP_ANON|MAP_32BIT) to allocated space for the
3777 trampolines.  People without MAP_32BIT (eg. *BSD) will still have to
3778 do something else here, such as allocating memory from a fixed
3779 address; so I've made it slightly easier for those guys, but there's
3780 still work to do (#2063).
3781 
3782 One solution (that Simon PJ is advocating) is to turn on -fPIC by
3783 default on x86-64.  This is a good solution as it removes the need for
3784 MAP_32BIT, but doesn't work with -fvia-C, so probably this is for
3785 later.
3786]
3787[add $(GhcStage[123]HcOpts)
3788Simon Marlow <marlowsd@gmail.com>**20080912155549]
3789[Improve handling of -fdph-* flags
3790Roman Leshchinskiy <rl@cse.unsw.edu.au>**20080916034746]
3791[Add -fdph-this
3792Roman Leshchinskiy <rl@cse.unsw.edu.au>**20080916033710]
3793[Remove last traces of package ndp
3794Roman Leshchinskiy <rl@cse.unsw.edu.au>**20080916033428]
3795[Clean up vectorisation error messages
3796Roman Leshchinskiy <rl@cse.unsw.edu.au>**20080916013236]
3797[Fix vectoriser bug
3798Roman Leshchinskiy <rl@cse.unsw.edu.au>**20080915042823
3799 
3800 We were using mkWildId in situations where it cause disastrous shadowing
3801]
3802[Track changes to dph
3803Roman Leshchinskiy <rl@cse.unsw.edu.au>**20080912114028]
3804[Change desugaring of PArr literals
3805Roman Leshchinskiy <rl@cse.unsw.edu.au>**20080912015609]
3806[Expose the dph packages automatically if -dph-* is set
3807Roman Leshchinskiy <rl@cse.unsw.edu.au>**20080912004403]
3808[Don't panic on non-vectorisable expressions
3809Roman Leshchinskiy <rl@cse.unsw.edu.au>**20080911054333]
3810[-Odph implies -fno-spec-constr-count
3811Roman Leshchinskiy <rl@cse.unsw.edu.au>**20080910045339]
3812[Improve warning for SpecConstr
3813simonpj@microsoft.com**20080915154908]
3814[White space only
3815simonpj@microsoft.com**20080915154841]
3816[Minor refactoring to get rid of Type.splitNewTyConApp
3817simonpj@microsoft.com**20080915072946]
3818[Refactor the desugaring of RULE lhss a bit
3819simonpj@microsoft.com**20080915150601
3820 
3821 This is just a tidy-up.  Previously we were calling occurAnalyse
3822 twice on each LHS which was silly and a bit unclean too. 
3823 
3824 This patch should have no overall effect, though.
3825 
3826]
3827[Do not use the Static Arg Transformation by default with -O2
3828simonpj@microsoft.com**20080915150433
3829 
3830 Max has some more heuristics to add, and is meanwhile worried
3831 that having SAT on by default will make some highly-tuned array
3832 programs worse.  So it's off by default. 
3833 
3834 Use -fstatic-argument-transformation to switch it on.
3835 
3836]
3837[Comments, and a couple of asserts, only
3838simonpj@microsoft.com**20080914114641]
3839[Fix Trac #2587: take account of type lets
3840simonpj@microsoft.com**20080914113434
3841 
3842 GHC allows a non-recursive let for type varaibles
3843        let a = TYPE ty in ...
3844 But the free-variable finder had not caught up with this
3845 fact. This patch catches up.
3846 
3847]
3848[Don't try to float type-lets
3849simonpj@microsoft.com**20080914113324
3850 
3851 A type let shouldn't really occur in SetLevels, but if it does,
3852 this patch makes sure it is left alone.
3853 
3854]
3855[add refs and fix a bug (noted by Peter Gammie) in docs of arrow notation
3856Ross Paterson <ross@soi.city.ac.uk>**20080915104757]
3857[Generalise type of 'withExtendedLinkEnv'.
3858Thomas Schilling <nominolo@googlemail.com>**20080915085738]
3859[Use 'GhcMonad' in ghci/InteractiveUI.
3860Thomas Schilling <nominolo@googlemail.com>**20080915085633]
3861[Use 'GhcMonad' in ghci/GhciTags.
3862Thomas Schilling <nominolo@googlemail.com>**20080915084922]
3863[Use 'GhcMonad' in ghci/Debugger.
3864Thomas Schilling <nominolo@googlemail.com>**20080915084738]
3865[Use 'GhcMonad' in ghci/GhciMonad.
3866Thomas Schilling <nominolo@googlemail.com>**20080915084646]
3867[Use 'GhcMonad' in ghc/Main.
3868Thomas Schilling <nominolo@googlemail.com>**20080914232957]
3869[Require PatternSignatures for bootstrapping compiler.
3870Thomas Schilling <nominolo@googlemail.com>**20080914232642]
3871[Use 'GhcMonad' in InteractiveEval.
3872Thomas Schilling <nominolo@googlemail.com>**20080914232454]
3873[Use 'GhcMonad' in GHC and split up checkModule into phases.
3874Thomas Schilling <nominolo@googlemail.com>**20080914232044
3875 
3876 I'm not sure I covered all the ways of throwing errors in the code.
3877 Some functions throw ProgramErrors, some error messages.  It's still
3878 quite a mess, but we're getting closer.  The missing cases are mostly
3879 errors that cannot be fixed by the API client either or are a result
3880 of wrong usage, so are in any case fatal.
3881 
3882 One function, 'getModuleInfo', still returns a 'Maybe', but the
3883 documentation suggests it should always succeed.  So I may change that
3884 soon.
3885 
3886 The spit-up of of 'checkModule' has pros and cons.  The various forms
3887 of 'checkModule*' now become:
3888 
3889  checkAndLoadModule ms False ~~>
3890     loadModule =<< typecheckModule =<< parseModule (ms_mod_name ms)
3891 
3892  checkAndLoadModule ms True ~~>
3893    loadModule =<< desugarModule =<< typecheckModule =<< parseModule (ms_mod_name ms)
3894 
3895  checkModule mn False ~~>
3896    typecheckModule =<< parseModule mn
3897 
3898  checkModule mn True ~~>
3899    desugarModule =<< typecheckModule =<< parseModule mn
3900 
3901 The old APIs cannot easily be provided, since the result type would be
3902 different depending on the second argument.  However, a more
3903 convenient API can be modelled on top of these four functions
3904 ({parse,typecheck,desugar,load}Module).
3905]
3906[Use 'GhcMonad' in DriverPipeline.  Also haddockify a bit while we're at it.
3907Thomas Schilling <nominolo@googlemail.com>**20080914220628]
3908[Use 'GhcMonad' in HscMain.
3909Thomas Schilling <nominolo@googlemail.com>**20080914213655]
3910[Use 'GhcMonad' in DriverMkDepend.
3911Thomas Schilling <nominolo@googlemail.com>**20080914212113]
3912[Haddockify DynFlags (partial).
3913Thomas Schilling <nominolo@googlemail.com>**20080914211718]
3914[Haddockify 'IE'.
3915Thomas Schilling <nominolo@googlemail.com>**20080914210016]
3916[Provide accessors for 'ImportDecl'.
3917Thomas Schilling <nominolo@googlemail.com>**20080914205811]
3918[Start haddockifying 'HsBindLR'.
3919Thomas Schilling <nominolo@googlemail.com>**20080914205629]
3920[Document 'parseStaticFlags'.
3921Thomas Schilling <nominolo@googlemail.com>**20080914205316]
3922[Introduce 'GhcMonad' class and two default implementations 'Ghc' and 'GhcT'.
3923Thomas Schilling <nominolo@googlemail.com>**20080914204930
3924 
3925 This monad will be required by most public API calls.
3926]
3927[Give the "Failing due to -Werror" message a name.
3928Thomas Schilling <nominolo@googlemail.com>**20080914173904]
3929[Make typechecker top-level functions also return messages instead of
3930Thomas Schilling <nominolo@googlemail.com>**20080914173228
3931 printing them.
3932]
3933[Reflect changes of desugarer error reporting in VectMonad.
3934Thomas Schilling <nominolo@googlemail.com>**20080914172711]
3935[Generalise 'handleGhcException' to work with any 'ExceptionMonad'.
3936Thomas Schilling <nominolo@googlemail.com>**20080914172404]
3937[Introduce an 'ExceptionMonad' class.
3938Thomas Schilling <nominolo@googlemail.com>**20080914172154
3939 
3940 This monad provides variants of 'catch', 'bracket', and 'finally', so
3941 exceptions can be handled in monads that wrap IO.  The latter two
3942 methods need to be part of the class definition, because GHC uses
3943 'block' and 'unblock' which are used in the definition of those two
3944 methods for the IO monad.  A perhaps better class interface would
3945 consist of 'gcatch', 'gblock', and 'gunblock' and let the latter two
3946 default to 'id' like is done for non-GHC implementations of 'bracket'
3947 and 'finally'.
3948]
3949[Provide default MonadIO instance for IO.
3950Thomas Schilling <nominolo@googlemail.com>**20080914164245]
3951[Return instead of print warnings and errors in desugarer.
3952Thomas Schilling <nominolo@googlemail.com>**20080914163641]
3953[Return parser errors and warnings instead of dying.
3954Thomas Schilling <nominolo@googlemail.com>**20080914162644]
3955[Add aliases for bags of warnings and errors.
3956Thomas Schilling <nominolo@googlemail.com>**20080914160337]
3957[Slightly more helpful panic message in DynFlags
3958Tim Chevalier <chevalier@alum.wellesley.edu>**20080915080650]
3959[Comments only: ".core" => ".hcr"
3960Tim Chevalier <chevalier@alum.wellesley.edu>**20080914203645]
3961[We need to tell ghc-pkg to --force if we've only built a profiling library
3962Ian Lynagh <igloo@earth.li>**20080913153142]
3963[If we're profiling GHC, don't bother building the GHC package the vanilla way
3964Ian Lynagh <igloo@earth.li>**20080913144820]
3965[Remove the duplicate show rule in libraries/Makefile
3966Ian Lynagh <igloo@earth.li>**20080913144413]
3967[Move the "show" target from target.mk to boilerplate.mk
3968Ian Lynagh <igloo@earth.li>**20080913141312
3969 target.mk isn't included everywhere, but show is always handy
3970]
3971[Change how we detect if we are using the bootstrapping compiler or not
3972Ian Lynagh <igloo@earth.li>**20080913104658
3973 I think looking for $(GHC_COMPILER_DIR_ABS) was failing on the Windows
3974 buildbot due to different path separators. Now we just look for
3975 "inplace".
3976]
3977[wibble the distrib Makefile
3978Ian Lynagh <igloo@earth.li>**20080912135932
3979 We now need to install driver after ghc
3980]
3981[Reinstate the driver/ghc directory, to create a versioned GHC program
3982Ian Lynagh <igloo@earth.li>**20080912113619
3983 e.g. $(bindir)/ghc-6.9.20080911
3984]
3985[If USE_NEW_MKDEPEND_FLAGS is YES then don't use the deprecated -optdep flags
3986Ian Lynagh <igloo@earth.li>**20080912110316]
3987[Use --force-local when calling tar in bindisttest/
3988Ian Lynagh <igloo@earth.li>**20080912012855
3989 Otherwise it thinks that c:/foo is a remote file
3990]
3991[Fix #2586, bug in THUNK_SELECTORs (again)
3992Simon Marlow <marlowsd@gmail.com>**20080912130404
3993 This time, we had forgetten the write barrier in one place.
3994]
3995[TAG 2008-09-12 2
3996Ian Lynagh <igloo@earth.li>**20080912132848]
3997Patch bundle hash:
39982edb7312015996d469ded734914eefbdaf32c86d