Ticket #2271: realFrac.dpatch

File realFrac.dpatch, 65.6 KB (added by daniel.is.fischer, 4 years ago)

patch for faster RealFrac? methods

Line 
11 patch for repository /home/dafis/Haskell/Hacking/ghc/libraries/base:
2
3Fri Oct 15 23:46:29 CEST 2010  Daniel Fischer <daniel.is.fischer@web.de>
4  * FIX #2271
5  Faster RealFrac methods for Float and Double with Int and Integer results and rewrite rules for those.
6 
7  I left the old implementation in, but probably it should be replaced by the methods with Integer results and a call to fromInteger.
8
9New patches:
10
11[FIX #2271
12Daniel Fischer <daniel.is.fischer@web.de>**20101015214629
13 Ignore-this: 381ef7e0a1b81a3441d74aae10ab2bff
14 Faster RealFrac methods for Float and Double with Int and Integer results and rewrite rules for those.
15 
16 I left the old implementation in, but probably it should be replaced by the methods with Integer results and a call to fromInteger.
17] {
18adddir ./GHC/Float
19hunk ./GHC/Float.lhs 24
20 #include "ieee-flpt.h"
21 
22 -- #hide
23-module GHC.Float( module GHC.Float, Float(..), Double(..), Float#, Double# )
24+module GHC.Float( module GHC.Float, Float(..), Double(..), Float#, Double#
25+                , double2Int, int2Double, float2Int, int2Float )
26     where
27 
28 import Data.Maybe
29hunk ./GHC/Float.lhs 38
30 import GHC.Num
31 import GHC.Real
32 import GHC.Arr
33+import GHC.Float.RealFracMethods
34 
35 infixr 8  **
36 \end{code}
37hunk ./GHC/Float.lhs 196
38     fromRational x      =  fromRat x
39     recip x             =  1.0 / x
40 
41-{-# RULES "truncate/Float->Int" truncate = float2Int #-}
42+-- RULES for Integer and Int
43+{-# RULES
44+"properFraction/Float->Integer"     properFraction = properFractionFloatInteger
45+"truncate/Float->Integer"           truncate = truncateFloatInteger
46+"floor/Float->Integer"              floor = floorFloatInteger
47+"ceiling/Float->Integer"            ceiling = ceilingFloatInteger
48+"round/Float->Integer"              round = roundFloatInteger
49+"properFraction/Float->Int"         properFraction = properFractionFloatInt
50+"truncate/Float->Int"               truncate = float2Int
51+"floor/Float->Int"                  floor = floorFloatInt
52+"ceiling/Float->Int"                ceiling = ceilingFloatInt
53+"round/Float->Int"                  round = roundFloatInt
54+  #-}
55 instance  RealFrac Float  where
56 
57hunk ./GHC/Float.lhs 211
58-    {-# SPECIALIZE properFraction :: Float -> (Int, Float) #-}
59-    {-# SPECIALIZE round    :: Float -> Int #-}
60-
61-    {-# SPECIALIZE properFraction :: Float  -> (Integer, Float) #-}
62-    {-# SPECIALIZE round    :: Float -> Integer #-}
63-
64         -- ceiling, floor, and truncate are all small
65hunk ./GHC/Float.lhs 212
66-    {-# INLINE ceiling #-}
67-    {-# INLINE floor #-}
68-    {-# INLINE truncate #-}
69+    {-# INLINE [1] ceiling #-}
70+    {-# INLINE [1] floor #-}
71+    {-# INLINE [1] truncate #-}
72 
73 -- We assume that FLT_RADIX is 2 so that we can use more efficient code
74 #if FLT_RADIX != 2
75hunk ./GHC/Float.lhs 357
76     acosh x = log (x + (x+1.0) * sqrt ((x-1.0)/(x+1.0)))
77     atanh x = 0.5 * log ((1.0+x) / (1.0-x))
78 
79-{-# RULES "truncate/Double->Int" truncate = double2Int #-}
80+-- RULES for Integer and Int
81+{-# RULES
82+"properFraction/Double->Integer"    properFraction = properFractionDoubleInteger
83+"truncate/Double->Integer"          truncate = truncateDoubleInteger
84+"floor/Double->Integer"             floor = floorDoubleInteger
85+"ceiling/Double->Integer"           ceiling = ceilingDoubleInteger
86+"round/Double->Integer"             round = roundDoubleInteger
87+"properFraction/Double->Int"        properFraction = properFractionDoubleInt
88+"truncate/Double->Int"              truncate = double2Int
89+"floor/Double->Int"                 floor = floorDoubleInt
90+"ceiling/Double->Int"               ceiling = ceilingDoubleInt
91+"round/Double->Int"                 round = roundDoubleInt
92+  #-}
93 instance  RealFrac Double  where
94 
95hunk ./GHC/Float.lhs 372
96-    {-# SPECIALIZE properFraction :: Double -> (Int, Double) #-}
97-    {-# SPECIALIZE round    :: Double -> Int #-}
98-
99-    {-# SPECIALIZE properFraction :: Double -> (Integer, Double) #-}
100-    {-# SPECIALIZE round    :: Double -> Integer #-}
101-
102         -- ceiling, floor, and truncate are all small
103hunk ./GHC/Float.lhs 373
104-    {-# INLINE ceiling #-}
105-    {-# INLINE floor #-}
106-    {-# INLINE truncate #-}
107+    {-# INLINE [1] ceiling #-}
108+    {-# INLINE [1] floor #-}
109+    {-# INLINE [1] truncate #-}
110 
111     properFraction x
112       = case (decodeFloat x)      of { (m,n) ->
113hunk ./GHC/Float.lhs 379
114-        let  b = floatRadix x     in
115         if n >= 0 then
116hunk ./GHC/Float.lhs 380
117-            (fromInteger m * fromInteger b ^ n, 0.0)
118+            (fromInteger m * 2 ^ n, 0.0)
119         else
120hunk ./GHC/Float.lhs 382
121-            case (quotRem m (b^(negate n))) of { (w,r) ->
122+            case (quotRem m (2^(negate n))) of { (w,r) ->
123             (fromInteger w, encodeFloat r n)
124             }
125         }
126hunk ./GHC/Float.lhs 836
127 ltFloat     (F# x) (F# y) = ltFloat# x y
128 leFloat     (F# x) (F# y) = leFloat# x y
129 
130-float2Int :: Float -> Int
131-float2Int   (F# x) = I# (float2Int# x)
132-
133-int2Float :: Int -> Float
134-int2Float   (I# x) = F# (int2Float# x)
135-
136 expFloat, logFloat, sqrtFloat :: Float -> Float
137 sinFloat, cosFloat, tanFloat  :: Float -> Float
138 asinFloat, acosFloat, atanFloat  :: Float -> Float
139hunk ./GHC/Float.lhs 876
140 ltDouble    (D# x) (D# y) = x <## y
141 leDouble    (D# x) (D# y) = x <=## y
142 
143-double2Int :: Double -> Int
144-double2Int   (D# x) = I# (double2Int#   x)
145-
146-int2Double :: Int -> Double
147-int2Double   (I# x) = D# (int2Double#   x)
148-
149 double2Float :: Double -> Float
150 double2Float (D# x) = F# (double2Float# x)
151 
152addfile ./GHC/Float/RealFracMethods.hs
153hunk ./GHC/Float/RealFracMethods.hs 1
154+{-# LANGUAGE CPP, MagicHash, UnboxedTuples, ForeignFunctionInterface,
155+    NoImplicitPrelude #-}
156+{-# OPTIONS_HADDOCK hide #-}
157+-----------------------------------------------------------------------------
158+-- |
159+-- Module      :  GHC.Float.RealFracMethods
160+-- Copyright   :  (c) Daniel Fischer 2010
161+-- License     :  see libraries/base/LICENSE
162+--
163+-- Maintainer  :  cvs-ghc@haskell.org
164+-- Stability   :  internal
165+-- Portability :  non-portable (GHC Extensions)
166+--
167+-- Methods for the RealFrac instances for 'Float' and 'Double',
168+-- with specialised versions for 'Int'.
169+--
170+-- Moved to their own module to not bloat GHC.Float further.
171+--
172+-----------------------------------------------------------------------------
173+
174+#include "MachDeps.h"
175+
176+-- #hide
177+module GHC.Float.RealFracMethods
178+    ( -- * Double methods
179+      -- ** Integer results
180+      properFractionDoubleInteger
181+    , truncateDoubleInteger
182+    , floorDoubleInteger
183+    , ceilingDoubleInteger
184+    , roundDoubleInteger
185+      -- ** Int results
186+    , properFractionDoubleInt
187+    , floorDoubleInt
188+    , ceilingDoubleInt
189+    , roundDoubleInt
190+      -- * Double/Int conversions, wrapped primops
191+    , double2Int
192+    , int2Double
193+      -- * Float methods
194+      -- ** Integer results
195+    , properFractionFloatInteger
196+    , truncateFloatInteger
197+    , floorFloatInteger
198+    , ceilingFloatInteger
199+    , roundFloatInteger
200+      -- ** Int results
201+    , properFractionFloatInt
202+    , floorFloatInt
203+    , ceilingFloatInt
204+    , roundFloatInt
205+      -- * Float/Int conversions, wrapped primops
206+    , float2Int
207+    , int2Float
208+    ) where
209+
210+import GHC.Integer
211+
212+import GHC.Base
213+import GHC.Num
214+
215+#if WORD_SIZE_IN_BITS < 64
216+
217+import GHC.IntWord64
218+
219+#define TO64 integerToInt64
220+#define FROM64 int64ToInteger
221+#define MINUS64 minusInt64#
222+#define NEGATE64 negateInt64#
223+
224+#else
225+
226+#define TO64 toInt#
227+#define FROM64 smallInteger
228+#define MINUS64 ( -# )
229+#define NEGATE64 negateInt#
230+
231+uncheckedIShiftRA64# :: Int# -> Int#
232+uncheckedIShiftRA64# = uncheckedIShiftRA#
233+
234+uncheckedIShiftL64# :: Int# -> Int#
235+uncheckedIShiftL64# = uncheckedIShiftL#
236+
237+#endif
238+
239+default ()
240+
241+------------------------------------------------------------------------------
242+--                              Float Methods                               --
243+------------------------------------------------------------------------------
244+
245+-- Special Functions for Int, nice, easy and fast.
246+-- They should be small enough to be inlined automatically.
247+
248+properFractionFloatInt :: Float -> (Int, Float)
249+properFractionFloatInt (F# x) =
250+    case float2Int# x of
251+      n -> (I# n, F# (x `minusFloat#` int2Float# n))
252+
253+-- truncateFloatInt = float2Int
254+
255+floorFloatInt :: Float -> Int
256+floorFloatInt (F# x) =
257+    case float2Int# x of
258+      n | x `ltFloat#` int2Float# n -> I# (n -# 1#)
259+        | otherwise                 -> I# n
260+
261+ceilingFloatInt :: Float -> Int
262+ceilingFloatInt (F# x) =
263+    case float2Int# x of
264+      n | int2Float# n `ltFloat#` x  -> I# (n +# 1#)
265+        | otherwise                 -> I# n
266+
267+roundFloatInt :: Float -> Int
268+roundFloatInt x = float2Int (c_rintFloat x)
269+
270+-- Functions with Integer results
271+
272+-- With the new code generator in GHC 7, the explicit bit-fiddling is
273+-- slower than the old code for values of small modulus, but when the
274+-- 'Int' range is left, the bit-fiddling quickly wins big, so we use that.
275+-- If the methods are called on smallish values, hopefully people go
276+-- through Int and not larger types.
277+
278+-- Note: For negative exponents, we must check the validity of the shift
279+-- distance for the right shifts of the mantissa.
280+
281+{-# INLINE properFractionFloatInteger #-}
282+properFractionFloatInteger :: Float -> (Integer, Float)
283+properFractionFloatInteger v@(F# x) =
284+    case decodeFloat_Int# x of
285+      (# m, e #)
286+        | e <# 0#   ->
287+          case negateInt# e of
288+            s | s ># 23#    -> (0, v)
289+              | m <# 0#     ->
290+                case negateInt# (negateInt# m `uncheckedIShiftRA#` s) of
291+                  k -> (smallInteger k,
292+                            case m -# (k `uncheckedIShiftL#` s) of
293+                              r -> F# (encodeFloatInteger (smallInteger r) e))
294+              | otherwise           ->
295+                case m `uncheckedIShiftRL#` s of
296+                  k -> (smallInteger k,
297+                            case m -# (k `uncheckedIShiftL#` s) of
298+                              r -> F# (encodeFloatInteger (smallInteger r) e))
299+        | otherwise -> (shiftLInteger (smallInteger m) e, F# 0.0#)
300+
301+{-# INLINE truncateFloatInteger #-}
302+truncateFloatInteger :: Float -> Integer
303+truncateFloatInteger x =
304+    case properFractionFloatInteger x of
305+      (n, _) -> n
306+
307+-- floor is easier for negative numbers than truncate, so this gets its
308+-- own implementation, it's a little faster.
309+{-# INLINE floorFloatInteger #-}
310+floorFloatInteger :: Float -> Integer
311+floorFloatInteger (F# x) =
312+    case decodeFloat_Int# x of
313+      (# m, e #)
314+        | e <# 0#   ->
315+          case negateInt# e of
316+            s | s ># 23#    -> if m <# 0# then (-1) else 0
317+              | otherwise   -> smallInteger (m `uncheckedIShiftRA#` s)
318+        | otherwise -> shiftLInteger (smallInteger m) e
319+
320+-- ceiling x = -floor (-x)
321+-- If giving this its own implementation is faster at all,
322+-- it's only marginally so, hence we keep it short.
323+{-# INLINE ceilingFloatInteger #-}
324+ceilingFloatInteger :: Float -> Integer
325+ceilingFloatInteger (F# x) =
326+    negateInteger (floorFloatInteger (F# (negateFloat# x)))
327+
328+{-# INLINE roundFloatInteger #-}
329+roundFloatInteger :: Float -> Integer
330+roundFloatInteger x = float2Integer (c_rintFloat x)
331+
332+------------------------------------------------------------------------------
333+--                              Double Methods                              --
334+------------------------------------------------------------------------------
335+
336+-- Special Functions for Int, nice, easy and fast.
337+-- They should be small enough to be inlined automatically.
338+
339+properFractionDoubleInt :: Double -> (Int, Double)
340+properFractionDoubleInt (D# x) =
341+    case double2Int# x of
342+      n -> (I# n, D# (x -## int2Double# n))
343+
344+-- truncateDoubleInt = double2Int
345+
346+floorDoubleInt :: Double -> Int
347+floorDoubleInt (D# x) =
348+    case double2Int# x of
349+      n | x <## int2Double# n   -> I# (n -# 1#)
350+        | otherwise             -> I# n
351+
352+ceilingDoubleInt :: Double -> Int
353+ceilingDoubleInt (D# x) =
354+    case double2Int# x of
355+      n | int2Double# n <## x   -> I# (n +# 1#)
356+        | otherwise             -> I# n
357+
358+roundDoubleInt :: Double -> Int
359+roundDoubleInt x = double2Int (c_rintDouble x)
360+
361+-- Functions with Integer results
362+
363+-- The new Code generator isn't quite as good for the old 'Double' code
364+-- as for the 'Float' code, so for 'Double' the bit-fiddling also wins
365+-- when the values have small modulus.
366+
367+-- When the exponent is negative, all mantissae have less than 64 bits
368+-- and the right shifting of sized types is much faster than that of
369+-- 'Integer's, especially when we can
370+
371+-- Note: For negative exponents, we must check the validity of the shift
372+-- distance for the right shifts of the mantissa.
373+
374+{-# INLINE properFractionDoubleInteger #-}
375+properFractionDoubleInteger :: Double -> (Integer, Double)
376+properFractionDoubleInteger v@(D# x) =
377+    case decodeDoubleInteger x of
378+      (# m, e #)
379+        | e <# 0#   ->
380+          case negateInt# e of
381+            s | s ># 52#    -> (0, v)
382+              | m < 0       ->
383+                case TO64 (negateInteger m) of
384+                  n ->
385+                    case n `uncheckedIShiftRA64#` s of
386+                      k ->
387+                        (FROM64 (NEGATE64 k),
388+                          case MINUS64 n (k `uncheckedIShiftL64#` s) of
389+                            r ->
390+                              D# (encodeDoubleInteger (FROM64 (NEGATE64 r)) e))
391+              | otherwise           ->
392+                case TO64 m of
393+                  n ->
394+                    case n `uncheckedIShiftRA64#` s of
395+                      k -> (FROM64 k,
396+                            case MINUS64 n (k `uncheckedIShiftL64#` s) of
397+                              r -> D# (encodeDoubleInteger (FROM64 r) e))
398+        | otherwise -> (shiftLInteger m e, D# 0.0##)
399+
400+{-# INLINE truncateDoubleInteger #-}
401+truncateDoubleInteger :: Double -> Integer
402+truncateDoubleInteger x =
403+    case properFractionDoubleInteger x of
404+      (n, _) -> n
405+
406+-- floor is easier for negative numbers than truncate, so this gets its
407+-- own implementation, it's a little faster.
408+{-# INLINE floorDoubleInteger #-}
409+floorDoubleInteger :: Double -> Integer
410+floorDoubleInteger (D# x) =
411+    case decodeDoubleInteger x of
412+      (# m, e #)
413+        | e <# 0#   ->
414+          case negateInt# e of
415+            s | s ># 52#    -> if m < 0 then (-1) else 0
416+              | otherwise   ->
417+                case TO64 m of
418+                  n -> FROM64 (n `uncheckedIShiftRA64#` s)
419+        | otherwise -> shiftLInteger m e
420+
421+{-# INLINE ceilingDoubleInteger #-}
422+ceilingDoubleInteger :: Double -> Integer
423+ceilingDoubleInteger (D# x) =
424+    negateInteger (floorDoubleInteger (D# (negateDouble# x)))
425+
426+{-# INLINE roundDoubleInteger #-}
427+roundDoubleInteger :: Double -> Integer
428+roundDoubleInteger x = double2Integer (c_rintDouble x)
429+
430+-- Wrappers around double2Int#, int2Double#, float2Int# and int2Float#,
431+-- we need them here, so we move them from GHC.Float and re-export them
432+-- explicitly from there.
433+
434+double2Int :: Double -> Int
435+double2Int (D# x) = I# (double2Int# x)
436+
437+int2Double :: Int -> Double
438+int2Double (I# i) = D# (int2Double# i)
439+
440+float2Int :: Float -> Int
441+float2Int (F# x) = I# (float2Int# x)
442+
443+int2Float :: Int -> Float
444+int2Float (I# i) = F# (int2Float# i)
445+
446+-- Quicker conversions from 'Double' and 'Float' to 'Integer',
447+-- assuming the floating point value is integral.
448+--
449+-- Note: Since the value is integral, the exponent can't be less than
450+-- (-TYP_MANT_DIG), so we need not check the validity of the shift
451+-- distance for the right shfts here.
452+
453+{-# INLINE double2Integer #-}
454+double2Integer :: Double -> Integer
455+double2Integer (D# x) =
456+    case decodeDoubleInteger x of
457+      (# m, e #)
458+        | e <# 0#   ->
459+          case TO64 m of
460+            n -> FROM64 (n `uncheckedIShiftRA64#` negateInt# e)
461+        | otherwise -> shiftLInteger m e
462+
463+{-# INLINE float2Integer #-}
464+float2Integer :: Float -> Integer
465+float2Integer (F# x) =
466+    case decodeFloat_Int# x of
467+      (# m, e #)
468+        | e <# 0#   -> smallInteger (m `uncheckedIShiftRA#` negateInt# e)
469+        | otherwise -> shiftLInteger (smallInteger m) e
470+
471+-- Foreign imports, the rounding is done faster in C when the value
472+-- isn't integral, so we call out for rounding. For values of large
473+-- modulus, calling out to C is slower than staying in Haskell, but
474+-- presumably 'round' is mostly called for values with smaller modulus,
475+-- when calling out to C is a major win.
476+-- For all other functions, calling out to C gives at most a marginal
477+-- speedup for values of small modulus and is much slower than staying
478+-- in Haskell for values of large modulus, so those are done in Haskell.
479+
480+foreign import ccall unsafe "math.h rint"
481+    c_rintDouble :: Double -> Double
482+
483+foreign import ccall unsafe "math.h rintf"
484+    c_rintFloat :: Float -> Float
485hunk ./base.cabal 55
486             GHC.Exception,
487             GHC.Exts,
488             GHC.Float,
489+            GHC.Float.RealFracMethods,
490             GHC.ForeignPtr,
491             GHC.MVar,
492             GHC.IO,
493}
494
495Context:
496
497[throwTo: mention interruptible foreign calls
498Simon Marlow <marlowsd@gmail.com>**20101014084220
499 Ignore-this: dbc53d85f870cf649f87186c7185465a
500]
501[remove trailing whitespace
502Simon Marlow <marlowsd@gmail.com>**20101013101906
503 Ignore-this: b8b424540cacbbb3c6d934242e3af795
504]
505[FIX #4381
506Simon Marlow <marlowsd@gmail.com>**20101013101849
507 Ignore-this: f0daa4845eeb444231451b975b71d055
508 Fix scaleFloat by clamping the scaling parameter so that
509 exponent + scale doesn't overflow.
510 
511 Patch by: Daniel Fischer <daniel.is.fischer@web.de>
512]
513[Replaced some throws to throwIOs where the type is IO
514Bas van Dijk <v.dijk.bas@gmail.com>**20100924221340
515 Ignore-this: e74191e4527ae6f7551c95fd41063335
516]
517[Added initial .authorspellings
518Bas van Dijk <v.dijk.bas@gmail.com>**20101005072701
519 Ignore-this: 63628bcabfdd0b7beda4cd37daeccd89
520]
521[Lazier intersperse
522Daniel Fischer <daniel.is.fischer@web.de>**20101002231201
523 Ignore-this: a0fed65930cf19e68b4363381a5ab576
524 A lazier implementation of intersperse, and consequentially intercalate, to
525 avoid space leaks.
526]
527[FIX #4228 (atanh (-1) returns NaN instead of -Infinity)
528ghc@cainnorris.net**20100816213654
529 Ignore-this: dee89c24493e84a02bea711a1c83a73f
530]
531[Make intersectBy lazier
532Daniel Fischer <daniel.is.fischer@web.de>**20100930191731
533 Ignore-this: ef687bc75923434e85c14b57171576aa
534 Add shortcuts to intersectBy for empty list arguments.
535 In addition to being faster in that case, more inputs yield defined results.
536 Treats ticket #4323
537]
538[doc tweak for Directory file type: file names are '\0'-separated
539Simon Marlow <marlowsd@gmail.com>**20100922113811
540 Ignore-this: 96b7b004bd6e5bc3e958ad55bf238ba1
541]
542[documentation for IODeviceType (#4317, edited by me)
543Simon Marlow <marlowsd@gmail.com>**20100915131341
544 Ignore-this: 21c50ca7a189eebcf299523b6e942bae
545]
546[Allow Data.HashTable construction with user-supplied size
547**20100722210726
548 Ignore-this: bd54880bb16a106a992f03b040dc4164
549 
550 This avoids some resizing for users who know they will be inserting a
551 lot of data.
552 
553 http://hackage.haskell.org/trac/ghc/ticket/4193
554]
555[some fixes for hGetBufSome
556Simon Marlow <marlowsd@gmail.com>**20100916113732
557 Ignore-this: 3e596a606c180dc4859ea8f4c9132ca1
558  - fix one case where it was blocking when it shouldn't
559  - a couple of error-message tweaks
560]
561[Windows: map ERROR_NO_DATA to EPIPE, rather than EINVAL
562Simon Marlow <marlowsd@gmail.com>**20100915142618
563 Ignore-this: 9023e5f0542419f225aef26cb6b1d88d
564 WriteFile() returns ERROR_NO_DATA when writing to a pipe that is
565 "closing", however by default the write() wrapper in the CRT maps this
566 to EINVAL so we get confusing things like
567 
568   hPutChar: invalid argument (Invalid Argumnet)
569 
570 when piping the output of a Haskell program into something that closes
571 the pipe early.  This was happening in the testsuite in a few place.
572 
573 The solution is to map ERROR_NO_DATA to EPIPE correctly, as we
574 explicitly check for EPIPE on stdout (in GHC.TopHandler) so we can
575 exit without an error in this case.
576]
577[tighten up parsing of numbers (#1579)
578Simon Marlow <marlowsd@gmail.com>**20100913214733
579 Ignore-this: 3411bf3d2e98cfacb9e0afd11d79e722
580]
581[Add absentError. 
582simonpj@microsoft.com**20100914134639
583 Ignore-this: d0eef5a87e1def4cdbde92a55241c8c4
584 
585 This patch accompanies the HEAD patch:
586 
587   Tue Sep 14 12:38:27 BST 2010  simonpj@microsoft.com
588     * Make absent-arg wrappers work for unlifted types (fix Trac #4306)
589     
590     Previously we were simply passing arguments of unlifted
591     type to a wrapper, even if they were absent, which was
592     stupid.
593     
594     See Note [Absent error Id] in WwLib.
595]
596[Add missing import, fixes build on windows
597simonpj@microsoft.com**20100914122750
598 Ignore-this: 12ece15ef94982ddfbf5f9f7900619da
599]
600[Add a suitable Show instance for TextEncoding (#4273)
601Simon Marlow <marlowsd@gmail.com>**20100913154459
602 Ignore-this: 77f2235460895debd2827f34c42c3435
603]
604[don't fill a finalized handle with an error (see comment)
605Simon Marlow <marlowsd@gmail.com>**20100913153350
606 Ignore-this: c72cdb6898dffa88eca1d781171b2943
607]
608[deriving (Eq, Ord, Read, Show) for Newline and NewlineMode
609Simon Marlow <marlowsd@gmail.com>**20100913153031
610 Ignore-this: 9b9b29bfb7abf5550cfbfa7788f81bf
611]
612[fix warning on Windows
613Simon Marlow <marlowsd@gmail.com>**20100913111536
614 Ignore-this: dacc5448c452daad60ed37a1a5ed096e
615]
616[Put the state-token argument on fill, done, adjust on the RHS
617simonpj@microsoft.com**20100913101832
618 Ignore-this: d228b492de7d4635c026ed24cbc17e34
619 
620 This is so that the functions will inline when
621 applied to their normal (non-state-token) aguments.
622 
623 I forget why I did this, but it seems like the right thing anyway.
624]
625[avoid Foreign.unsafePerformIO
626Ross Paterson <ross@soi.city.ac.uk>**20100909125521
627 Ignore-this: b698101119ffd1bc6311cce0736f745d
628]
629[Remove debugging code accidentally left in
630Simon Marlow <marlowsd@gmail.com>**20100909113331
631 Ignore-this: 906a14176dd37030b8203782a687936b
632]
633[Fix Windows build; patches frmo ezyang
634Ian Lynagh <igloo@earth.li>**20100908123037
635 Ignore-this: 2f02986087edd7da8382221012c27cd0
636]
637[More accurate isatty test for MinGW.
638Edward Z. Yang <ezyang@mit.edu>**20100907154144
639 Ignore-this: 93bdc2b2a8e65a7c4c7d3906bdda01db
640]
641[Fix the build when HAVE_KQUEUE but not HAVE_KEVENT64
642Ian Lynagh <igloo@earth.li>**20100904223703]
643[Fix warnings
644benl@ouroborus.net**20100830044741
645 Ignore-this: 8397aaec7c36046c9ace403e65f32d32
646]
647[fix cache variable name used by FP_SEARCH_LIBS_PROTO
648Ross Paterson <ross@soi.city.ac.uk>**20100819204858
649 Ignore-this: b8113cb3c6f0e03c507297c99d3d82b7
650]
651[Add a missing castPtr (only shows up in -DDEBUG)
652simonpj@microsoft.com**20100815145127
653 Ignore-this: 30b9c42cd3ce7837bdabd254fe66078d
654]
655[Fixed a rounding error in threadDelay
656Johan Tibell <johan.tibell@gmail.com>**20100813124043
657 Ignore-this: 1cb77d0852233ffffb144b134064ee3c
658]
659[export allocaBytesAligned; make allocaArray use the correct alignment (#2917)
660Simon Marlow <marlowsd@gmail.com>**20100812105524
661 Ignore-this: deb6495f7b7b84deaf02b88927a5ba8c
662]
663[deprecate unGetChan and isEmptyChan (see #4154)
664Simon Marlow <marlowsd@gmail.com>**20100705125952
665 Ignore-this: b4e769959f131b2d0001eb7202bc1b92
666]
667[Add type signatures to cope with lack of local generalisation
668simonpj@microsoft.com**20100728124847
669 Ignore-this: d3af9a47c2821c6081bde05a135a92fb
670]
671[Add type signature in local where
672simonpj@microsoft.com**20100727151532
673 Ignore-this: 1c57063ad32d13e0d1ec8daf968bf055
674]
675[Integrated new I/O manager
676Simon Marlow <marlowsd@gmail.com>**20100810082248
677 Ignore-this: ed70a9066ac9b676a446fe99978fef7a
678 (patch originally by Johan Tibell <johan.tibell@gmail.com>, minor merging by me)
679]
680[Add mfilter to Control.Monad
681jon.fairbairn@cl.cam.ac.uk**20090917145616
682 Ignore-this: de4240b60684f3065b29378df3ea98f2
683 
684 Straightforward MonadPlus version of List.filter. I would
685 prefer to call it filter, but the current naming scheme for
686 Control.Monad implies mfilter.
687 
688]
689[move Monad and MonadFix instances for Either from mtl (proposal #4159)
690Ross Paterson <ross@soi.city.ac.uk>**20100729122449
691 Ignore-this: b0f8cd8643679948d1da43bd7c08c5aa
692 
693 The Monad and MonadFix instances for Either (formerly in the mtl
694 package) are moved to Control.Monad.Instances and Control.Monad.Fix
695 respectively.  The Monad instance is still an orphan, to retain Haskell
696 98 compatibility, but the MonadFix instance is together with its class.
697 The Error constraint is removed from both instances, and the default
698 definition of fail is used.
699]
700[Remove egregious ghc-ish from Foreign.Marshal
701Malcolm.Wallace@me.com**20100722075449]
702[add numSparks :: IO Int (#4167)
703Simon Marlow <marlowsd@gmail.com>**20100720153858
704 Ignore-this: 4543f57a7f137f8cae1c3efc5c023a9b
705]
706[add unsafeLocalState from Haskell 2010, and docs
707Simon Marlow <marlowsd@gmail.com>**20100720082819
708 Ignore-this: dcd79fb546ebe29ddff4df279ec2f38
709]
710[docs: mention that Foreign.unsafePerformIO is deprecated
711Simon Marlow <marlowsd@gmail.com>**20100720082804
712 Ignore-this: 4cfebb8f2a1cddc7d15e94e31b2befa4
713 We can't actually deprecate it without introducing a name clash
714 between Foreign.unsafePerformIO and System.IO.Unsafe.unsafePerformIO
715]
716[doc formatting fix
717Simon Marlow <marlowsd@gmail.com>**20100714151347
718 Ignore-this: 255edef607dcd290e198015240b5d125
719]
720[add module intro from Haskell 2010
721Simon Marlow <marlowsd@gmail.com>**20100714115853
722 Ignore-this: 59b5a07507a059ccccdff2dfb6490a27
723]
724[document exception-overriding behaviour in withFile
725Simon Marlow <marlowsd@gmail.com>**20100714104107
726 Ignore-this: f99e641ea2f46d872cb7420a62fa50dc
727]
728[doc: use "finalizer" consistently
729Simon Marlow <marlowsd@gmail.com>**20100714103649
730 Ignore-this: bdfea40f31dc5045fdbc6e12266dda93
731]
732[clarify meaning of bit
733Simon Marlow <marlowsd@gmail.com>**20100714103310
734 Ignore-this: 521b031f1e83ef34ca03d9aa9273df8a
735]
736[note shortcutting behaviour of any/all/elem
737Simon Marlow <marlowsd@gmail.com>**20100714103304
738 Ignore-this: 1605f362ba0712ad1cea1309636f3ea1
739]
740[add cast{C,U}CharToChar and castCharTo{C,U}Char, from Haskell 2010
741Simon Marlow <marlowsd@gmail.com>**20100713132515
742 Ignore-this: 9b1da827016c7b08668078b45964e9de
743]
744[mention that IntPtr and WordPtr can be marshalled to/from intptr_t and uintptr_t
745Simon Marlow <marlowsd@gmail.com>**20100713132403
746 Ignore-this: dcc112a72746ba117a84fa29e71b6800
747]
748[Partial fix for Trac #4136
749simonpj@microsoft.com**20100707135725
750 Ignore-this: 9548eeb3187d9779d4e5c858a0f35354
751 
752 In 'choose' (which is a library function designed specifically
753 to support derived instances of Read), we must match Symbol
754 as well as Ident, for nullary constructors that (wierdly) are
755 symbols.
756]
757[Fix typo in documentation
758Simon Hengel <simon.hengel@wiktory.org>**20100711141648
759 Ignore-this: c052dd8a681832ef598a323ad55eae3a
760]
761[Remove duplicated word in documentation
762Simon Hengel <simon.hengel@wiktory.org>**20100711072703
763 Ignore-this: fb3732dc57be55f14168792f923433
764]
765[Allow nhc98 to cope with recent changes to Control.Exception.
766Malcolm.Wallace@me.com**20100710170940]
767[ New asynchronous exception control API (base parts)
768Simon Marlow <marlowsd@gmail.com>**20100708152735
769 Ignore-this: 71a4811804f04259f1fe739f8863beaf
770   
771 As discussed on the libraries/haskell-cafe mailing lists
772   http://www.haskell.org/pipermail/libraries/2010-April/013420.html
773 
774 This is a replacement for block/unblock in the asychronous exceptions
775 API to fix a problem whereby a function could unblock asynchronous
776 exceptions even if called within a blocked context.
777 
778 The new terminology is "mask" rather than "block" (to avoid confusion
779 due to overloaded meanings of the latter).
780 
781 The following is the new API; the old API is deprecated but still
782 available for the time being.
783 
784 Control.Exception
785 -----------------
786 
787 mask  :: ((forall a. IO a -> IO a) -> IO b) -> IO b
788 mask_ :: IO a -> IO a
789 
790 uninterruptibleMask :: ((forall a. IO a -> IO a) -> IO b) -> IO b
791 uninterruptibleMask_ :: IO a -> IO
792 
793 getMaskingState :: IO MaskingState
794 
795 data MaskingState
796   = Unmasked
797   | MaskedInterruptible
798   | MaskedUninterruptible
799 
800 
801 Control.Concurrent
802 ------------------
803 
804 forkIOUnmasked :: IO () -> IO ThreadId
805]
806[Async-exception safety, and avoid space leaks
807Simon Marlow <marlowsd@gmail.com>**20100708145819
808 Ignore-this: dbfd0e61551e9e7b4fc1c6fe9b9a83de
809 Patch submitted by: Bas van Dijk <v.dijk.bas@gmail.com>
810 Modified slightly by me to remove non-functional changes.
811]
812[Async-exception safety, and avoid space leaks
813Simon Marlow <marlowsd@gmail.com>**20100708103154
814 Ignore-this: 190c3ac8f6633231624da8cf1316588
815 Patch submitted by: Bas van Dijk <v.dijk.bas@gmail.com>
816 Modified slightly by me to remove non-functional changes.
817]
818[Fix a few places where we forgot to close the text codecs (#4029)
819Simon Marlow <marlowsd@gmail.com>**20100702130210
820 Ignore-this: 2e81a4b4cb343181cef34b0f9e2ded47
821 Each time you invoke :load in GHCi it resets the CAFs, including
822 stdin/stdout/stderr, and each of these was allocating a new iconv_t.
823]
824[remove docs from Monad that belonged on the instance for MonadPlus IO
825Simon Marlow <marlowsd@gmail.com>**20100701154203
826 Ignore-this: 59df02542a7ac9421552a2155d848d27
827]
828[docs: unqualify Prelude.IO
829Simon Marlow <marlowsd@gmail.com>**20100701153817
830 Ignore-this: 73b0202876c827e7a5b4a5ce74e724c4
831]
832[unqualify Float and Double
833Simon Marlow <marlowsd@gmail.com>**20100701142727
834 Ignore-this: cbe89d31a00bf49996a33933324fca17
835]
836[extract information about Data.Time from docs for CTime
837Simon Marlow <marlowsd@gmail.com>**20100701142415
838 Ignore-this: c48c9609b8d36e43e033a7bea81d6f17
839]
840[doc typo
841Simon Marlow <marlowsd@gmail.com>**20100701142354
842 Ignore-this: 17a1fd703831c888975ff63fbfa3a9b2
843]
844[peekArray docs: remove mentions of "this version" and "previous version"
845Simon Marlow <marlowsd@gmail.com>**20100701125333
846 Ignore-this: 39a744874258670bd935ba9e38390939
847]
848[doc typo
849Simon Marlow <marlowsd@gmail.com>**20100701124154
850 Ignore-this: 98f5c286e38c2c34c96b05d5e8bc5ad9
851]
852[doc typo
853Simon Marlow <marlowsd@gmail.com>**20100701124128
854 Ignore-this: 10a4314ec7aed336701fc616fb574ebc
855]
856[doc typo
857Simon Marlow <marlowsd@gmail.com>**20100701123715
858 Ignore-this: c4909a7bf7163460ee5d32f58812041e
859]
860[doc wibble: Haskell 98 I/O Error -> 'IOError'
861Simon Marlow <marlowsd@gmail.com>**20100701123612
862 Ignore-this: bf373df781acbc575e4ffe3b7e6059ae
863]
864[doc typo
865Simon Marlow <marlowsd@gmail.com>**20100701123014
866 Ignore-this: 16aaccae48ef3101adf78ea5b0d5a8fd
867]
868[Haddock hacks to fix whitespace consistency
869Simon Marlow <marlowsd@gmail.com>**20100701121631
870 Ignore-this: 61c58dec52a31fd2d3f331a87d2f903f
871]
872[use '==' consistently rather than '->' in examples
873Simon Marlow <marlowsd@gmail.com>**20100701121616
874 Ignore-this: 472b0a05a85d34d9712186040e1636d9
875]
876[doc wibble: remove confusing mention of "Prelude"
877Simon Marlow <marlowsd@gmail.com>**20100701113308
878 Ignore-this: 232283d0096d01cd45e9b3c5c1e63a6d
879]
880[doc wibble: nonstrict -> non-strict
881Simon Marlow <marlowsd@gmail.com>**20100701113253
882 Ignore-this: 4264f0ab23a0835fc13c6e8601d6b743
883]
884[doc whitespace
885Simon Marlow <marlowsd@gmail.com>**20100701112242
886 Ignore-this: 777a95b1d1140c61d3ab95d5eb5809e7
887]
888[move the doc for 'Char' to its new home in ghc-prim:GHC.Types
889Simon Marlow <marlowsd@gmail.com>**20100629134150
890 Ignore-this: 7687db0077a29498349bfb4b44983985
891]
892[doc wibble
893Simon Marlow <marlowsd@gmail.com>**20100629122608
894 Ignore-this: 9a909e5d015332dc445bd9592e6e386d
895]
896[doc updates in System.IO
897Simon Marlow <marlowsd@gmail.com>**20100629122118
898 Ignore-this: 2257ec1cc4cdb8b7804cfa1f3cf32753
899]
900[doc wibble
901Simon Marlow <marlowsd@gmail.com>**20100625134858
902 Ignore-this: 64c50f29df6c389273b818918fe7033a
903]
904[doc wibbles
905Simon Marlow <marlowsd@gmail.com>**20100624154614
906 Ignore-this: b364aad53beea6e741fee2824459b6e8
907]
908[Fix haddock formatting
909Ian Lynagh <igloo@earth.li>**20100625222623]
910[Give nub's complexity in the haddock docs; fixes #4086
911Ian Lynagh <igloo@earth.li>**20100625222059]
912[correct docs for exitWith: only stdout/stderr are flushed, not all Handles
913Simon Marlow <marlowsd@gmail.com>**20100624130506
914 Ignore-this: 33a938dad8f0bc061572e2ec571cacc7
915]
916[fix docs for isSpace
917Simon Marlow <marlowsd@gmail.com>**20100624130444
918 Ignore-this: b35ff080dbb9833176f08e39dbd9ff6d
919]
920[make the hGetBuf/hPutBuf family work with non-FD Handles (#4144)
921Simon Marlow <marlowsd@gmail.com>**20100624130425
922 Ignore-this: 8200f0208a9b1b1cf4824f343d75819a
923]
924[nit in docs for accumArray
925Simon Marlow <marlowsd@gmail.com>**20100622121131
926 Ignore-this: c066a456c40907e767df10c3990f35ff
927]
928[add doc for the ExitCode type
929Simon Marlow <marlowsd@gmail.com>**20100622120930
930 Ignore-this: 99c34332be7f3565da844528b470054a
931]
932[remove extraneous info from docs for Array
933Simon Marlow <marlowsd@gmail.com>**20100622120921
934 Ignore-this: e2a3f5e84fc23eb7bae911f0680e805e
935]
936[add an INLINE to the list version of traverse, to enable fusion
937Simon Marlow <marlowsd@gmail.com>**20100608082531
938 Ignore-this: ea98cdc3308b406bb04c0f7a38c4424b
939]
940[Don't define the C localeEncoding on Windows
941Ian Lynagh <igloo@earth.li>**20100620202342
942 Ignore-this: c4992f6832a391b0cccc5a9b7d643976
943 (it causes warnings, and isn't used)
944]
945[add Applicative instance for Either (proposal #4095)
946Ross Paterson <ross@soi.city.ac.uk>**20100617225110
947 Ignore-this: 50262ec4700dc16efec5755be5b308c5
948 
949 This is not the only possible instance for Either, but this one is
950 compatible with the usual Monad instance.
951]
952[Use libcharset instead of nl_langinfo(CODESET) if possible.
953pho@cielonegro.org**20100519013112
954 Ignore-this: 4c1e278e022a3d276848afc1dcba4425
955 
956 nl_langinfo(CODESET) doesn't always return standardized variations of the encoding names. Use libcharset if possible, which is shipped together with GNU libiconv.
957]
958[Add a note about the interruptibility of throwTo.
959Simon Marlow <marlowsd@gmail.com>**20100615112720
960 Ignore-this: ae9fabe95310d7c364e95f7784793485
961]
962[docs: note that hGetBufNonBlocking isn't non-blocking on Windows
963Simon Marlow <marlowsd@gmail.com>**20100615112547
964 Ignore-this: 4f3e5213e142149affe08c5123d6efea
965]
966[don't depend on Prelude (#4122)
967Simon Marlow <marlowsd@gmail.com>**20100615105631
968 Ignore-this: 1a3fd49b103fe31cbb453f302c18767f
969]
970[Don't depend on Prelude (#4123)
971Simon Marlow <marlowsd@gmail.com>**20100615105401
972 Ignore-this: cc7616d85a1637bc7621b4f2bc181c0e
973]
974[bump version to 4.3.0.0, added instance MonadPlus STM
975Simon Marlow <marlowsd@gmail.com>**20100601144831
976 Ignore-this: 7c3cf7574499c4267372493f2636dc0
977]
978[Moved MonadPlus instance for STM from Control.Monad.STM to GHC.Conc to avoid an orphaned instance
979Bas van Dijk <v.dijk.bas@gmail.com>**20100516160651
980 Ignore-this: 651b852942b2fae2b93f996e39239b8f
981]
982[Added Applicative and Alternative instances for STM
983Bas van Dijk <v.dijk.bas@gmail.com>**20100516171756
984 Ignore-this: 567003bc4040bc97105cda4d31ebf04a
985]
986[expand Foldable instance for Array
987Ross Paterson <ross@soi.city.ac.uk>**20100602212154
988 Ignore-this: 9bd9e9666a9400431eb92352244fe7e7
989]
990[doc comment illustrating Foldable(foldr)
991Ross Paterson <ross@soi.city.ac.uk>**20100527150833
992 Ignore-this: 8f27d889379803f3ba86d6e928428f3c
993]
994[fix syntax in doc comments
995Ross Paterson <ross@soi.city.ac.uk>**20100527150757
996 Ignore-this: cb78da51d60ff6863dc395f1a892c103
997]
998[export hGetBufSome (#4046)
999Simon Marlow <marlowsd@gmail.com>**20100520093538
1000 Ignore-this: f467fad9722e27edfad6b3dd75290e7b
1001]
1002[hWaitForInput: don't try to read from the device (#4078)
1003Simon Marlow <marlowsd@gmail.com>**20100517133741
1004 Ignore-this: 55ec33b03397380259b91e4ca62207a6
1005 readTextDeviceNonBlocking is not non-blocking on Windows
1006]
1007[hSetEncoding: change the encoding on both read and write sides (#4066)
1008Simon Marlow <marlowsd@gmail.com>**20100514124628
1009 Ignore-this: 5b9e9caef06356d0296c584159709ebb
1010]
1011[Correct haddock formatting.
1012Adam Vogt <vogt.adam@gmail.com>**20100423022103
1013 Ignore-this: d2622339302048fda48080f7d5ce4a2f
1014]
1015[Fix for hGetBufSome
1016Simon Marlow <marlowsd@gmail.com>**20100505135637
1017 Ignore-this: 2019680f8fb223956cacfcf0d046f133
1018]
1019[improve the documentation for throwTo and killThread (#3884)
1020Simon Marlow <marlowsd@gmail.com>**20100505135600
1021 Ignore-this: ce881d96ddb729acb6ca09c779975e7d
1022]
1023[elaborate the docs for unsafePerformIO a bit
1024Simon Marlow <marlowsd@gmail.com>**20100505101249
1025 Ignore-this: 1cec3f67560b672c64c5a0dcf9a79eb7
1026]
1027[add Typeable instance
1028Simon Marlow <marlowsd@gmail.com>**20100504152815
1029 Ignore-this: 6d9cf9d62f0ef17fa459bf213a04098
1030]
1031[Add hGetBufSome, like hGetBuf but can return short reads
1032Simon Marlow <marlowsd@gmail.com>**20100504152759
1033 Ignore-this: 195c905b43f8d9505029364e2c5b18e
1034]
1035[Add swap (#3298)
1036Simon Marlow <marlowsd@gmail.com>**20100504095339
1037 Ignore-this: 13b007dc4594ce252997ec6fa0bbd976
1038]
1039[inline allocaArray0, to fix withCString benchmark
1040Simon Marlow <marlowsd@gmail.com>**20100423124729
1041 Ignore-this: 35c96816acc2f3aaf9dd29f7995fa6f0
1042]
1043[raise asynchronous exceptions asynchronously (#3997)
1044Simon Marlow <marlowsd@gmail.com>**20100421094932
1045 Ignore-this: 6d987d93d382c0f69c68c326312abd6b
1046]
1047[add NOINLINE pragmas for stdin/stdout/stderr
1048Simon Marlow <marlowsd@gmail.com>**20100421082041
1049 Ignore-this: 3fc130268ec786f28d945858d6690986
1050]
1051[INLINE alloca and malloc
1052Simon Marlow <marlowsd@gmail.com>**20100419135333
1053 Ignore-this: b218bd611f18721b1505a8c0b9e6a16a
1054 See discussion on glasgow-haskell-users:
1055   http://www.haskell.org/pipermail/glasgow-haskell-users/2010-April/018740.html
1056]
1057[Move comment closer to the offending line
1058Matthias Kilian <kili@outback.escape.de>**20100419155421
1059 Ignore-this: b34a1d7affd66f67d210df2377b585d9
1060]
1061[Ignore the return code of c_fcntl_write again
1062Matthias Kilian <kili@outback.escape.de>**20100415140452
1063 Ignore-this: 266d8ba02cc3cb79c85629b3528261c9
1064 
1065 The return code has been ignored in the past on purpose, because
1066 O_NONBLOCK will fail on BSDs for some special files. This fixes the
1067 problem mentioned in
1068 http://www.haskell.org/pipermail/glasgow-haskell-users/2010-April/018698.html
1069 
1070]
1071[Fix bitrot in IO debugging code
1072Ian Lynagh <igloo@earth.li>**20100413134339
1073 Also switched to using Haskell Bools (rather than CPP) to en/disable it,
1074 so it shouldn't break again in the future.
1075]
1076[Tiny code tidy-up
1077Ian Lynagh <igloo@earth.li>**20100413011147]
1078[remove old/wrong comment
1079Simon Marlow <marlowsd@gmail.com>**20100325161403
1080 Ignore-this: e6e377d44af48c4162d17d55bdf3f821
1081]
1082[withThread: block asynchronous exceptions before installing exception handler.
1083Bas van Dijk <v.dijk.bas@gmail.com>**20100329131624
1084 Ignore-this: be5aeb47dbd73807b5f94df11afbb81c
1085 Note that I don't unblock the given io computation. Because AFAICS
1086 withThread is only called with 'waitFd' which only performs an FFI
1087 call which can't receive asynchronous exceptions anyway.
1088]
1089[runInUnboundThread: block asynchronous exceptions before installing exception handler
1090Bas van Dijk <v.dijk.bas@gmail.com>**20100329131549
1091 Ignore-this: a00c5e32fe3981ff87bedd367a69051e
1092]
1093[fix the deprecation message (GHC.IO.Handle.Base -> GHC.IO.Handle)
1094Simon Marlow <marlowsd@gmail.com>**20100330121137
1095 Ignore-this: 4ca8500a01ac93454507aa8f9dd001f9
1096]
1097[Make SampleVar an abstract newtype
1098Bas van Dijk <v.dijk.bas@gmail.com>**20100318200349
1099 Ignore-this: 27939e2a064b75e71cb146117346be30
1100]
1101[Fix bugs regarding asynchronous exceptions and laziness in Control.Concurrent.SampleVar
1102Bas van Dijk <v.dijk.bas@gmail.com>**20100318200104
1103 Ignore-this: 7376b2a3afe155daf233a8f1ddc0a7a
1104  - Block asynchronous exceptions at the right places
1105  - Force thunks before putting them in a MVar
1106]
1107[Write the thunk 'next' to the MVar
1108Bas van Dijk <v.dijk.bas@gmail.com>**20100319125951
1109 Ignore-this: dd25636cf220131385ff2fd32493d456
1110]
1111[change to use STM, fixing 4 things
1112Simon Marlow <marlowsd@gmail.com>**20100318104436
1113 Ignore-this: 551d30280a7941c08f5c3b14576bdd70
1114   1. there was no async exception protection
1115   2. there was a space leak (now new value is strict)
1116   3. using atomicModifyIORef would be slightly quicker, but can
1117      suffer from adverse scheduling issues (see #3838)
1118   4. also, the STM version is faster.
1119]
1120[Tweak docs
1121Ian Lynagh <igloo@earth.li>**20100312214129]
1122[Fixed dead links in documentation of forkIO
1123Bas van Dijk <v.dijk.bas@gmail.com>**20100308222415
1124 Ignore-this: 7deb8fd064c867fbede2a6b2e9da4f15
1125]
1126[Documentation fixes in Control.Exception
1127Bas van Dijk <v.dijk.bas@gmail.com>**20100301220442
1128 Ignore-this: 761fcba401cbd1f47276ddfc9b5b80f2
1129]
1130[Plug two race conditions that could lead to deadlocks in the IO manager
1131Simon Marlow <marlowsd@gmail.com>**20100225120255
1132 Ignore-this: e6983d6b953104d370278ab3e4617e8b
1133]
1134[FIX #3866: improve documentation of Data.Data.Constr
1135jpm@cs.uu.nl**20100224125506
1136 Ignore-this: 3818c5d8fee012a3cf322fb455b6e5dc
1137]
1138[UNDO: Handle NaN, -Infinity and Infinity in the toRational for Float/Double (#3676)
1139Simon Marlow <marlowsd@gmail.com>**20100223101603
1140 Ignore-this: 78becb2d39b3cd9a1a473a5811ca7d92
1141]
1142[Put the complexity in the length docs. Fixes trac #3680
1143Ian Lynagh <igloo@earth.li>**20100221191425]
1144[nhc98 should build Data.Functor.
1145Malcolm.Wallace@cs.york.ac.uk**20100221163218]
1146[Update the exitWith docs
1147Ian Lynagh <igloo@earth.li>**20100213140004
1148 Error pointed out by Volker Wysk <vw@volker-wysk.de>
1149]
1150[Handle NaN, -Infinity and Infinity in the toRational for Float/Double (#3676)
1151Simon Marlow <marlowsd@gmail.com>**20100211101955
1152 Ignore-this: 261415363303efca265e80290eac5f28
1153]
1154[For nhc98, import unsafeInterleaveIO rather than defining it here.
1155Malcolm.Wallace@cs.york.ac.uk**20100204171021]
1156[Stifle warning about unused return value
1157benl@cse.unsw.edu.au**20100203025537]
1158[fix #3832: use the locale encoding in openTempFile
1159Simon Marlow <marlowsd@gmail.com>**20100120211830
1160 Ignore-this: df4f778cc5fefb32290c798db722632c
1161 Also while I was here fix an XXX: the Handle contained an
1162 uninformative string like <fd: 4> for error messages rather than the
1163 real file path.
1164]
1165[Fix the build: export void, so it doesn't give an unused binding warning
1166Ian Lynagh <igloo@earth.li>**20100116174451]
1167[hIsEOF: don't do any decoding (#3808)
1168Simon Marlow <marlowsd@gmail.com>**20100112230317
1169 Ignore-this: 6a384dd2d547ffe3ad3762920e5c1671
1170]
1171[Control.Monad: +void :: f a -> f ()
1172gwern0@gmail.com**20100108214455
1173 Ignore-this: 4dc07452315f2d1b4941903ff42fc45f
1174 See http://hackage.haskell.org/trac/ghc/ticket/3292
1175 Turns m a -> m (). Lets one call functions for their side-effects without
1176 having to get rid of their return values with '>> return ()'. Very useful
1177 in many contexts (parsing, IO etc.); particularly good for 'forkIO' and 'forM_',
1178 as they demand return types of 'IO ()' though most interesting IO functions
1179 return non-().
1180]
1181[Replace the implementation of mergesort with a 2x faster one.
1182Malcolm.Wallace@cs.york.ac.uk**20091224152014
1183 See ticket http://hackage.haskell.org/trac/ghc/ticket/2143.
1184]
1185[Restore previous Data.Typeable.typeOf*Default implementations for non-ghc.
1186Malcolm.Wallace@cs.york.ac.uk**20091223142625
1187 Not all compilers have ScopedTypeVariables.
1188]
1189[Add comments about double bounds-checking, and fast paths for rectangular arrays
1190simonpj@microsoft.com**20091218165655
1191 Ignore-this: ea0849419dc00927aba4bd410b1cc58d
1192 
1193 See Note [Double bounds-checking of index values] for the details.
1194 
1195 The fast paths omit the doubled checks for cases we know about
1196]
1197[Fix Trac #3245: memoising typeOf
1198simonpj@microsoft.com**20091218155117
1199 Ignore-this: 5a178a7f2222293c5ee0c3c43bd1b625
1200 
1201 The performance bug in #3245 was caused by computing the typeRep
1202 once for each call of typeOf, rather than once for each dictionary
1203 contruction.  (Computing TypeReps is reasonably expensive, because
1204 of the hash-consing machinery.)
1205 
1206 This is readily fixed by putting the TypeRep construction outside
1207 the lambda.  (Arguably GHC might have worked that out itself,
1208 but it involves floating something between a type lambda and a
1209 value lambda, which GHC doesn't currently do. If it happens a lot
1210 we could fix that.)
1211]
1212[Mark 'index' as INLINE in GHC.Arr
1213simonpj@microsoft.com**20091216170441
1214 Ignore-this: a4df9d8acf496c8e0e9ce5a520509a2a
1215 
1216 This makes indexing much faster. See Trac #1216
1217]
1218[Comment the remaining orphan instance modules
1219Ian Lynagh <igloo@earth.li>**20091206125021]
1220[De-orphan Eq/Ord Float/Double
1221Ian Lynagh <igloo@earth.li>**20091205181238]
1222[Add comments to "OPTIONS_GHC -fno-warn-orphans" pragmas
1223Ian Lynagh <igloo@earth.li>**20091205165854]
1224[Data.Either.partitionEithers was insufficiently lazy.
1225Malcolm.Wallace@cs.york.ac.uk**20091202032807
1226 Ignore-this: 77e1b3288f66608c71458d8a91bcbe12
1227 Spotted by Daniel Fischer.
1228]
1229[fix the docs regarding finalizer guarantees
1230Simon Marlow <marlowsd@gmail.com>**20091130144409
1231 Ignore-this: d1ab9532c74a002b8075ff60febcbe2d
1232]
1233[x86_64 requires more stack
1234Malcolm.Wallace@cs.york.ac.uk**20091201033745]
1235[check for size < 0 in mallocForeignPtrBytes and friends (#3514)
1236Simon Marlow <marlowsd@gmail.com>**20091125143822
1237 Ignore-this: 91077d01da2bbe1dfed5155e8b40da9
1238]
1239[hGetContents: close the handle properly on error
1240Simon Marlow <marlowsd@gmail.com>**20091125123435
1241 Ignore-this: bc37ff678acc6e547dc390285e056eb9
1242 
1243 When hGetContents caught an error it was closing the handle and then
1244 throwing the exception, without updating the handle with the new
1245 closed state.  This lead to a double-closed, which was the cause of
1246 
1247 *** glibc detected *** ./Setup: double free or corruption
1248 
1249 when iconv_close was called twice on the decoder.
1250 
1251 See http://hackage.haskell.org/trac/hackage/ticket/609
1252]
1253[Fix arities of mapFB and zipFB
1254Roman Leshchinskiy <rl@cse.unsw.edu.au>**20091126232219
1255 Ignore-this: c4e14cd0a92622549c86e67237a40865
1256]
1257[Remove an unnecessary -fno-warn-orphans flag
1258Ian Lynagh <igloo@earth.li>**20091126123404]
1259[Tweak layout to work with alternative layout rule
1260Ian Lynagh <igloo@earth.li>**20091125232349]
1261[Tweak layout to be accepted by the alternative layout rul
1262Ian Lynagh <igloo@earth.li>**20091125194147]
1263[Make sure zipWithFB has arity 2
1264Roman Leshchinskiy <rl@cse.unsw.edu.au>**20091125010003
1265 Ignore-this: 4cf60c55666f03d22a9f5a6e07f52d36
1266 
1267 It gets 2 arguments in the "zipWith" rule but its arity was higher and the new
1268 inliner didn't inline it sometimes, for instance here:
1269 
1270 mpp ::  [Double] -> [Double] -> [Double] -> [Double] -> [Double]
1271 mpp as bs cs ds = zipWith (*) (zipWith (+) as bs) (zipWith (+) cs ds)
1272 
1273 This was a regression vs. 6.10.
1274]
1275[Remove an old comment
1276Ian Lynagh <igloo@earth.li>**20091124134647]
1277[De-orphan the Eq/Ord Integer instances
1278Ian Lynagh <igloo@earth.li>**20091124133639]
1279[Whitespace only
1280Ian Lynagh <igloo@earth.li>**20091124133421]
1281[Derive some more instances, rather than writing them by hand
1282Ian Lynagh <igloo@earth.li>**20091124011747]
1283[We can now derive Ord ()
1284Ian Lynagh <igloo@earth.li>**20091124011416]
1285[De-orphan tuple Eq/Ord instances
1286Ian Lynagh <igloo@earth.li>**20091123233343]
1287[Control.Exception.Base no longer has any orphans
1288Ian Lynagh <igloo@earth.li>**20091123224905]
1289[De-orphan the MonadFix ST instance for GHC
1290Ian Lynagh <igloo@earth.li>**20091123223544]
1291[Rearrange the contents of Control.Monad.ST; no functionality changes
1292Ian Lynagh <igloo@earth.li>**20091123222702]
1293[De-orphan the Eq/Ord [a] instances
1294Ian Lynagh <igloo@earth.li>**20091123215635]
1295[De-orphan the Eq/Ord Char instances
1296Ian Lynagh <igloo@earth.li>**20091123202253]
1297[De-orphan the Eq/Ord Bool instances
1298Ian Lynagh <igloo@earth.li>**20091123201817]
1299[Move Eq/Ord Ordering instances to de-orphan them
1300Ian Lynagh <igloo@earth.li>**20091123194310]
1301[Remove ffi warnings for nhc98.
1302Malcolm.Wallace@cs.york.ac.uk**20091123063743]
1303[Second attempt to fix #1185 (forkProcess and -threaded)
1304Simon Marlow <marlowsd@gmail.com>**20091111151915
1305 Ignore-this: fa5f5d5e4e080d4b612a37244f937f9c
1306 
1307 Patch 2/2: first patch is to ghc
1308 
1309 This time without dynamic linker hacks, instead I've expanded the
1310 existing rts/Globals.c to cache more CAFs, specifically those in
1311 GHC.Conc.  We were already using this trick for signal handlers, I
1312 should have realised before.
1313 
1314 It's still quite unsavoury, but we can do away with rts/Globals.c in
1315 the future when we switch to a dynamically-linked GHCi.
1316]
1317[Rollback #1185 fix
1318Simon Marlow <marlowsd@gmail.com>**20091106140629
1319 Ignore-this: cd5667e8474e37e01ba26a1984274811
1320 
1321 rolling back:
1322 
1323 Tue Nov  3 16:05:40 GMT 2009  Simon Marlow <marlowsd@gmail.com>
1324   * Fix #1185: restart the IO manager after fork()
1325   
1326   This is the libraries/base part of the patch; there is a corresponding
1327   patch to GHC itself.
1328   
1329   The main change is that we now keep track of the IO manager's ThreadId
1330   in a top-level MVar, and ensureIOManagerIsRunning checks whether a
1331   previous IO manager thread is alive before starting one.  In the child
1332   of fork(), we can hence call ensureIOManagerIsRunning to restart the
1333   IO manager.
1334 
1335     M ./GHC/Conc.lhs -46 +44
1336 
1337 Wed Nov  4 17:49:45 GMT 2009  Ian Lynagh <igloo@earth.li>
1338   * Fix the build on Windows
1339 
1340     M ./GHC/Conc.lhs -6 +4
1341]
1342[Fix the build on Windows
1343Ian Lynagh <igloo@earth.li>**20091104174945]
1344[Fix #1185: restart the IO manager after fork()
1345Simon Marlow <marlowsd@gmail.com>**20091103160540
1346 Ignore-this: 6dc05464f1500104554637f4759738cc
1347 
1348 This is the libraries/base part of the patch; there is a corresponding
1349 patch to GHC itself.
1350 
1351 The main change is that we now keep track of the IO manager's ThreadId
1352 in a top-level MVar, and ensureIOManagerIsRunning checks whether a
1353 previous IO manager thread is alive before starting one.  In the child
1354 of fork(), we can hence call ensureIOManagerIsRunning to restart the
1355 IO manager.
1356]
1357[improve the documentation for throwErrnoIfRetry
1358Simon Marlow <marlowsd@gmail.com>**20091016112404
1359 Ignore-this: b77275cacf730e15757946027168f63e
1360]
1361[Don't inline unpackFoldrCString ever
1362simonpj@microsoft.com**20091029135350
1363 Ignore-this: 85d672649b1b776efc7e97500b05d4f9
1364]
1365[Inline more default methods
1366simonpj@microsoft.com**20091029135330
1367 Ignore-this: 289c44b0afd6d5631c2a4e0664275ca9
1368 
1369 Namely Monad: (>>)
1370        Eq:    (==), (/=)
1371        Num:   (-), negate
1372        Real:  quot, rem, div, mod, recip, (/), truncate
1373        Float: (**), logBase, sqrt, tan, tanh
1374]
1375[Move error messages out of INLINEd default methods
1376simonpj@microsoft.com**20091029135118
1377 Ignore-this: 9e35dc947f94827a3529eb53a41575fd
1378 
1379 No need to duplicate the error generation!
1380]
1381[Exploit now-working default-method INLINE pragmas for Data.Bits
1382simonpj@microsoft.com**20091029135041
1383 Ignore-this: 8adf225f31ca7a3181ee087e9e4fe535
1384 
1385 * Add INLINE pragmas to default methods for class Bits
1386 
1387 * Remove redundant instance methods elsewhere, now that
1388   the default method will do the job
1389]
1390[Tidy up and comment imports
1391simonpj@microsoft.com**20091029134414
1392 Ignore-this: bf2be31035de975d8995e988933cc940
1393]
1394[Inline foldr and (.) when applied to two arguments not three
1395simonpj@microsoft.com**20091029134335
1396 Ignore-this: fccb6f3e90e15f44cb465814be85ede2
1397 
1398 The new INLINE story is (by design) arity-sensitive, so we must
1399 put fewer argument on the LHS for foldr and (.)
1400]
1401[dirUtils.c no longer available
1402Malcolm.Wallace@cs.york.ac.uk**20091013093833]
1403[Make hGetContents throw an exception if an error is encountered
1404Simon Marlow <marlowsd@gmail.com>**20091012152955
1405 Ignore-this: 9f7a7176193eab25c9daaacd9261f2de
1406 
1407 Strictly speaking this breaks Haskell 98 compatibility, which requires
1408 hGetContents to just end the lazy stream silently if an error is
1409 encountered.  However, for a few reasons we think it will make
1410 everyone's life a bit easier if we make this change
1411 
1412  1. Errors will be a lot more common in GHC 6.12.1, in the form
1413     of Unicode decoding errors.
1414 
1415  2. When Haskell 98 was designed, we didn't know how to throw
1416     exceptions from inside lazy I/O, but now we do.
1417 
1418  3. If anyone is actually relying on the previous behaviour, their
1419     code is arguably broken.
1420]
1421[Re-instate System.Console.Getopt for nhc98 builds.
1422Malcolm.Wallace@cs.york.ac.uk**20091013092843
1423 Although it was split out of base a while back, that change was
1424 reverted for ghc soon afterwards, but nhc98 never noticed.
1425]
1426[Roll back "Another instance of nhc98's strange import semantics."
1427Ian Lynagh <igloo@earth.li>**20091009185618
1428 Fri Oct  9 14:50:51 BST 2009  Malcolm.Wallace@cs.york.ac.uk
1429 GHC (correctly) warns about the unused import, which breaks the validate
1430 build.
1431]
1432[Roll back "Cope with nhc98's (occasionally-strange) import semantics"
1433Ian Lynagh <igloo@earth.li>**20091009184704
1434 Fri Oct  9 14:43:51 BST 2009  Malcolm.Wallace@cs.york.ac.uk
1435 GHC (correctly) warns about the unused import, which breaks the validate
1436 build.
1437]
1438[It seems that nhc98 needs defaulting in Data.Fixed.
1439Malcolm.Wallace@cs.york.ac.uk**20091009135242]
1440[Another instance of nhc98's strange import semantics.
1441Malcolm.Wallace@cs.york.ac.uk**20091009135051]
1442[Make Data.Functor compatible with non-GHC compilers.
1443Malcolm.Wallace@cs.york.ac.uk**20091009134821]
1444[Cope with nhc98's (occasionally-strange) import semantics.
1445Malcolm.Wallace@cs.york.ac.uk**20091009134351]
1446[Fix gratuitous breakage of nhc98 in System.IO.
1447Malcolm.Wallace@cs.york.ac.uk**20091009134001]
1448[Fix gratuitous breakage of nhc98 in Control.Exception.Base.
1449Malcolm.Wallace@cs.york.ac.uk**20091009133615]
1450[Fix gratuitous breakage of non-GHC in Data.Fixed.
1451Malcolm.Wallace@cs.york.ac.uk**20091009133330]
1452[Fix gratuitous breakage for non-GHC in Data.Bits.
1453Malcolm.Wallace@cs.york.ac.uk**20091009133257]
1454[Use UTF-32LE instead of UTF32LE
1455Simon Marlow <marlowsd@gmail.com>**20091006100207
1456 Ignore-this: 7f881e36543d250ef848c9f60d67655a
1457 The latter is not recognised by some iconv implementations.
1458]
1459[Strip any Byte Order Mark (BOM) from the front of decoded streams.
1460Ben.Lippmeier@anu.edu.au*-20090930084229
1461 Ignore-this: d0d0c3ae87b31d71ef1627c8e1786445
1462 When decoding to UTF-32, Solaris iconv inserts a BOM at the front
1463 of the stream, but Linux iconv doesn't.
1464]
1465[use UTF32BE/UTF32LE instead of UCS-4/UCS-4LE
1466Simon Marlow <marlowsd@gmail.com>**20091005101554
1467 Ignore-this: 2aef5e9bec421e714953b7aa1bdfc1b3
1468]
1469[Strip any Byte Order Mark (BOM) from the front of decoded streams.
1470Ben.Lippmeier@anu.edu.au**20090930084229
1471 Ignore-this: d0d0c3ae87b31d71ef1627c8e1786445
1472 When decoding to UTF-32, Solaris iconv inserts a BOM at the front
1473 of the stream, but Linux iconv doesn't.
1474]
1475[Add traceEvent :: String -> IO ()
1476Simon Marlow <marlowsd@gmail.com>**20090925141257
1477 Ignore-this: 8b1888bbf9682ffba13f815b6000e4b1
1478 For emitting an event via the RTS tracing framework
1479]
1480[Fix the error message when flushing the read buffer of a non-seekable Handle
1481Simon Marlow <marlowsd@gmail.com>**20090923090536
1482 Ignore-this: 4342026df93759d99480f4e13f80a492
1483]
1484[Fix #3534: No need to flush the byte buffer when setting binary mode
1485Simon Marlow <marlowsd@gmail.com>**20090923090445
1486 Ignore-this: 625817ed7ae2c12291eb993a99dc640a
1487]
1488[Use let !y = x in .. x .. instead of seq in $! and evaluate (#2273)
1489Simon Marlow <marlowsd@gmail.com>**20090916140454]
1490[make some Applicative functions into methods, and split off Data.Functor (proposal #3335)
1491Ross Paterson <ross@soi.city.ac.uk>**20090915173109
1492 Ignore-this: a0cff4de6dfdbcbd56a66101bc4855a9
1493 
1494 The following functions
1495 
1496     (<$) :: Functor f => a -> f b -> f a
1497     (*>) :: Applicative f => f a -> f b -> f b
1498     (<*) :: Applicative f => f a -> f b -> f a
1499     some :: Alternative f => f a -> f [a]
1500     many :: Alternative f => f a -> f [a]
1501 
1502 are moved into the corresponding classes, with the existing implementations
1503 as default definitions.  This gives people creating instances the option of
1504 defining specialized implementations of these functions, though they should
1505 be equivalent to the default definitions.
1506 
1507 Although (<$) is now a method of the Functor class, it is hidden in the
1508 re-export by the Prelude, Control.Monad and Monad.  The new module
1509 Data.Functor exposes the full class, plus the function (<$>).  These are
1510 also re-exported by Control.Applicative.
1511]
1512[On Windows, use the console code page for text file encoding/decoding.
1513Judah Jacobson <judah.jacobson@gmail.com>**20090913022126
1514 Ignore-this: 86c2f2db8ef92b751599795d3195187b
1515 
1516 We keep all of the code page tables in the module
1517 GHC.IO.Encoding.CodePage.Table.  That file was generated automatically
1518 by running codepages/MakeTable.hs; more details are in the comments at the
1519 start of that script.
1520 
1521 Storing the lookup tables adds about 40KB to each statically linked executable;
1522 this only increases the size of a "hello world" program by about 7%.
1523 
1524 Currently we do not support double-byte encodings (Chinese/Japanese/Korean), since
1525 including those codepages would increase the table size to 400KB.  It will be
1526 straightforward to implement them once the work on library DLLs is finished.
1527]
1528[Fix "init" docs: the input list need not be finite. Fixes trac #3465
1529Ian Lynagh <igloo@earth.li>**20090911210437]
1530[Bump base version to 4.2.0.0
1531Ian Lynagh <igloo@earth.li>**20090911153913]
1532[Address #3310
1533Simon Marlow <marlowsd@gmail.com>**20090830152850
1534 Ignore-this: 40c7f7c171ee299a83092fd360a952b7
1535 
1536  - Rename BlockedOnDeadMVar   -> BlockedIndefinitelyOnMVar
1537  - Rename BlockedIndefinitely -> BlockedIndefinitelyOnSTM
1538  - instance Show BlockedIndefinitelyOnMVar is now
1539      "blocked indefinitely in an MVar operation"
1540  - instance Show BlockedIndefinitelyOnSTM is now
1541      "blocked indefinitely in an STM transaction"
1542 
1543 clients using Control.OldException will be unaffected (the new
1544 exceptions are mapped to the old names).  However, for base4-compat
1545 we'll need to make a version of catch/try that does a similar
1546 mapping.
1547]
1548[Fix unicode conversion for MSB architectures
1549Ben.Lippmeier@anu.edu.au**20090830130028
1550 This fixes the SPARC/Solaris build.
1551]
1552[Fix #3441: detect errors in partial sequences
1553Simon Marlow <marlowsd@gmail.com>**20090830075909
1554 Ignore-this: d12a75d95e0cae5eb1555266810ec281
1555]
1556[Fix hWaitForInput
1557Simon Marlow <marlowsd@gmail.com>**20090827152116
1558 Ignore-this: 2550e911f1a4d4357a5aa8d1764238ce
1559 It was erroneously waiting when there were bytes to decode waiting in
1560 the byte buffer.
1561]
1562[fix debugging code
1563Simon Marlow <marlowsd@gmail.com>**20090827150628
1564 Ignore-this: e1c82fdc19a22e247cd69ff6fa11921d
1565]
1566[Allow for configurable iconv include and library locations.
1567Matthias Kilian <kili@outback.escape.de>**20090826154406
1568 Ignore-this: be95fab611a5534cf184b508964ed498
1569 This should help to fix the build on OpenBSD.
1570]
1571[typo in comment
1572Simon Marlow <marlowsd@gmail.com>**20090826085252
1573 Ignore-this: 1903ee0f354157a6ed3871c100f6b1b9
1574]
1575[un-hide some modules from the Haddock docs
1576Simon Marlow <marlowsd@gmail.com>**20090825152457
1577 Ignore-this: dce6606f93cf977fb24ebe99082dfa62
1578]
1579[Apply fix for #1548, from squadette@gmail.com
1580Simon Marlow <marlowsd@gmail.com>**20090819120700
1581 Ignore-this: 31c237c46a6445f588ed4b8c51bb6231
1582]
1583[improvements to Data.Fixed: instances for Typeable and Data, more predefined types
1584Ashley Yakeley <ashley@semantic.org>**20090812055058
1585 Ignore-this: feeece36d5632f02a05d137d2a39ab78
1586]
1587[Fix "Cabal check" warnings
1588Ian Lynagh <igloo@earth.li>**20090811215856]
1589[Add a GHC.Constants module; fixes trac #3094
1590Ian Lynagh <igloo@earth.li>**20090809183252]
1591[Apply proposal #3393
1592Ian Lynagh <igloo@earth.li>**20090809134717
1593 Add openTempFileWithDefaultPermissions and
1594 openBinaryTempFileWithDefaultPermissions.
1595]
1596[Add some more C wrappers; patch from Krister Walfridsson
1597Ian Lynagh <igloo@earth.li>**20090807200631
1598 Fixes 21 testsuite errors on NetBSD 5.99.
1599]
1600[Fixing configure for autoconf 2.64
1601Alexander Dunlap <alexander.dunlap@gmail.com>**20090805060748
1602 Ignore-this: 992ab91ae3d68c12dbb265776e33e243
1603]
1604[add INLINE toList
1605Ross Paterson <ross@soi.city.ac.uk>**20090806142853
1606 Ignore-this: aba16aabb17d5dca44f15d188945680e
1607 
1608 In anticipation of the fixing of #2353.
1609]
1610[fix a copyright
1611Simon Marlow <marlowsd@gmail.com>**20090805134045
1612 Ignore-this: b0ffbdd38fbba121e8bcba37c4082a60
1613]
1614[Tweak the BufferedIO class to enable a memory-mapped file implementation
1615Simon Marlow <marlowsd@gmail.com>**20090805134036
1616 Ignore-this: ec67d7a0a6d977438deaa342503f77e0
1617 We have to eliminate the assumption that an empty write buffer can be
1618 constructed by setting the buffer pointers to zero: this isn't
1619 necessarily the case when the buffer corresponds to a memory-mapped
1620 file, or other in-memory device implementation.
1621]
1622[Deprecate Control.OldException
1623Ian Lynagh <igloo@earth.li>**20090804143910]
1624[Windows build fix, following RTS tidyup
1625Simon Marlow <marlowsd@gmail.com>**20090803131121
1626 Ignore-this: ce862fb91c2b234211a8757f98690778
1627]
1628[Updates to follow the RTS tidyup
1629Simon Marlow <marlowsd@gmail.com>**20090801220743
1630 Ignore-this: 6e92412df93a66c12d75344053d5634
1631 C functions like isDoubleNaN moved here (primFloat.c)
1632]
1633[Add integer-simple as a build option
1634Ian Lynagh <igloo@earth.li>**20090722013151]
1635[Use shift[LR]Integer in the Bits Integer instance
1636Ian Lynagh <igloo@earth.li>**20090721222440]
1637[depend directly on integer-gmp, rather than indirecting through integer
1638Ian Lynagh <igloo@earth.li>**20090721185228]
1639[Move the instances of Functor and Monad IO to GHC.Base, to avoid orphans
1640Simon Marlow <marlowsd@gmail.com>**20090722102130
1641 Ignore-this: a7d85ac0025d559674249de0108dbcf4
1642]
1643[move "instance Exception Dynamic" so it isn't an orphan
1644Simon Marlow <marlowsd@gmail.com>**20090721093854
1645 Ignore-this: 5ede91ecfec2112c91b699d4de87cd02
1646]
1647[Improve the index checking for array accesses; fixes #2120 #2669
1648Ian Lynagh <igloo@earth.li>**20090719153228
1649 As well as checking that offset we are reading is actually inside the
1650 array, we now also check that it is "in range" as defined by the Ix
1651 instance. This fixes confusing behaviour (#2120) and improves some error
1652 messages (#2669).
1653]
1654[Make chr say what its argument was, if it's a bad argument
1655Ian Lynagh <igloo@earth.li>**20090718151049]
1656[remove unused warning
1657Simon Marlow <marlowsd@gmail.com>**20090715124416
1658 Ignore-this: 31f613654089d0f4a44363946087b41e
1659]
1660[warning fix: -fno-implicit-prelude -> -XNoImplicitPrelude
1661Simon Marlow <marlowsd@gmail.com>**20090715122839
1662 Ignore-this: dc8957249731d5bcb71c01899e5adf2b
1663]
1664[Add hGetEncoding :: Handle -> IO (Maybe TextEncoding)
1665Simon Marlow <marlowsd@gmail.com>**20090715122519
1666 Ignore-this: 14c3eff996db062da1199739781e4708
1667 as suggested during the discussion on the libraries list
1668]
1669[Add more documentation to mkTextEncoding
1670Simon Marlow <marlowsd@gmail.com>**20090715122414
1671 Ignore-this: 97253b2624267df3a246a18121e8ea81
1672 noting that "//IGNORE" and "//TRANSLIT" suffixes can be used with GNU
1673 iconv.
1674]
1675[Add the utf8_bom codec
1676Simon Marlow <marlowsd@gmail.com>**20090715122257
1677 Ignore-this: 1c9396cd805201fe873a39382ced79c7
1678 as suggested during the discussion on the libraries list.
1679]
1680[Export Unicode and newline functionality from System.IO; update Haddock docs
1681Simon Marlow <marlowsd@gmail.com>**20090713113104
1682 Ignore-this: c3f017a555335aa55d106253393f72e2
1683]
1684[add a comment about the non-workingness of CHARBUF_UTF16
1685Simon Marlow <marlowsd@gmail.com>**20090707124406
1686 Ignore-this: 98d00411b68d688b3b4cffc9507b1f35
1687]
1688[Fix build on Windows
1689Ian Lynagh <igloo@earth.li>**20090711004351]
1690[Fix some "warn-unused-do-bind" warnings where we want to ignore the value
1691Ian Lynagh <igloo@earth.li>**20090710204513]
1692[Use throwErrnoIfMinus1_ when calling getrusage
1693Ian Lynagh <igloo@earth.li>**20090710204221]
1694[Remove an unused import
1695Ian Lynagh <igloo@earth.li>**20090710153345]
1696[reportStackOverflow now returns IO ()
1697Ian Lynagh <igloo@earth.li>**20090710153257
1698 It used to do "return undefined" to return IO a.
1699]
1700[GHC.Conc.reportError now returns IO ()
1701Ian Lynagh <igloo@earth.li>**20090710152646
1702 It used to return IO a, by "return undefined".
1703]
1704[Fix some "warn-unused-do-bind" warnings where we want to ignore the value
1705Ian Lynagh <igloo@earth.li>**20090710152526]
1706[Minor SampleVar refactoring
1707Ian Lynagh <igloo@earth.li>**20090710151438]
1708[Fix "warn-unused-do-bind" warnings in GHC/IO/Handle/Text.hs
1709Ian Lynagh <igloo@earth.li>**20090710122905]
1710[Fix some "warn-unused-do-bind" warnings where we just want to ignore the result
1711Ian Lynagh <igloo@earth.li>**20090710005638]
1712[Use the result of writeCharBuf in GHC/IO/Encoding/Latin1.hs too
1713Ian Lynagh <igloo@earth.li>**20090710004032]
1714[Minor code tidyups in GHC.Conc
1715Ian Lynagh <igloo@earth.li>**20090710003801]
1716[Fix "warn-unused-do-bind" warning in GHC.Conc
1717Ian Lynagh <igloo@earth.li>**20090710003530
1718 If we fail to communicate with the IO manager then we print a warning
1719 using debugErrLn from the ghc-prim package.
1720]
1721[Fix "warn-unused-do-bind" warnings in System.Posix.Internals
1722Ian Lynagh <igloo@earth.li>**20090709164546]
1723[Fix "warn-unused-do-bind" warnings where we really do want to ignore the result
1724Ian Lynagh <igloo@earth.li>**20090709163912]
1725[Add back imports needed on Windows
1726Ian Lynagh <igloo@earth.li>**20090707181924]
1727[Remove unused imports
1728Ian Lynagh <igloo@earth.li>**20090707115810]
1729[Remove unused imports from base
1730simonpj@microsoft.com**20090706111842
1731 Ignore-this: f9b5f353e3bb820f787c56d615b28765
1732 
1733 These unused imports are detected by the new unused-import code
1734 
1735]
1736[Use the result of writeCharBuf
1737Simon Marlow <marlowsd@gmail.com>**20090706133303
1738 Ignore-this: 52288dd559bf4c4f313df6197091d935
1739   
1740 This only makes a difference when CHARBUF_UTF16 is in use, which it
1741 normally isn't.  I suspect CHARBUF_UTF16 doesn't currently work for
1742 other reasons (CHARBUF_UTF16 was an experiment before I wrote the
1743 GHC.IO.Encoding.UTF* codecs), but this patch at least makes it
1744 slightly closer to working.
1745]
1746[Remove some cruft from Data.HashTable
1747Ian Lynagh <igloo@earth.li>**20090706181630]
1748[Add 'eof' to Text.ParserCombinators.ReadP
1749simonpj@microsoft.com**20090706111801
1750 Ignore-this: 2aea7b848e00c894761bc4011adaa95d
1751 
1752 Add a ReadP parser that succeeds at the end of input. Very useful!
1753 
1754]
1755[Don't export CLDouble for GHC; fixes trac #2793
1756Ian Lynagh <igloo@earth.li>**20090705155120
1757 We never really supported CLDouble (it was a plain old double underneath),
1758 and pretending that we do does more harm than good.
1759]
1760[a byte between 0x80 and 0xBF is illegal immediately (#3341)
1761Simon Marlow <marlowsd@gmail.com>**20090702081415
1762 Ignore-this: dc19ef59a1a21118d5a7dd38aa2f611c
1763]
1764[avoid a warning
1765Simon Marlow <marlowsd@gmail.com>**20090630084134
1766 Ignore-this: c92a45ee216faf01327feae9fe06d6e2
1767]
1768[Add a wrapper for libiconv.
1769Matthias Kilian <kili@outback.escape.de>**20090629183634
1770 Ignore-this: 23c6047c0d71b745b495cc223574a47f
1771]
1772[#include <sys/times.h> if we have it (should fix build problems)
1773Simon Marlow <marlowsd@gmail.com>**20090629085351
1774 Ignore-this: a35e93b37ca9595c73460243180f4b9d
1775]
1776[set binary mode for existing FDs on Windows (fixes some GHCi test failures)
1777Simon Marlow <marlowsd@gmail.com>**20090626120522
1778 Ignore-this: 580cf636e9c77d8427aff6861d089481
1779]
1780[Move directory-related stuff to the unix package
1781Simon Marlow <marlowsd@gmail.com>**20090625120325
1782 Ignore-this: b997b3cbce0a46ca87ad825bbdc0a411
1783 now that it isn't used on Windows any more.
1784]
1785[TAG 2009-06-25
1786Ian Lynagh <igloo@earth.li>**20090625160056]
1787Patch bundle hash:
1788bae860cc853b49ff0df3b353aa20566e062e5345