Ticket #3944: async-exceptions-and-laziness-in-qsem-qsemn.dpatch

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