Ticket #3928: samplevar.dpatch

File samplevar.dpatch, 32.2 KB (added by basvandijk, 4 years ago)
Line 
12 patches for repository http://darcs.haskell.org/packages/base:
2
3Thu Mar 18 17:11:52 CET 2010  Bas van Dijk <v.dijk.bas@gmail.com>
4  * Fix bugs regarding asynchronous exceptions and laziness in Control.Concurrent.SampleVar
5   - Block asynchronous exceptions at the right places
6   - Force thunks before putting them in a MVar
7
8Thu Mar 18 17:51:47 CET 2010  Bas van Dijk <v.dijk.bas@gmail.com>
9  * Make SampleVar an abstract newtype
10
11New patches:
12
13[Fix bugs regarding asynchronous exceptions and laziness in Control.Concurrent.SampleVar
14Bas van Dijk <v.dijk.bas@gmail.com>**20100318161152
15 Ignore-this: 38144d958deaec02bce5be6b31c79370
16  - Block asynchronous exceptions at the right places
17  - Force thunks before putting them in a MVar
18] {
19hunk ./Control/Concurrent/SampleVar.hs 33
20 
21 import Control.Concurrent.MVar
22 
23+import Control.Exception ( block )
24+
25 -- |
26 -- Sample variables are slightly different from a normal 'MVar':
27 --
28hunk ./Control/Concurrent/SampleVar.hs 69
29    v <- newMVar a
30    newMVar (1,v)
31 
32--- |If the SampleVar is full, leave it empty.  Otherwise, do nothing.
33+-- |If the SampleVar is full, make it empty.  Otherwise, do nothing.
34 emptySampleVar :: SampleVar a -> IO ()
35hunk ./Control/Concurrent/SampleVar.hs 71
36-emptySampleVar v = do
37-   (readers, var) <- takeMVar v
38+emptySampleVar v = block $ do
39+   s@(readers, var) <- takeMVar v
40    if readers > 0 then do
41      _ <- takeMVar var
42      putMVar v (0,var)
43hunk ./Control/Concurrent/SampleVar.hs 77
44     else
45-     putMVar v (readers,var)
46+     putMVar v s
47 
48 -- |Wait for a value to become available, then take it and return.
49 readSampleVar :: SampleVar a -> IO a
50hunk ./Control/Concurrent/SampleVar.hs 86
51 -- filled => make empty and grab sample
52 -- not filled => try to grab value, empty when read val.
53 --
54-   (readers,val) <- takeMVar svar
55-   putMVar svar (readers-1,val)
56+   block $ do (readers,val) <- takeMVar svar
57+              let readers' = readers-1
58+              readers' `seq` putMVar svar (readers',val)
59    takeMVar val
60 
61 -- |Write a value into the 'SampleVar', overwriting any previous value that
62hunk ./Control/Concurrent/SampleVar.hs 94
63 -- was there.
64 writeSampleVar :: SampleVar a -> a -> IO ()
65-writeSampleVar svar v = do
66+writeSampleVar svar v = block $ do
67 --
68 -- filled => overwrite
69 -- not filled => fill, write val
70hunk ./Control/Concurrent/SampleVar.hs 99
71 --
72-   (readers,val) <- takeMVar svar
73+   s@(readers,val) <- takeMVar svar
74    case readers of
75hunk ./Control/Concurrent/SampleVar.hs 101
76-     1 ->
77-       swapMVar val v >>
78-       putMVar svar (1,val)
79-     _ ->
80-       putMVar val v >>
81-       putMVar svar (min 1 (readers+1), val)
82+     1 -> swapMVar val v >>
83+          putMVar svar s
84+     _ -> putMVar val v >>
85+          let readers' = min 1 (readers+1)
86+          in readers' `seq` putMVar svar (readers', val)
87 
88 -- | Returns 'True' if the 'SampleVar' is currently empty.
89 --
90}
91[Make SampleVar an abstract newtype
92Bas van Dijk <v.dijk.bas@gmail.com>**20100318165147
93 Ignore-this: 9cbf535f40c069a1c8e5c17b2c395011
94] {
95hunk ./Control/Concurrent/SampleVar.hs 35
96 
97 import Control.Exception ( block )
98 
99+import Data.Functor ( (<$>) )
100+
101 -- |
102 -- Sample variables are slightly different from a normal 'MVar':
103 --
104hunk ./Control/Concurrent/SampleVar.hs 53
105 --  * Writing to a filled 'SampleVar' overwrites the current value.
106 --    (different from 'putMVar' on full 'MVar'.)
107 
108-type SampleVar a
109- = MVar (Int,           -- 1  == full
110-                        -- 0  == empty
111-                        -- <0 no of readers blocked
112-          MVar a)
113+newtype SampleVar a = SampleVar ( MVar ( Int    -- 1  == full
114+                                                -- 0  == empty
115+                                                -- <0 no of readers blocked
116+                                       , MVar a
117+                                       )
118+                                )
119+    deriving (Eq)
120 
121 -- |Build a new, empty, 'SampleVar'
122 newEmptySampleVar :: IO (SampleVar a)
123hunk ./Control/Concurrent/SampleVar.hs 65
124 newEmptySampleVar = do
125    v <- newEmptyMVar
126-   newMVar (0,v)
127+   SampleVar <$> newMVar (0,v)
128 
129 -- |Build a 'SampleVar' with an initial value.
130 newSampleVar :: a -> IO (SampleVar a)
131hunk ./Control/Concurrent/SampleVar.hs 71
132 newSampleVar a = do
133    v <- newMVar a
134-   newMVar (1,v)
135+   SampleVar <$> newMVar (1,v)
136 
137 -- |If the SampleVar is full, make it empty.  Otherwise, do nothing.
138 emptySampleVar :: SampleVar a -> IO ()
139hunk ./Control/Concurrent/SampleVar.hs 75
140-emptySampleVar v = block $ do
141+emptySampleVar (SampleVar v) = block $ do
142    s@(readers, var) <- takeMVar v
143    if readers > 0 then do
144      _ <- takeMVar var
145hunk ./Control/Concurrent/SampleVar.hs 85
146 
147 -- |Wait for a value to become available, then take it and return.
148 readSampleVar :: SampleVar a -> IO a
149-readSampleVar svar = do
150+readSampleVar (SampleVar svar) = do
151 --
152 -- filled => make empty and grab sample
153 -- not filled => try to grab value, empty when read val.
154hunk ./Control/Concurrent/SampleVar.hs 98
155 -- |Write a value into the 'SampleVar', overwriting any previous value that
156 -- was there.
157 writeSampleVar :: SampleVar a -> a -> IO ()
158-writeSampleVar svar v = block $ do
159+writeSampleVar (SampleVar svar) v = block $ do
160 --
161 -- filled => overwrite
162 -- not filled => fill, write val
163hunk ./Control/Concurrent/SampleVar.hs 119
164 -- you see the result of 'isEmptySampleVar'.
165 --
166 isEmptySampleVar :: SampleVar a -> IO Bool
167-isEmptySampleVar svar = do
168+isEmptySampleVar (SampleVar svar) = do
169    (readers, _) <- readMVar svar
170    return (readers == 0)
171 
172}
173
174Context:
175
176[change to use STM, fixing 4 things
177Simon Marlow <marlowsd@gmail.com>**20100318104436
178 Ignore-this: 551d30280a7941c08f5c3b14576bdd70
179   1. there was no async exception protection
180   2. there was a space leak (now new value is strict)
181   3. using atomicModifyIORef would be slightly quicker, but can
182      suffer from adverse scheduling issues (see #3838)
183   4. also, the STM version is faster.
184]
185[Tweak docs
186Ian Lynagh <igloo@earth.li>**20100312214129]
187[Fixed dead links in documentation of forkIO
188Bas van Dijk <v.dijk.bas@gmail.com>**20100308222415
189 Ignore-this: 7deb8fd064c867fbede2a6b2e9da4f15
190]
191[Documentation fixes in Control.Exception
192Bas van Dijk <v.dijk.bas@gmail.com>**20100301220442
193 Ignore-this: 761fcba401cbd1f47276ddfc9b5b80f2
194]
195[Plug two race conditions that could lead to deadlocks in the IO manager
196Simon Marlow <marlowsd@gmail.com>**20100225120255
197 Ignore-this: e6983d6b953104d370278ab3e4617e8b
198]
199[FIX #3866: improve documentation of Data.Data.Constr
200jpm@cs.uu.nl**20100224125506
201 Ignore-this: 3818c5d8fee012a3cf322fb455b6e5dc
202]
203[UNDO: Handle NaN, -Infinity and Infinity in the toRational for Float/Double (#3676)
204Simon Marlow <marlowsd@gmail.com>**20100223101603
205 Ignore-this: 78becb2d39b3cd9a1a473a5811ca7d92
206]
207[Put the complexity in the length docs. Fixes trac #3680
208Ian Lynagh <igloo@earth.li>**20100221191425]
209[nhc98 should build Data.Functor.
210Malcolm.Wallace@cs.york.ac.uk**20100221163218]
211[Update the exitWith docs
212Ian Lynagh <igloo@earth.li>**20100213140004
213 Error pointed out by Volker Wysk <vw@volker-wysk.de>
214]
215[Handle NaN, -Infinity and Infinity in the toRational for Float/Double (#3676)
216Simon Marlow <marlowsd@gmail.com>**20100211101955
217 Ignore-this: 261415363303efca265e80290eac5f28
218]
219[For nhc98, import unsafeInterleaveIO rather than defining it here.
220Malcolm.Wallace@cs.york.ac.uk**20100204171021]
221[Stifle warning about unused return value
222benl@cse.unsw.edu.au**20100203025537]
223[fix #3832: use the locale encoding in openTempFile
224Simon Marlow <marlowsd@gmail.com>**20100120211830
225 Ignore-this: df4f778cc5fefb32290c798db722632c
226 Also while I was here fix an XXX: the Handle contained an
227 uninformative string like <fd: 4> for error messages rather than the
228 real file path.
229]
230[Fix the build: export void, so it doesn't give an unused binding warning
231Ian Lynagh <igloo@earth.li>**20100116174451]
232[hIsEOF: don't do any decoding (#3808)
233Simon Marlow <marlowsd@gmail.com>**20100112230317
234 Ignore-this: 6a384dd2d547ffe3ad3762920e5c1671
235]
236[Control.Monad: +void :: f a -> f ()
237gwern0@gmail.com**20100108214455
238 Ignore-this: 4dc07452315f2d1b4941903ff42fc45f
239 See http://hackage.haskell.org/trac/ghc/ticket/3292
240 Turns m a -> m (). Lets one call functions for their side-effects without
241 having to get rid of their return values with '>> return ()'. Very useful
242 in many contexts (parsing, IO etc.); particularly good for 'forkIO' and 'forM_',
243 as they demand return types of 'IO ()' though most interesting IO functions
244 return non-().
245]
246[Replace the implementation of mergesort with a 2x faster one.
247Malcolm.Wallace@cs.york.ac.uk**20091224152014
248 See ticket http://hackage.haskell.org/trac/ghc/ticket/2143.
249]
250[Restore previous Data.Typeable.typeOf*Default implementations for non-ghc.
251Malcolm.Wallace@cs.york.ac.uk**20091223142625
252 Not all compilers have ScopedTypeVariables.
253]
254[Add comments about double bounds-checking, and fast paths for rectangular arrays
255simonpj@microsoft.com**20091218165655
256 Ignore-this: ea0849419dc00927aba4bd410b1cc58d
257 
258 See Note [Double bounds-checking of index values] for the details.
259 
260 The fast paths omit the doubled checks for cases we know about
261]
262[Fix Trac #3245: memoising typeOf
263simonpj@microsoft.com**20091218155117
264 Ignore-this: 5a178a7f2222293c5ee0c3c43bd1b625
265 
266 The performance bug in #3245 was caused by computing the typeRep
267 once for each call of typeOf, rather than once for each dictionary
268 contruction.  (Computing TypeReps is reasonably expensive, because
269 of the hash-consing machinery.)
270 
271 This is readily fixed by putting the TypeRep construction outside
272 the lambda.  (Arguably GHC might have worked that out itself,
273 but it involves floating something between a type lambda and a
274 value lambda, which GHC doesn't currently do. If it happens a lot
275 we could fix that.)
276]
277[Mark 'index' as INLINE in GHC.Arr
278simonpj@microsoft.com**20091216170441
279 Ignore-this: a4df9d8acf496c8e0e9ce5a520509a2a
280 
281 This makes indexing much faster. See Trac #1216
282]
283[Comment the remaining orphan instance modules
284Ian Lynagh <igloo@earth.li>**20091206125021]
285[De-orphan Eq/Ord Float/Double
286Ian Lynagh <igloo@earth.li>**20091205181238]
287[Add comments to "OPTIONS_GHC -fno-warn-orphans" pragmas
288Ian Lynagh <igloo@earth.li>**20091205165854]
289[Data.Either.partitionEithers was insufficiently lazy.
290Malcolm.Wallace@cs.york.ac.uk**20091202032807
291 Ignore-this: 77e1b3288f66608c71458d8a91bcbe12
292 Spotted by Daniel Fischer.
293]
294[fix the docs regarding finalizer guarantees
295Simon Marlow <marlowsd@gmail.com>**20091130144409
296 Ignore-this: d1ab9532c74a002b8075ff60febcbe2d
297]
298[x86_64 requires more stack
299Malcolm.Wallace@cs.york.ac.uk**20091201033745]
300[check for size < 0 in mallocForeignPtrBytes and friends (#3514)
301Simon Marlow <marlowsd@gmail.com>**20091125143822
302 Ignore-this: 91077d01da2bbe1dfed5155e8b40da9
303]
304[hGetContents: close the handle properly on error
305Simon Marlow <marlowsd@gmail.com>**20091125123435
306 Ignore-this: bc37ff678acc6e547dc390285e056eb9
307 
308 When hGetContents caught an error it was closing the handle and then
309 throwing the exception, without updating the handle with the new
310 closed state.  This lead to a double-closed, which was the cause of
311 
312 *** glibc detected *** ./Setup: double free or corruption
313 
314 when iconv_close was called twice on the decoder.
315 
316 See http://hackage.haskell.org/trac/hackage/ticket/609
317]
318[Fix arities of mapFB and zipFB
319Roman Leshchinskiy <rl@cse.unsw.edu.au>**20091126232219
320 Ignore-this: c4e14cd0a92622549c86e67237a40865
321]
322[Remove an unnecessary -fno-warn-orphans flag
323Ian Lynagh <igloo@earth.li>**20091126123404]
324[Tweak layout to work with alternative layout rule
325Ian Lynagh <igloo@earth.li>**20091125232349]
326[Tweak layout to be accepted by the alternative layout rul
327Ian Lynagh <igloo@earth.li>**20091125194147]
328[Make sure zipWithFB has arity 2
329Roman Leshchinskiy <rl@cse.unsw.edu.au>**20091125010003
330 Ignore-this: 4cf60c55666f03d22a9f5a6e07f52d36
331 
332 It gets 2 arguments in the "zipWith" rule but its arity was higher and the new
333 inliner didn't inline it sometimes, for instance here:
334 
335 mpp ::  [Double] -> [Double] -> [Double] -> [Double] -> [Double]
336 mpp as bs cs ds = zipWith (*) (zipWith (+) as bs) (zipWith (+) cs ds)
337 
338 This was a regression vs. 6.10.
339]
340[Remove an old comment
341Ian Lynagh <igloo@earth.li>**20091124134647]
342[De-orphan the Eq/Ord Integer instances
343Ian Lynagh <igloo@earth.li>**20091124133639]
344[Whitespace only
345Ian Lynagh <igloo@earth.li>**20091124133421]
346[Derive some more instances, rather than writing them by hand
347Ian Lynagh <igloo@earth.li>**20091124011747]
348[We can now derive Ord ()
349Ian Lynagh <igloo@earth.li>**20091124011416]
350[De-orphan tuple Eq/Ord instances
351Ian Lynagh <igloo@earth.li>**20091123233343]
352[Control.Exception.Base no longer has any orphans
353Ian Lynagh <igloo@earth.li>**20091123224905]
354[De-orphan the MonadFix ST instance for GHC
355Ian Lynagh <igloo@earth.li>**20091123223544]
356[Rearrange the contents of Control.Monad.ST; no functionality changes
357Ian Lynagh <igloo@earth.li>**20091123222702]
358[De-orphan the Eq/Ord [a] instances
359Ian Lynagh <igloo@earth.li>**20091123215635]
360[De-orphan the Eq/Ord Char instances
361Ian Lynagh <igloo@earth.li>**20091123202253]
362[De-orphan the Eq/Ord Bool instances
363Ian Lynagh <igloo@earth.li>**20091123201817]
364[Move Eq/Ord Ordering instances to de-orphan them
365Ian Lynagh <igloo@earth.li>**20091123194310]
366[Remove ffi warnings for nhc98.
367Malcolm.Wallace@cs.york.ac.uk**20091123063743]
368[Second attempt to fix #1185 (forkProcess and -threaded)
369Simon Marlow <marlowsd@gmail.com>**20091111151915
370 Ignore-this: fa5f5d5e4e080d4b612a37244f937f9c
371 
372 Patch 2/2: first patch is to ghc
373 
374 This time without dynamic linker hacks, instead I've expanded the
375 existing rts/Globals.c to cache more CAFs, specifically those in
376 GHC.Conc.  We were already using this trick for signal handlers, I
377 should have realised before.
378 
379 It's still quite unsavoury, but we can do away with rts/Globals.c in
380 the future when we switch to a dynamically-linked GHCi.
381]
382[Rollback #1185 fix
383Simon Marlow <marlowsd@gmail.com>**20091106140629
384 Ignore-this: cd5667e8474e37e01ba26a1984274811
385 
386 rolling back:
387 
388 Tue Nov  3 16:05:40 GMT 2009  Simon Marlow <marlowsd@gmail.com>
389   * Fix #1185: restart the IO manager after fork()
390   
391   This is the libraries/base part of the patch; there is a corresponding
392   patch to GHC itself.
393   
394   The main change is that we now keep track of the IO manager's ThreadId
395   in a top-level MVar, and ensureIOManagerIsRunning checks whether a
396   previous IO manager thread is alive before starting one.  In the child
397   of fork(), we can hence call ensureIOManagerIsRunning to restart the
398   IO manager.
399 
400     M ./GHC/Conc.lhs -46 +44
401 
402 Wed Nov  4 17:49:45 GMT 2009  Ian Lynagh <igloo@earth.li>
403   * Fix the build on Windows
404 
405     M ./GHC/Conc.lhs -6 +4
406]
407[Fix the build on Windows
408Ian Lynagh <igloo@earth.li>**20091104174945]
409[Fix #1185: restart the IO manager after fork()
410Simon Marlow <marlowsd@gmail.com>**20091103160540
411 Ignore-this: 6dc05464f1500104554637f4759738cc
412 
413 This is the libraries/base part of the patch; there is a corresponding
414 patch to GHC itself.
415 
416 The main change is that we now keep track of the IO manager's ThreadId
417 in a top-level MVar, and ensureIOManagerIsRunning checks whether a
418 previous IO manager thread is alive before starting one.  In the child
419 of fork(), we can hence call ensureIOManagerIsRunning to restart the
420 IO manager.
421]
422[improve the documentation for throwErrnoIfRetry
423Simon Marlow <marlowsd@gmail.com>**20091016112404
424 Ignore-this: b77275cacf730e15757946027168f63e
425]
426[Don't inline unpackFoldrCString ever
427simonpj@microsoft.com**20091029135350
428 Ignore-this: 85d672649b1b776efc7e97500b05d4f9
429]
430[Inline more default methods
431simonpj@microsoft.com**20091029135330
432 Ignore-this: 289c44b0afd6d5631c2a4e0664275ca9
433 
434 Namely Monad: (>>)
435        Eq:    (==), (/=)
436        Num:   (-), negate
437        Real:  quot, rem, div, mod, recip, (/), truncate
438        Float: (**), logBase, sqrt, tan, tanh
439]
440[Move error messages out of INLINEd default methods
441simonpj@microsoft.com**20091029135118
442 Ignore-this: 9e35dc947f94827a3529eb53a41575fd
443 
444 No need to duplicate the error generation!
445]
446[Exploit now-working default-method INLINE pragmas for Data.Bits
447simonpj@microsoft.com**20091029135041
448 Ignore-this: 8adf225f31ca7a3181ee087e9e4fe535
449 
450 * Add INLINE pragmas to default methods for class Bits
451 
452 * Remove redundant instance methods elsewhere, now that
453   the default method will do the job
454]
455[Tidy up and comment imports
456simonpj@microsoft.com**20091029134414
457 Ignore-this: bf2be31035de975d8995e988933cc940
458]
459[Inline foldr and (.) when applied to two arguments not three
460simonpj@microsoft.com**20091029134335
461 Ignore-this: fccb6f3e90e15f44cb465814be85ede2
462 
463 The new INLINE story is (by design) arity-sensitive, so we must
464 put fewer argument on the LHS for foldr and (.)
465]
466[dirUtils.c no longer available
467Malcolm.Wallace@cs.york.ac.uk**20091013093833]
468[Make hGetContents throw an exception if an error is encountered
469Simon Marlow <marlowsd@gmail.com>**20091012152955
470 Ignore-this: 9f7a7176193eab25c9daaacd9261f2de
471 
472 Strictly speaking this breaks Haskell 98 compatibility, which requires
473 hGetContents to just end the lazy stream silently if an error is
474 encountered.  However, for a few reasons we think it will make
475 everyone's life a bit easier if we make this change
476 
477  1. Errors will be a lot more common in GHC 6.12.1, in the form
478     of Unicode decoding errors.
479 
480  2. When Haskell 98 was designed, we didn't know how to throw
481     exceptions from inside lazy I/O, but now we do.
482 
483  3. If anyone is actually relying on the previous behaviour, their
484     code is arguably broken.
485]
486[Re-instate System.Console.Getopt for nhc98 builds.
487Malcolm.Wallace@cs.york.ac.uk**20091013092843
488 Although it was split out of base a while back, that change was
489 reverted for ghc soon afterwards, but nhc98 never noticed.
490]
491[Roll back "Another instance of nhc98's strange import semantics."
492Ian Lynagh <igloo@earth.li>**20091009185618
493 Fri Oct  9 14:50:51 BST 2009  Malcolm.Wallace@cs.york.ac.uk
494 GHC (correctly) warns about the unused import, which breaks the validate
495 build.
496]
497[Roll back "Cope with nhc98's (occasionally-strange) import semantics"
498Ian Lynagh <igloo@earth.li>**20091009184704
499 Fri Oct  9 14:43:51 BST 2009  Malcolm.Wallace@cs.york.ac.uk
500 GHC (correctly) warns about the unused import, which breaks the validate
501 build.
502]
503[It seems that nhc98 needs defaulting in Data.Fixed.
504Malcolm.Wallace@cs.york.ac.uk**20091009135242]
505[Another instance of nhc98's strange import semantics.
506Malcolm.Wallace@cs.york.ac.uk**20091009135051]
507[Make Data.Functor compatible with non-GHC compilers.
508Malcolm.Wallace@cs.york.ac.uk**20091009134821]
509[Cope with nhc98's (occasionally-strange) import semantics.
510Malcolm.Wallace@cs.york.ac.uk**20091009134351]
511[Fix gratuitous breakage of nhc98 in System.IO.
512Malcolm.Wallace@cs.york.ac.uk**20091009134001]
513[Fix gratuitous breakage of nhc98 in Control.Exception.Base.
514Malcolm.Wallace@cs.york.ac.uk**20091009133615]
515[Fix gratuitous breakage of non-GHC in Data.Fixed.
516Malcolm.Wallace@cs.york.ac.uk**20091009133330]
517[Fix gratuitous breakage for non-GHC in Data.Bits.
518Malcolm.Wallace@cs.york.ac.uk**20091009133257]
519[Use UTF-32LE instead of UTF32LE
520Simon Marlow <marlowsd@gmail.com>**20091006100207
521 Ignore-this: 7f881e36543d250ef848c9f60d67655a
522 The latter is not recognised by some iconv implementations.
523]
524[Strip any Byte Order Mark (BOM) from the front of decoded streams.
525Ben.Lippmeier@anu.edu.au*-20090930084229
526 Ignore-this: d0d0c3ae87b31d71ef1627c8e1786445
527 When decoding to UTF-32, Solaris iconv inserts a BOM at the front
528 of the stream, but Linux iconv doesn't.
529]
530[use UTF32BE/UTF32LE instead of UCS-4/UCS-4LE
531Simon Marlow <marlowsd@gmail.com>**20091005101554
532 Ignore-this: 2aef5e9bec421e714953b7aa1bdfc1b3
533]
534[Strip any Byte Order Mark (BOM) from the front of decoded streams.
535Ben.Lippmeier@anu.edu.au**20090930084229
536 Ignore-this: d0d0c3ae87b31d71ef1627c8e1786445
537 When decoding to UTF-32, Solaris iconv inserts a BOM at the front
538 of the stream, but Linux iconv doesn't.
539]
540[Add traceEvent :: String -> IO ()
541Simon Marlow <marlowsd@gmail.com>**20090925141257
542 Ignore-this: 8b1888bbf9682ffba13f815b6000e4b1
543 For emitting an event via the RTS tracing framework
544]
545[Fix the error message when flushing the read buffer of a non-seekable Handle
546Simon Marlow <marlowsd@gmail.com>**20090923090536
547 Ignore-this: 4342026df93759d99480f4e13f80a492
548]
549[Fix #3534: No need to flush the byte buffer when setting binary mode
550Simon Marlow <marlowsd@gmail.com>**20090923090445
551 Ignore-this: 625817ed7ae2c12291eb993a99dc640a
552]
553[Use let !y = x in .. x .. instead of seq in $! and evaluate (#2273)
554Simon Marlow <marlowsd@gmail.com>**20090916140454]
555[make some Applicative functions into methods, and split off Data.Functor (proposal #3335)
556Ross Paterson <ross@soi.city.ac.uk>**20090915173109
557 Ignore-this: a0cff4de6dfdbcbd56a66101bc4855a9
558 
559 The following functions
560 
561     (<$) :: Functor f => a -> f b -> f a
562     (*>) :: Applicative f => f a -> f b -> f b
563     (<*) :: Applicative f => f a -> f b -> f a
564     some :: Alternative f => f a -> f [a]
565     many :: Alternative f => f a -> f [a]
566 
567 are moved into the corresponding classes, with the existing implementations
568 as default definitions.  This gives people creating instances the option of
569 defining specialized implementations of these functions, though they should
570 be equivalent to the default definitions.
571 
572 Although (<$) is now a method of the Functor class, it is hidden in the
573 re-export by the Prelude, Control.Monad and Monad.  The new module
574 Data.Functor exposes the full class, plus the function (<$>).  These are
575 also re-exported by Control.Applicative.
576]
577[On Windows, use the console code page for text file encoding/decoding.
578Judah Jacobson <judah.jacobson@gmail.com>**20090913022126
579 Ignore-this: 86c2f2db8ef92b751599795d3195187b
580 
581 We keep all of the code page tables in the module
582 GHC.IO.Encoding.CodePage.Table.  That file was generated automatically
583 by running codepages/MakeTable.hs; more details are in the comments at the
584 start of that script.
585 
586 Storing the lookup tables adds about 40KB to each statically linked executable;
587 this only increases the size of a "hello world" program by about 7%.
588 
589 Currently we do not support double-byte encodings (Chinese/Japanese/Korean), since
590 including those codepages would increase the table size to 400KB.  It will be
591 straightforward to implement them once the work on library DLLs is finished.
592]
593[Fix "init" docs: the input list need not be finite. Fixes trac #3465
594Ian Lynagh <igloo@earth.li>**20090911210437]
595[Bump base version to 4.2.0.0
596Ian Lynagh <igloo@earth.li>**20090911153913]
597[Address #3310
598Simon Marlow <marlowsd@gmail.com>**20090830152850
599 Ignore-this: 40c7f7c171ee299a83092fd360a952b7
600 
601  - Rename BlockedOnDeadMVar   -> BlockedIndefinitelyOnMVar
602  - Rename BlockedIndefinitely -> BlockedIndefinitelyOnSTM
603  - instance Show BlockedIndefinitelyOnMVar is now
604      "blocked indefinitely in an MVar operation"
605  - instance Show BlockedIndefinitelyOnSTM is now
606      "blocked indefinitely in an STM transaction"
607 
608 clients using Control.OldException will be unaffected (the new
609 exceptions are mapped to the old names).  However, for base4-compat
610 we'll need to make a version of catch/try that does a similar
611 mapping.
612]
613[Fix unicode conversion for MSB architectures
614Ben.Lippmeier@anu.edu.au**20090830130028
615 This fixes the SPARC/Solaris build.
616]
617[Fix #3441: detect errors in partial sequences
618Simon Marlow <marlowsd@gmail.com>**20090830075909
619 Ignore-this: d12a75d95e0cae5eb1555266810ec281
620]
621[Fix hWaitForInput
622Simon Marlow <marlowsd@gmail.com>**20090827152116
623 Ignore-this: 2550e911f1a4d4357a5aa8d1764238ce
624 It was erroneously waiting when there were bytes to decode waiting in
625 the byte buffer.
626]
627[fix debugging code
628Simon Marlow <marlowsd@gmail.com>**20090827150628
629 Ignore-this: e1c82fdc19a22e247cd69ff6fa11921d
630]
631[Allow for configurable iconv include and library locations.
632Matthias Kilian <kili@outback.escape.de>**20090826154406
633 Ignore-this: be95fab611a5534cf184b508964ed498
634 This should help to fix the build on OpenBSD.
635]
636[typo in comment
637Simon Marlow <marlowsd@gmail.com>**20090826085252
638 Ignore-this: 1903ee0f354157a6ed3871c100f6b1b9
639]
640[un-hide some modules from the Haddock docs
641Simon Marlow <marlowsd@gmail.com>**20090825152457
642 Ignore-this: dce6606f93cf977fb24ebe99082dfa62
643]
644[Apply fix for #1548, from squadette@gmail.com
645Simon Marlow <marlowsd@gmail.com>**20090819120700
646 Ignore-this: 31c237c46a6445f588ed4b8c51bb6231
647]
648[improvements to Data.Fixed: instances for Typeable and Data, more predefined types
649Ashley Yakeley <ashley@semantic.org>**20090812055058
650 Ignore-this: feeece36d5632f02a05d137d2a39ab78
651]
652[Fix "Cabal check" warnings
653Ian Lynagh <igloo@earth.li>**20090811215856]
654[Add a GHC.Constants module; fixes trac #3094
655Ian Lynagh <igloo@earth.li>**20090809183252]
656[Apply proposal #3393
657Ian Lynagh <igloo@earth.li>**20090809134717
658 Add openTempFileWithDefaultPermissions and
659 openBinaryTempFileWithDefaultPermissions.
660]
661[Add some more C wrappers; patch from Krister Walfridsson
662Ian Lynagh <igloo@earth.li>**20090807200631
663 Fixes 21 testsuite errors on NetBSD 5.99.
664]
665[Fixing configure for autoconf 2.64
666Alexander Dunlap <alexander.dunlap@gmail.com>**20090805060748
667 Ignore-this: 992ab91ae3d68c12dbb265776e33e243
668]
669[add INLINE toList
670Ross Paterson <ross@soi.city.ac.uk>**20090806142853
671 Ignore-this: aba16aabb17d5dca44f15d188945680e
672 
673 In anticipation of the fixing of #2353.
674]
675[fix a copyright
676Simon Marlow <marlowsd@gmail.com>**20090805134045
677 Ignore-this: b0ffbdd38fbba121e8bcba37c4082a60
678]
679[Tweak the BufferedIO class to enable a memory-mapped file implementation
680Simon Marlow <marlowsd@gmail.com>**20090805134036
681 Ignore-this: ec67d7a0a6d977438deaa342503f77e0
682 We have to eliminate the assumption that an empty write buffer can be
683 constructed by setting the buffer pointers to zero: this isn't
684 necessarily the case when the buffer corresponds to a memory-mapped
685 file, or other in-memory device implementation.
686]
687[Deprecate Control.OldException
688Ian Lynagh <igloo@earth.li>**20090804143910]
689[Windows build fix, following RTS tidyup
690Simon Marlow <marlowsd@gmail.com>**20090803131121
691 Ignore-this: ce862fb91c2b234211a8757f98690778
692]
693[Updates to follow the RTS tidyup
694Simon Marlow <marlowsd@gmail.com>**20090801220743
695 Ignore-this: 6e92412df93a66c12d75344053d5634
696 C functions like isDoubleNaN moved here (primFloat.c)
697]
698[Add integer-simple as a build option
699Ian Lynagh <igloo@earth.li>**20090722013151]
700[Use shift[LR]Integer in the Bits Integer instance
701Ian Lynagh <igloo@earth.li>**20090721222440]
702[depend directly on integer-gmp, rather than indirecting through integer
703Ian Lynagh <igloo@earth.li>**20090721185228]
704[Move the instances of Functor and Monad IO to GHC.Base, to avoid orphans
705Simon Marlow <marlowsd@gmail.com>**20090722102130
706 Ignore-this: a7d85ac0025d559674249de0108dbcf4
707]
708[move "instance Exception Dynamic" so it isn't an orphan
709Simon Marlow <marlowsd@gmail.com>**20090721093854
710 Ignore-this: 5ede91ecfec2112c91b699d4de87cd02
711]
712[Improve the index checking for array accesses; fixes #2120 #2669
713Ian Lynagh <igloo@earth.li>**20090719153228
714 As well as checking that offset we are reading is actually inside the
715 array, we now also check that it is "in range" as defined by the Ix
716 instance. This fixes confusing behaviour (#2120) and improves some error
717 messages (#2669).
718]
719[Make chr say what its argument was, if it's a bad argument
720Ian Lynagh <igloo@earth.li>**20090718151049]
721[remove unused warning
722Simon Marlow <marlowsd@gmail.com>**20090715124416
723 Ignore-this: 31f613654089d0f4a44363946087b41e
724]
725[warning fix: -fno-implicit-prelude -> -XNoImplicitPrelude
726Simon Marlow <marlowsd@gmail.com>**20090715122839
727 Ignore-this: dc8957249731d5bcb71c01899e5adf2b
728]
729[Add hGetEncoding :: Handle -> IO (Maybe TextEncoding)
730Simon Marlow <marlowsd@gmail.com>**20090715122519
731 Ignore-this: 14c3eff996db062da1199739781e4708
732 as suggested during the discussion on the libraries list
733]
734[Add more documentation to mkTextEncoding
735Simon Marlow <marlowsd@gmail.com>**20090715122414
736 Ignore-this: 97253b2624267df3a246a18121e8ea81
737 noting that "//IGNORE" and "//TRANSLIT" suffixes can be used with GNU
738 iconv.
739]
740[Add the utf8_bom codec
741Simon Marlow <marlowsd@gmail.com>**20090715122257
742 Ignore-this: 1c9396cd805201fe873a39382ced79c7
743 as suggested during the discussion on the libraries list.
744]
745[Export Unicode and newline functionality from System.IO; update Haddock docs
746Simon Marlow <marlowsd@gmail.com>**20090713113104
747 Ignore-this: c3f017a555335aa55d106253393f72e2
748]
749[add a comment about the non-workingness of CHARBUF_UTF16
750Simon Marlow <marlowsd@gmail.com>**20090707124406
751 Ignore-this: 98d00411b68d688b3b4cffc9507b1f35
752]
753[Fix build on Windows
754Ian Lynagh <igloo@earth.li>**20090711004351]
755[Fix some "warn-unused-do-bind" warnings where we want to ignore the value
756Ian Lynagh <igloo@earth.li>**20090710204513]
757[Use throwErrnoIfMinus1_ when calling getrusage
758Ian Lynagh <igloo@earth.li>**20090710204221]
759[Remove an unused import
760Ian Lynagh <igloo@earth.li>**20090710153345]
761[reportStackOverflow now returns IO ()
762Ian Lynagh <igloo@earth.li>**20090710153257
763 It used to do "return undefined" to return IO a.
764]
765[GHC.Conc.reportError now returns IO ()
766Ian Lynagh <igloo@earth.li>**20090710152646
767 It used to return IO a, by "return undefined".
768]
769[Fix some "warn-unused-do-bind" warnings where we want to ignore the value
770Ian Lynagh <igloo@earth.li>**20090710152526]
771[Minor SampleVar refactoring
772Ian Lynagh <igloo@earth.li>**20090710151438]
773[Fix "warn-unused-do-bind" warnings in GHC/IO/Handle/Text.hs
774Ian Lynagh <igloo@earth.li>**20090710122905]
775[Fix some "warn-unused-do-bind" warnings where we just want to ignore the result
776Ian Lynagh <igloo@earth.li>**20090710005638]
777[Use the result of writeCharBuf in GHC/IO/Encoding/Latin1.hs too
778Ian Lynagh <igloo@earth.li>**20090710004032]
779[Minor code tidyups in GHC.Conc
780Ian Lynagh <igloo@earth.li>**20090710003801]
781[Fix "warn-unused-do-bind" warning in GHC.Conc
782Ian Lynagh <igloo@earth.li>**20090710003530
783 If we fail to communicate with the IO manager then we print a warning
784 using debugErrLn from the ghc-prim package.
785]
786[Fix "warn-unused-do-bind" warnings in System.Posix.Internals
787Ian Lynagh <igloo@earth.li>**20090709164546]
788[Fix "warn-unused-do-bind" warnings where we really do want to ignore the result
789Ian Lynagh <igloo@earth.li>**20090709163912]
790[Add back imports needed on Windows
791Ian Lynagh <igloo@earth.li>**20090707181924]
792[Remove unused imports
793Ian Lynagh <igloo@earth.li>**20090707115810]
794[Remove unused imports from base
795simonpj@microsoft.com**20090706111842
796 Ignore-this: f9b5f353e3bb820f787c56d615b28765
797 
798 These unused imports are detected by the new unused-import code
799 
800]
801[Use the result of writeCharBuf
802Simon Marlow <marlowsd@gmail.com>**20090706133303
803 Ignore-this: 52288dd559bf4c4f313df6197091d935
804   
805 This only makes a difference when CHARBUF_UTF16 is in use, which it
806 normally isn't.  I suspect CHARBUF_UTF16 doesn't currently work for
807 other reasons (CHARBUF_UTF16 was an experiment before I wrote the
808 GHC.IO.Encoding.UTF* codecs), but this patch at least makes it
809 slightly closer to working.
810]
811[Remove some cruft from Data.HashTable
812Ian Lynagh <igloo@earth.li>**20090706181630]
813[Add 'eof' to Text.ParserCombinators.ReadP
814simonpj@microsoft.com**20090706111801
815 Ignore-this: 2aea7b848e00c894761bc4011adaa95d
816 
817 Add a ReadP parser that succeeds at the end of input. Very useful!
818 
819]
820[Don't export CLDouble for GHC; fixes trac #2793
821Ian Lynagh <igloo@earth.li>**20090705155120
822 We never really supported CLDouble (it was a plain old double underneath),
823 and pretending that we do does more harm than good.
824]
825[a byte between 0x80 and 0xBF is illegal immediately (#3341)
826Simon Marlow <marlowsd@gmail.com>**20090702081415
827 Ignore-this: dc19ef59a1a21118d5a7dd38aa2f611c
828]
829[avoid a warning
830Simon Marlow <marlowsd@gmail.com>**20090630084134
831 Ignore-this: c92a45ee216faf01327feae9fe06d6e2
832]
833[Add a wrapper for libiconv.
834Matthias Kilian <kili@outback.escape.de>**20090629183634
835 Ignore-this: 23c6047c0d71b745b495cc223574a47f
836]
837[#include <sys/times.h> if we have it (should fix build problems)
838Simon Marlow <marlowsd@gmail.com>**20090629085351
839 Ignore-this: a35e93b37ca9595c73460243180f4b9d
840]
841[set binary mode for existing FDs on Windows (fixes some GHCi test failures)
842Simon Marlow <marlowsd@gmail.com>**20090626120522
843 Ignore-this: 580cf636e9c77d8427aff6861d089481
844]
845[Move directory-related stuff to the unix package
846Simon Marlow <marlowsd@gmail.com>**20090625120325
847 Ignore-this: b997b3cbce0a46ca87ad825bbdc0a411
848 now that it isn't used on Windows any more.
849]
850[TAG 2009-06-25
851Ian Lynagh <igloo@earth.li>**20090625160056]
852Patch bundle hash:
853f7379850c33929d6488301dbcceee359ccd3a072