# Ticket #1005: log_shift_ops.patch

File log_shift_ops.patch, 46.9 KB (added by rob@…, 9 years ago)
Line
1
2New patches:
3
4[Logical Shift Operators
5[email protected]**20061116063336] {
6hunk ./Data/Bits.hs 25
7+    lShift,            -- :: a -> Int -> a
8hunk ./Data/Bits.hs 35
9+    lShiftL, lShiftR,  -- :: a -> Int -> a
10hunk ./Data/Bits.hs 89
11-    {-| Shift the argument left by the specified number of bits.
12-       Right shifts (signed) are specified by giving a negative value.
13+    {-| Arithmetic shift of the argument left by the specified number of
14+        bits. Right shifts (signed) are specified by giving a negative
15+        value.
16hunk ./Data/Bits.hs 102
17+    {-| Logical shift of the argument left by the specified number of bits.
18+        Right shifts (signed) are specified by giving a negative value.
19+
20+        An instance can define either this unified 'lshift' or 'lshiftR'
21+        and (optionally) 'lshiftL', depending on which is more convenient
22+        for the type in question. Generally a definition of only 'lshiftR'
23+        is most suitable. Definition of the logical shift operators is
24+        only necessary for signed types. -}
25+    lShift          :: a -> Int -> a
26+    x `lShift` i | i<0  = x `lShiftR` (-i)
27+                   | i==0 = x
28+                   | i>0  = x `lShiftL` i
29+
30+
31hunk ./Data/Bits.hs 175
32-    {-| Shift the argument left by the specified number of bits
33-       (which must be non-negative).
34+    {-| Arithmetic shift of the argument left by the specified number of
35+        bits (which must be non-negative).
36hunk ./Data/Bits.hs 184
37-    {-| Shift the argument right (signed) by the specified number of bits
38-       (which must be non-negative).
39+    {-| Arithmetic shift of the argument right (signed) by the specified
40+        number of bits (which must be non-negative).
41hunk ./Data/Bits.hs 193
42+    {-| Logical shift of the argument right (unsigned) by the specified
43+        number of bits (which must be non-negative).
44+
45+        An instance can define either this and (optionally) 'lShiftL'
46+        or the unified 'lShift', depending on which is more convenient
47+        for the type in        question. Definition of the logical shift
48+        operators is only necessary for signed types. -}
49+    lShiftR         :: a -> Int -> a
50+    lShiftR       = shiftR
51+
52+    {-| Logical shift of the argument left by the specified number of bits
53+        (which must be non-negative).
54+
55+        An instance can define either this and 'lShiftR' or the unified
56+       'lShift', depending on which is more convenient for the type in
57+       question. Defining this method is generally unnecessary since it
58+        is in practice identical to the signed shiftL operator. -}
59+    lShiftL         :: a -> Int -> a
60+    lShiftL       = shiftL
61+
62hunk ./Data/Bits.hs 231
63+
64hunk ./Data/Bits.hs 243
65+    (I# x#) `lShiftR` (I# i#) = I# (x# `iShiftRL#` i#)
66hunk ./Data/Bits.hs 273
67+    x `lShiftR` i          = fromIntegral (shiftR ((fromIntegral x)::Word) i)
68+
69hunk ./Data/Bits.hs 342
70+   -- Just as a positive integer is considered to have an infinite ray of
71+   -- clear bits preceding it, a negative integer is considered to have an
72+   -- infinite ray of set bits preceding it so lShiftR is nonsensical
73+   -- when applied to Integer
74+   lShiftR _ _ = error "Data.Bits.lShiftR(Integer)"
75+
76hunk ./GHC/Int.hs 124
77+    (I8# x#) `lShiftR` (I# i#) = I8# (narrow8Int# (word2Int# (x'# `shiftRL#` i#)))
78+        where
79+        x'# = narrow8Word# (int2Word# x#)
80hunk ./GHC/Int.hs 234
81+    (I16# x#) `lShiftR` (I# i#) = I16# (narrow16Int# (word2Int# (x'# `shiftRL#` i#)))
82+        where
83+        x'# = narrow16Word# (int2Word# x#)
84hunk ./GHC/Int.hs 361
85+    (I32# x#) `lShiftR` (I# i#) = I32# (x# `iShiftRL32#` i#)
86hunk ./GHC/Int.hs 397
87+foreign import "stg_iShiftRL32"    unsafe iShiftRL32#    :: Int32# -> Int# -> Int32#
88hunk ./GHC/Int.hs 493
89+    (I32# x#) `lShiftR` (I# i#) = I32# (x# `iShiftRL#` i#)
90hunk ./GHC/Int.hs 635
91+    (I64# x#) `lShiftR` (I# i#) = I64# (x# `iShiftRL64#` i#)
92hunk ./GHC/Int.hs 654
93-iShiftL64#, iShiftRA64# :: Int64# -> Int# -> Int64#
94+iShiftL64#, iShiftRA64#, iShiftRL64# :: Int64# -> Int# -> Int64#
95hunk ./GHC/Int.hs 664
96+a `iShiftRL64#` b | b >=# 64# = if a `ltInt64#` (intToInt64# 0#)
97+                                       then intToInt64# (-1#)
98+                                       else intToInt64# 0#
99+                 | otherwise = a `uncheckedIShiftRL64#` b
100+
101hunk ./GHC/Int.hs 695
102+foreign import ccall unsafe "stg_uncheckedIShiftRL64"    uncheckedIShiftRL64#    :: Int64# -> Int# -> Int64#
103hunk ./GHC/Int.hs 780
104+    (I64# x#) `lShiftR` (I# i#) = I64# (x# `iShiftRL#` i#)
105}
106
107[Logical Operator QuickCheck Properties
108[email protected]**20061116064720] {
111hunk ./Tests/Bits.hs 1
112+module Tests.Bits
113+    ()
114+    where
115+
116+
117+import Data.Bits
118+import Data.Int
119+import Data.Word
120+import System.Random
121+import Test.QuickCheck
122+
123+
124+arb :: (Random a, Bounded a) => Gen a
125+arb = choose ( minBound, maxBound )
126+
127+randomDataR :: (Random a, RandomGen g, Bounded a, Integral a) => (a, a) -> g -> (a, g)
128+randomDataR (min,max) g = let (a,g') = randomR (toInteger min, toInteger max) g in
129+                          (fromInteger a,g')
130+
131+randomData :: (Random a, RandomGen g, Bounded a, Integral a) => g -> (a,g)
132+randomData = randomDataR ( minBound, maxBound )
133+
134+
135+instance Random Word where
136+    randomR = randomDataR
137+    random = randomData
138+
139+instance Random Int8 where
140+    randomR = randomDataR
141+    random = randomData
142+
143+instance Random Int16 where
144+    randomR = randomDataR
145+    random = randomData
146+
147+instance Random Int32 where
148+    randomR = randomDataR
149+    random = randomData
150+
151+instance Random Int64 where
152+    randomR = randomDataR
153+    random = randomData
154+
155+
156+instance Arbitrary Word where
157+    arbitrary = arb
158+    coarbitrary = error "Not Implemented"
159+
160+instance Arbitrary Int8 where
161+    arbitrary = arb
162+    coarbitrary = error "Not Implemented"
163+
164+instance Arbitrary Int16 where
165+    arbitrary = arb
166+    coarbitrary = error "Not Implemented"
167+
168+instance Arbitrary Int32 where
169+    arbitrary = arb
170+    coarbitrary = error "Not Implemented"
171+
172+instance Arbitrary Int64 where
173+    arbitrary = arb
174+    coarbitrary = error "Not Implemented"
175+
176+
177+showBits :: Bits a => a -> String
178+showBits x = foldr ((:) . bitChar . testBit x) "" \$ [sz,sz-1..0]
179+    where bitChar True = '1'
180+          bitChar False = '0'
181+          sz = (bitSize x) - 1
182+
183+
184+logShiftStructurePreservingI :: Int -> Bool
185+logShiftStructurePreservingI x = '0' : (take ((length bitString) - 1) bitString)
186+                                == showBits (lShiftR x 1)
187+    where bitString = showBits x
188+
189+logShiftStructurePreservingI8 :: Int8 -> Bool
190+logShiftStructurePreservingI8 x = '0' : (take ((length bitString) - 1) bitString)
191+                                == showBits (lShiftR x 1)
192+    where bitString = showBits x
193+
194+logShiftStructurePreservingI16 :: Int16 -> Bool
195+logShiftStructurePreservingI16 x = '0' : (take ((length bitString) - 1) bitString)
196+                                == showBits (lShiftR x 1)
197+    where bitString = showBits x
198+
199+logShiftStructurePreservingI32 :: Int32 -> Bool
200+logShiftStructurePreservingI32 x = '0' : (take ((length bitString) - 1) bitString)
201+                                == showBits (lShiftR x 1)
202+    where bitString = showBits x
203+
204+logShiftStructurePreservingI64 :: Int64 -> Bool
205+logShiftStructurePreservingI64 x = '0' : (take ((length bitString) - 1) bitString)
206+                                == showBits (lShiftR x 1)
207+    where bitString = showBits x
208+
209+logShiftStructurePreservingIn :: Integer -> Bool
210+logShiftStructurePreservingIn x = '0' : (take ((length bitString) - 1) bitString)
211+                                == showBits (lShiftR x 1)
212+    where bitString = showBits x
213+
214+logShiftStructurePreservingW :: Word -> Bool
215+logShiftStructurePreservingW x = '0' : (take ((length bitString) - 1) bitString)
216+                                == showBits (lShiftR x 1)
217+    where bitString = showBits x
218+
219+
220}
221
222Context:
223
224[Control.Parallel.Strategies clean-up: Added export list to avoid exporting seq, fixed import list strangeness that haddock choked on, and moved the deprecated functions to a separate section.
225[email protected]**20061113224202]
226[Control.Parallel.Strategies: added NFData instances for Data.Int.*, Data.Word.*, Maybe, Either, Map, Set, Tree, IntMap, IntSet.
227[email protected]**20061113221843]
228[Control.Parallel.Strategies: deprecate sPar, sSeq, Assoc, fstPairFstList, force and sforce.
229[email protected]**20061113215219
230 Code comments indicated that sPar and sSeq have been superceded by sparking and demanding, and that Assoc, fstPairFstList, force and sforce are examples and hacks needed by the Lolita system.
231]
233[email protected]**20061113113221]
234[Control.Parallel.Strategies: clarified documentation of parListChunk.
235[email protected]**20061112232904]
237[email protected]**20061112220445
238 Many of the definitions in Control.Parallel.Strategies had missing or unclear Haddock comments. I converted most of the existing plain code comments to haddock comments, added some missing documentation and cleaned up the existing Haddock mark-up.
239]
240[Fix broken pragmas; spotted by Bulat Ziganshin
241Ian Lynagh <[email protected]>**20061111205916]
243Ross Paterson <[email protected]>**20060929103252]
244[hide Data.Array.IO.Internals
245Ross Paterson <[email protected]>**20061111113248
246
247 It's hidden from haddock, and everything it exports is re-exported by
248 Data.Array.IO.
249]
251[email protected]**20061110142710]
253Ross Paterson <[email protected]>**20061110141354]
254[whitespace only
255Ross Paterson <[email protected]>**20061110141326]
256[move fix to Data.Function
257Ross Paterson <[email protected]>**20061110141120]
258[import Prelude
259Ross Paterson <[email protected]>**20061110140445]
260[Added Data.Function (Trac ticket #979).
261Nils Anders Danielsson <[email protected]>**20061110122503
262 + A module with simple combinators working solely on and with
263   functions.
264 + The only new function is "on".
265 + Some functions from the Prelude are re-exported.
266]
267[__hscore_long_path_size is not portable beyond GHC
268[email protected]**20061110113222]
269[redefine writeFile and appendFile using withFile
270Ross Paterson <[email protected]>**20061107140359]
271[add withFile and withBinaryFile (#966)
272Ross Paterson <[email protected]>**20061107134510]
273[remove conflicting import for nhc98
274[email protected]**20061108111215]
275[Add intercalate to Data.List (ticket #971)
276Josef Svenningsson <[email protected]>**20061102122052]
277[non-GHC: fix canonicalizeFilePath
278Ross Paterson <[email protected]>**20061107133902
279
280 I've also removed the #ifdef __GLASGOW_HASKELL__ from the proper
281 Windows versions of a few functions.  These will need testing with
282 Hugs on Windows.
283]
284[enable canonicalizePath for non-GHC platforms
285Simon Marlow <[email protected]>**20061107121141]
286[Update documentation for hWaitForInput
287Simon Marlow <[email protected]>**20061107111430
288 See #972
289 Merge to 6.6 branch.
290]
291[Use unchecked shifts to implement Data.Bits.rotate
292Samuel Bronson <[email protected]>**20061012125553
293 This should get rid of those cases, maybe lower the size enough that the inliner will like it?
294]
296Ross Paterson <[email protected]>**20061106124140]
297[fix example in docs
298Ross Paterson <[email protected]>**20061106115628]
299[Add intercalate and split to Data.List
300Josef Svenningsson <[email protected]>*-20061024172357]
301[Data.Generics.Basics is GHC-only
302Ross Paterson <[email protected]>**20061102111736]
303[#ifdef around non-portable Data.Generics.Basics
304[email protected]**20061102103445]
305[Add deriving Data to Complex
306simonpj@microsoft**20061101102059]
307[minor clarification of RandomGen doc
308Ross Paterson <[email protected]>**20061030230842]
309[rearrange docs a bit
310Ross Paterson <[email protected]>**20061030161223]
311[Add intercalate and split to Data.List
312Josef Svenningsson <[email protected]>**20061024172357]
313[Export pseq from Control.Parallel, and use it in Control.Parallel.Strategies
314Simon Marlow <[email protected]>**20061027150141]
315[`par` should be infixr 0
316Simon Marlow <[email protected]>**20061027130800
317 Alas, I didn't spot this due to lack of testing, and the symptom is
318 that an expression like x `par` y `seq z will have exactly the wrong
319 parallelism properties.  The workaround is to add parantheses.
320
321 I think we could push this to the 6.6 branch.
322]
323[fix example in comment
324Ross Paterson <[email protected]>**20061023163925]
325[Use the new Any type for dynamics (GHC only)
326simonpj@microsoft**20061019160408]
327[add Data.Sequence to nhc98 build
328[email protected]**20061012135200]
329[Remove Data.FiniteMap, add Control.Applicative, Data.Traversable, and
330[email protected]**20061012095605
331 Data.Foldable to the nhc98 build.
332]
333[STM invariants
334[email protected]**20061007123253]
335[Inline shift in GHC's Bits instances for {Int,Word}{,8,16,32,64}
336Samuel Bronson <[email protected]>**20061009020906]
337[Don't create GHC.Prim when bootstrapping; we can't, and we don't need it
338Ian Lynagh <[email protected]>**20061004165355]
339[Data.ByteString: fix lazyness of take, drop & splitAt
340Don Stewart <[email protected]>**20061005011703
341
342 ByteString.Lazy's take, drop and splitAt were too strict when demanding
343 a byte string. Spotted by Einar Karttunen. Thanks to him and to Bertram
344 Felgenhauer for explaining the problem and the fix.
345
346]
347[Fix syntax error that prevents building Haddock documentation on Windows
348[email protected]**20060917013530]
349[Hugs only: unbreak typeRepKey
350Ross Paterson <[email protected]>**20060929102743]
351[make hGetBufNonBlocking do something on Windows w/ -threaded
352Simon Marlow <[email protected]>**20060927145811
353 hGetBufNonBlocking will behave the same as hGetBuf on Windows now, which
354 is better than just crashing (which it did previously).
355]
356[add typeRepKey :: TypeRep -> IO Int
357Simon Marlow <[email protected]>**20060927100342
358 See feature request #880
359]
361Ross Paterson <[email protected]>**20060926135843]
362[Add strict versions of insertWith and insertWithKey (Data.Map)
363[email protected]**20060910162443]
364[doc tweaks, including more precise equations for evaluate
365Ross Paterson <[email protected]>**20060910115259]
366[Sync Data.ByteString with stable branch
367Don Stewart <[email protected]>**20060909050111
368
369 This patch:
370     * hides the LPS constructor (its in .Base if you need it)
371     * adds functions to convert between strict and lazy bytestrings
373
374]
375[Typeable1 instances for STM and TVar
376Ross Paterson <[email protected]>**20060904231425]
377[remove obsolete Hugs stuff
378Ross Paterson <[email protected]>**20060904223944]
379[Cleaner isInfixOf suggestion from Ross Paterson
380John Goerzen <[email protected]>**20060901143654]
381[New function isInfixOf that searches a list for a given sublist
382John Goerzen <[email protected]>**20060831151556
383
384 Example:
385
386 isInfixOf "Haskell" "I really like Haskell." -> True
387 isInfixOf "Ial" "I really like Haskell." -> False
388
389 This function was first implemented in MissingH as MissingH.List.contains
390]
391[Better doc on Data.Map.lookup: explain what the monad is for
392[email protected]**20060903133440]
393[fix hDuplicateTo on Windows
394Simon Marlow <[email protected]>**20060901150016
395 deja vu - I'm sure I remember fixing this before...
396]
397[Improve documentation of atomically
398simonpj@microsoft**20060714120207]
399[Add missing method genRange for StdGen (fixes #794)
400simonpj@microsoft**20060707151901
401
402        MERGE TO STABLE
403
404 Trac #794 reports (correctly) that the implementation of StdGen
405 only returns numbers in the range (0..something) rather than
406 (minBound, maxBound), which is what StdGen's genRange claims.
407
408 This commit fixes the problem, by implementing genRange for StdGen
409 (previously it just used the default method).
410
411
412]
413[mark nhc98 import hack
414Ross Paterson <[email protected]>**20060831125219]
415[remove some outdated comments
416Simon Marlow <[email protected]>**20060831104200]
417[import Control.Arrow.ArrowZero to help nhc98's type checker
418[email protected]**20060831101105]
419[remove Text.Regex(.Posix) from nhc98 build
420[email protected]**20060831101016]
422Ross Paterson <[email protected]>**20060830163521]
423[fix doc typo
424Ross Paterson <[email protected]>**20060830134123]
425[add Data.Foldable.{for_,forM_} and Data.Traversable.{for,forM}
426Ross Paterson <[email protected]>**20060830133805
427
429]
430[Make length a good consumer
431simonpj@microsoft*-20060508142726
432
433 Make length into a good consumer.  Fixes Trac bug #707.
434
435 (Before length simply didn't use foldr.)
436
437]
439Don Stewart <[email protected]>**20060824081118
440
441 flip mapM_ is more and more common, I find. Several suggestions have
442 been made to add this, as foreach or something similar. This patch
443 does just that:
444
445     forM  :: (Monad m) => [a] -> (a -> m b) -> m [b]
446     forM_ :: (Monad m) => [a] -> (a -> m b) -> m ()
447
448 So we can write:
449
450     Prelude Control.Monad> forM_ [1..4] \$ \x -> print x
451     1
452     2
453     3
454     4
455
456]
457[Hide internal module from haddock in Data.ByteString
458Don Stewart <[email protected]>**20060828011515]
460Ross Paterson <[email protected]>**20060827170407]
461[expand advice on importing these modules
462Ross Paterson <[email protected]>**20060827164044]
464Ross Paterson <[email protected]>**20060827115140]
465[Clarify how one hides Prelude.catch
466Don Stewart <[email protected]>**20060826124346
467
468 User feedback indicated that an example was required, of how to hide
469 Prelude.catch, so add such an example to the docs
470
471]
472[Workaround for OSes that don't have intmax_t and uintmax_t
473Ian Lynagh <[email protected]>**20060825134936
474 OpenBSD (and possibly others) do not have intmax_t and uintmax_t types:
475     http://www.mail-archive.com/[email protected]/msg01548.html
476 so substitute (unsigned) long long if we have them, otherwise
477 (unsigned) long.
478
479]
480[add docs for par
481Simon Marlow <[email protected]>**20060825110610]
482[document minimal complete definition for Bits
483Ross Paterson <[email protected]>**20060824140504]
484[C regex library bits have moved to the regex-posix package
485Simon Marlow <[email protected]>**20060824132311]
486[Add shared Typeable support (ghc only)
487Esa Ilari Vuokko <[email protected]>**20060823003126]
488[this should have been removed with the previous patch
489Simon Marlow <[email protected]>**20060824121223]
490[remove Text.Regx & Text.Regex.Posix
491Simon Marlow <[email protected]>**20060824094615
492 These are subsumed by the new regex-base, regex-posix and regex-compat
493 packages.
494]
495[explicitly tag Data.ByteString rules with the FPS prefix.
496Don Stewart <[email protected]>**20060824041326]
497[Add spec rules for sections in Data.ByteString
498Don Stewart <[email protected]>**20060824012611]
499[Sync Data.ByteString with current stable branch, 0.7
500Don Stewart <[email protected]>**20060823143338]
501[add notes about why copyFile doesn't remove the target
502Simon Marlow <[email protected]>**20060823095059]
503[copyFile: try removing the target file before opening it for writing
504Simon Marlow <[email protected]>*-20060822121909]
505[copyFile: try removing the target file before opening it for writing
506Simon Marlow <[email protected]>**20060822121909]
507[add alternative functors and extra instances
508Ross Paterson <[email protected]>**20060821152151
509
510 * Alternative class, for functors with a monoid
511 * instances for Const
512 * instances for arrows
513]
514[generate Haddock docs on all platforms
515Simon Marlow <[email protected]>**20060821131612]
516[remove extra comma from import
517Ross Paterson <[email protected]>**20060819173954]
518[fix docs for withC(A)StringLen
519Ross Paterson <[email protected]>**20060818170328]
520[use Haskell'98 compliant indentation in do blocks
521[email protected]**20060818130810]
522[use correct names of IOArray operations for nhc98
523[email protected]**20060818130714]
524[add mapMaybe and mapEither, plus WithKey variants
525Ross Paterson <[email protected]>**20060817235041]
526[remove Text.Html from nhc98 build
527[email protected]**20060817135502]
528[eliminate more HOST_OS tests
529Ross Paterson <[email protected]>**20060815190609]
530[Hugs only: disable unused process primitives
531Ross Paterson <[email protected]>**20060813184435
532
533 These were the cause of Hugs bug #30, I think, and weren't used by Hugs anyway.
534]
535[markup fix to Data.HashTable
536Ross Paterson <[email protected]>**20060812103835]
537[revert removal of ghcconfig.h from package.conf.in
538Ross Paterson <[email protected]>**20060812082702
539
540 as it's preprocessed with -undef (pointed out by Esa Ilari Vuokko)
541]
542[fix Data.HashTable for non-GHC
543Ross Paterson <[email protected]>**20060811231521]
544[remove deprecated 'withObject'
545Simon Marlow <[email protected]>**20060811152350]
546[Jan-Willem Maessen's improved implementation of Data.HashTable
547Simon Marlow <[email protected]>**20060811151024
548 Rather than incrementally enlarging the hash table, this version
549 just does it in one go when the table gets too full.
550]
551[Warning police: Make some prototypes from the RTS known
552[email protected]**20060811144629]
553[Warning police: Removed useless catch-all clause
554sven.panne@aedion.de**20060811142208]
555[reduce dependency on ghcconfig.h
556Ross Paterson <ross@soi.city.ac.uk>**20060811124030
557
558 The only remaining use is in cbits/dirUtils.h, which tests solaris2_HOST_OS
559
560 (Also System.Info uses ghcplatform.h and several modules import MachDeps.h
561 to get SIZEOF_* and ALIGNMENT_* from ghcautoconf.h)
562]
563[(non-GHC only) track MArray interface change
564Ross Paterson <ross@soi.city.ac.uk>**20060810182902]
565[move Text.Html to a separate package
566Simon Marlow <simonmar@microsoft.com>**20060810113017]
567[bump version to 2.0
568Simon Marlow <simonmar@microsoft.com>**20060810112833]
569[Remove deprecated Data.FiniteMap and Data.Set interfaces
570Simon Marlow <simonmar@microsoft.com>**20060809153810]
571[move altzone test from ghc to base package
572Ross Paterson <ross@soi.city.ac.uk>**20060809124259]
573[remove unnecessary #include "ghcconfig.h"
574Ross Paterson <ross@soi.city.ac.uk>**20060809123812]
575[Change the API of MArray to allow resizable arrays
576Simon Marlow <simonmar@microsoft.com>**20060809100548
577 See #704
578
579 The MArray class doesn't currently allow a mutable array to change its
580 size, because of the pure function
581
582   bounds :: (HasBounds a, Ix i) => a i e -> (i,i)
583
584 This patch removes the HasBounds class, and adds
585
586   getBounds :: (MArray a e m, Ix i) => a i e -> m (i,i)
587
588 to the MArray class, and
589
590   bounds :: (IArray a e, Ix i) => a i e -> (i,i)
591
592 to the IArray class.
593
594 The reason that bounds had to be incorporated into the IArray class is
595 because I couldn't make DiffArray work without doing this.  DiffArray
596 acts as a layer converting an MArray into an IArray, and there was no
597 way (that I could find) to define an instance of HasBounds for
598 DiffArray.
599]
600[deprecate this module.
601Simon Marlow <simonmar@microsoft.com>**20060808100708]
602[add traceShow (see #474)
603Simon Marlow <simonmar@microsoft.com>**20060807155545]
604[remove spurious 'extern "C" {'
605Simon Marlow <simonmar@microsoft.com>**20060724160258]
606[Fix unsafeIndex for large ranges
607Simon Marlow <simonmar@microsoft.com>**20060721100225]
608[disambiguate uses of foldr for nhc98 to compile without errors
609Malcolm.Wallace@cs.york.ac.uk**20060711161614]
610[make Control.Monad.Instances compilable by nhc98
611Malcolm.Wallace@cs.york.ac.uk**20060711160941]
612[breakpointCond
613Lemmih <lemmih@gmail.com>**20060708055528]
614[UNDO: Merge "unrecognized long opt" fix from 6.4.2
615Simon Marlow <simonmar@microsoft.com>**20060705142537
616 This patch undid the previous patch, "RequireOrder: do not collect
617 unrecognised options after a non-opt".  I asked Sven to revert it, but
618 didn't get an answer.
619
620 See bug #473.
621]
622[Avoid strictness in accumulator for unpackFoldr
623Don Stewart <dons@cse.unsw.edu.au>**20060703091806
624
625 The seq on the accumulator for unpackFoldr will break in the presence of
626 head/build rewrite rules. The empty list case will be forced, producing
627 an exception. This is a known issue with seq and rewrite rules that we
628 just stumbled on to.
629
630]
631[Disable unpack/build fusion
632Don Stewart <dons@cse.unsw.edu.au>**20060702083913
633
634 unpack/build on bytestrings seems to trigger a bug when interacting with
635 head/build fusion in GHC.List. The bytestring001 testcase catches it.
636
637 I'll investigate further, but best to disable this for now (its not
638 often used anyway).
639
640 Note that with -frules-off or ghc 6.4.2 things are fine. It seems to
641 have emerged with the recent rules changes.
642
643]
644[Import Data.ByteString.Lazy, improve ByteString Fusion, and resync with FPS head
645Don Stewart <dons@cse.unsw.edu.au>**20060701084345
646
647 This patch imports the Data.ByteString.Lazy module, and its helpers,
648 providing a ByteString implemented as a lazy list of strict cache-sized
649 chunks. This type allows the usual lazy operations to be written on
650 bytestrings, including lazy IO, with much improved space and time over
651 the [Char] equivalents.
652
653]
654[Wibble in docs for new ForeignPtr functionsn
655Don Stewart <dons@cse.unsw.edu.au>**20060609075924]
656[comments for Applicative and Traversable
657Ross Paterson <ross@soi.city.ac.uk>**20060622170436]
658[default to NoBuffering on Windows for a read/write text file
659Simon Marlow <simonmar@microsoft.com>**20060622144446
660 Fixes (works around) #679
661]
663Simon Marlow <simonmar@microsoft.com>**20060622144433]
664[clarify and expand docs
665Simon Marlow <simonmar@microsoft.com>**20060622112911]
666[Add minView and maxView to Map and Set
667jeanphilippe.bernardy@gmail.com**20060616180121]
668[add signature for registerDelay
669Ross Paterson <ross@soi.city.ac.uk>**20060614114456]
670[a few doc comments
671Ross Paterson <ross@soi.city.ac.uk>**20060613142704]
672[Optimised foreign pointer representation, for heap-allocated objects
673Don Stewart <dons@cse.unsw.edu.au>**20060608015011]
674[Add the inline function, and many comments
675simonpj@microsoft.com**20060605115814
676
677 This commit adds the 'inline' function described in the
678 related patch in the compiler.
679
681
682]
683[small intro to exceptions
684Ross Paterson <ross@soi.city.ac.uk>**20060525111604]
685[export breakpoint
686Simon Marlow <simonmar@microsoft.com>**20060525090456]
687[Merge in changes from fps head. Highlights:
688Don Stewart <dons@cse.unsw.edu.au>**20060525065012
689
690     Wed May 24 15:49:38 EST 2006  sjanssen@cse.unl.edu
691       * instance Monoid ByteString
692
693     Wed May 24 15:04:04 EST 2006  Duncan Coutts <duncan.coutts@worc.ox.ac.uk>
694       * Rearange export lists for the .Char8 modules
695
696     Wed May 24 14:59:56 EST 2006  Duncan Coutts <duncan.coutts@worc.ox.ac.uk>
697       * Implement mapAccumL and reimplement mapIndexed using loopU
698
699     Wed May 24 14:47:32 EST 2006  Duncan Coutts <duncan.coutts@worc.ox.ac.uk>
700       * Change the implementation of the unfoldr(N) functions.
701       Use a more compact implementation for unfoldrN and change it's behaviour
702       to only return Just in the case that it actually 'overflowed' the N, so
703       the boundary case of unfolding exactly N gives Nothing.
704       Implement unfoldr and Lazy.unfoldr in terms of unfoldrN. Use fibonacci
705       growth for the chunk size in unfoldr
706
707     Wed May 24 08:32:29 EST 2006  sjanssen@cse.unl.edu
708       * Add unfoldr to ByteString and .Char8
709       A preliminary implementation of unfoldr.
710
711     Wed May 24 01:39:41 EST 2006  Duncan Coutts <duncan.coutts@worc.ox.ac.uk>
712       * Reorder the export lists to better match the Data.List api
713
714     Tue May 23 14:04:32 EST 2006  Don Stewart <dons@cse.unsw.edu.au>
715       * pack{Byte,Char} -> singleton. As per fptools convention
716
717     Tue May 23 14:00:51 EST 2006  Don Stewart <dons@cse.unsw.edu.au>
718       * elemIndexLast -> elemIndexEnd
719
720     Tue May 23 13:57:34 EST 2006  Don Stewart <dons@cse.unsw.edu.au>
721       * In the search for a more orthogonal api, we kill breakFirst/breakLast,
722         which were of dubious value
723
724     Tue May 23 12:24:09 EST 2006  Don Stewart <dons@cse.unsw.edu.au>
725       * Abolish elems. It's name implied it was unpack, but its type didn't. it made no sense
726
727     Tue May 23 10:42:09 EST 2006  Duncan Coutts <duncan.coutts@worc.ox.ac.uk>
728       * Minor doc tidyup. Use haddock markup better.
729
730     Tue May 23 11:00:31 EST 2006  Don Stewart <dons@cse.unsw.edu.au>
731       * Simplify the join() implementation. Spotted by Duncan.
732
733]
734[add a way to ask the IO manager thread to exit
735Simon Marlow <simonmar@microsoft.com>**20060524121823]
736[Sync with FPS head, including the following patches:
737Don Stewart <dons@cse.unsw.edu.au>**20060520030436
738
739     Thu May 18 15:45:46 EST 2006  sjanssen@cse.unl.edu
740       * Export unsafeTake and unsafeDrop
741
742     Fri May 19 11:53:08 EST 2006  Don Stewart <dons@cse.unsw.edu.au>
743       * Add foldl1'
744
745     Fri May 19 13:41:24 EST 2006  Don Stewart <dons@cse.unsw.edu.au>
746       * Add fuseable scanl, scanl1 + properties
747
748     Fri May 19 18:20:40 EST 2006  Don Stewart <dons@cse.unsw.edu.au>
749       * Spotted another chance to use unsafeTake,Drop (in groupBy)
750
751     Thu May 18 09:24:25 EST 2006  Duncan Coutts <duncan.coutts@worc.ox.ac.uk>
752       * More effecient findIndexOrEnd based on the impl of findIndex
753
754     Thu May 18 09:22:49 EST 2006  Duncan Coutts <duncan.coutts@worc.ox.ac.uk>
755       * Eliminate special case in findIndex since it's handled anyway.
756
757     Thu May 18 09:19:08 EST 2006  Duncan Coutts <duncan.coutts@worc.ox.ac.uk>
758       * Add unsafeTake and unsafeDrop
759       These versions assume the n is in the bounds of the bytestring, saving
760       two comparison tests. Then use them in varous places where we think this
761       holds. These cases need double checking (and there are a few remaining
762       internal uses of take / drop that might be possible to convert).
763       Not exported for the moment.
764
765     Tue May 16 23:15:11 EST 2006  Don Stewart <dons@cse.unsw.edu.au>
766       * Handle n < 0 in drop and splitAt. Spotted by QC.
767
768     Tue May 16 22:46:22 EST 2006  Don Stewart <dons@cse.unsw.edu.au>
769       * Handle n <= 0 cases for unfoldr and replicate. Spotted by QC
770
771     Tue May 16 21:34:11 EST 2006  Don Stewart <dons@cse.unsw.edu.au>
772       * mapF -> map', filterF -> filter'
773
774]
776Ross Paterson <ross@soi.city.ac.uk>**20060518154723]
777[simplify indexing in Data.Sequence
778Ross Paterson <ross@soi.city.ac.uk>**20060518154316]
779[Move Eq, Ord, Show instances for ThreadId to GHC.Conc
780Simon Marlow <simonmar@microsoft.com>**20060518113339
781 Eliminates orphans.
782]
783[Better error handling in the IO manager thread
784Simon Marlow <simonmar@microsoft.com>**20060518113303
785 In particular, handle EBADF just like rts/posix/Select.c, by waking up
786 all the waiting threads.  Other errors are thrown, instead of just
787 being ignored.
788]
789[#define _REENTRANT 1  (needed to get the right errno on some OSs)
790Simon Marlow <simonmar@microsoft.com>**20060518104151
791 Part 2 of the fix for threaded RTS problems on Solaris and possibly
792 *BSD (Part 1 was the same change in ghc/includes/Rts.h).
793]
794[copyCString* should be in IO. Spotted by Tomasz Zielonka
795Don Stewart <dons@cse.unsw.edu.au>**20060518012154]
796[add import Prelude to get dependencies right for Data/Fixed.hs
797Duncan Coutts <duncan.coutts@worc.ox.ac.uk>**20060517222044
798 Hopefully this fixes parallel builds.
799]
800[Fix negative index handling in splitAt, replicate and unfoldrN. Move mapF, filterF -> map', filter' while we're here
801Don Stewart <dons@cse.unsw.edu.au>**20060517020150]
802[Use our own realloc. Thus reduction functions (like filter) allocate on the Haskell heap. Makes around 10% difference.
803Don Stewart <dons@cse.unsw.edu.au>**20060513051736]
804[Last two CInt fixes for 64 bit, and bracket writeFile while we're here
805Don Stewart <dons@cse.unsw.edu.au>**20060512050750]
806[Some small optimisations, generalise the type of unfold
807Don Stewart <dons@cse.unsw.edu.au>**20060510043309
808
809     Tue May  9 22:36:29 EST 2006  Duncan Coutts <duncan.coutts@worc.ox.ac.uk>
810       * Surely the error function should not be inlined.
811
812     Tue May  9 22:35:53 EST 2006  Duncan Coutts <duncan.coutts@worc.ox.ac.uk>
813       * Reorder memory writes for better cache locality.
814
815     Tue May  9 23:28:09 EST 2006  Duncan Coutts <duncan.coutts@worc.ox.ac.uk>
816       * Generalise the type of unfoldrN
817
818       The type of unfoldrN was overly constrained:
819       unfoldrN :: Int -> (Word8 -> Maybe (Word8, Word8)) -> Word8 -> ByteString
820
821       if we compare that to unfoldr:
822       unfoldr :: (b -> Maybe (a, b)) -> b -> [a]
823
824       So we can generalise unfoldrN to this type:
825       unfoldrN :: Int -> (a -> Maybe (Word8, a)) -> a -> ByteString
826
827       and something similar for the .Char8 version. If people really do want to
828       use it a lot with Word8/Char then perhaps we should add a specialise pragma.
829
830     Wed May 10 13:26:40 EST 2006  Don Stewart <dons@cse.unsw.edu.au>
831       * Add foldl', and thus a fusion rule for length . {map,filter,fold},
832       that avoids creating an array at all if the end of the pipeline is a 'length' reduction
833
834 **END OF DESCRIPTION***
835
836 Place the long patch description above the ***END OF DESCRIPTION*** marker.
837 The first line of this file will be the patch name.
838
839
840 This patch contains the following changes:
841
842 M ./Data/ByteString.hs -8 +38
843 M ./Data/ByteString/Char8.hs -6 +12
844]
845[portable implementation of WordPtr/IntPtr for non-GHC
846Ross Paterson <ross@soi.city.ac.uk>**20060510001826
847
848 plus much tweaking of imports to avoid cycles
849]
850[add WordPtr and IntPtr types to Foreign.Ptr, with associated conversions
851Simon Marlow <simonmar@microsoft.com>**20060509092606
852
853 As suggested by John Meacham.
854
855 I had to move the Show instance for Ptr into GHC.ForeignPtr to avoid
856 recursive dependencies.
857]
858[add CIntPtr, CUIntPtr, CIntMax, CUIntMax types
859Simon Marlow <simonmar@microsoft.com>**20060509092427]
861Simon Marlow <simonmar@microsoft.com>**20060509082739]
862[Two things. #if defined(__GLASGOW_HASKELL__) on INLINE [n] pragmas (for jhc). And careful use of INLINE on words/unwords halves runtime for those functions
863Don Stewart <dons@cse.unsw.edu.au>**20060509023425]
864[Make length a good consumer
865simonpj@microsoft**20060508142726
866
867 Make length into a good consumer.  Fixes Trac bug #707.
868
869 (Before length simply didn't use foldr.)
870
871]
872[Trim imports
873simonpj@microsoft**20060508142557]
874[Make unsafePerformIO lazy
875simonpj@microsoft**20060508142507
876
877 The stricteness analyser used to have a HACK which ensured that NOINLNE things
878 were not strictness-analysed.  The reason was unsafePerformIO. Left to itself,
879 the strictness analyser would discover this strictness for unsafePerformIO:
880        unsafePerformIO:  C(U(AV))
881 But then consider this sub-expression
882        unsafePerformIO (\s -> let r = f x in
883                               case writeIORef v r s of (# s1, _ #) ->
884                               (# s1, r #)
885 The strictness analyser will now find that r is sure to be eval'd,
886 and may then hoist it out.  This makes tests/lib/should_run/memo002
888
889 Solving this by making all NOINLINE things have no strictness info is overkill.
890 In particular, it's overkill for runST, which is perfectly respectable.
891 Consider
892        f x = runST (return x)
893 This should be strict in x.
894
895 So the new plan is to define unsafePerformIO using the 'lazy' combinator:
896
897        unsafePerformIO (IO m) = lazy (case m realWorld# of (# _, r #) -> r)
898
899 Remember, 'lazy' is a wired-in identity-function Id, of type a->a, which is
900 magically NON-STRICT, and is inlined after strictness analysis.  So
901 unsafePerformIO will look non-strict, and that's what we want.
902
903]
904[Sync with FPS head.
905Don Stewart <dons@cse.unsw.edu.au>**20060508122322
906
907 Mon May  8 10:40:14 EST 2006  Don Stewart <dons@cse.unsw.edu.au>
908   * Fix all uses for Int that should be CInt or CSize in ffi imports.
909   Spotted by Igloo, dcoutts
910
911 Mon May  8 16:09:41 EST 2006  Don Stewart <dons@cse.unsw.edu.au>
912   * Import nicer loop/loop fusion rule from ghc-ndp
913
914 Mon May  8 17:36:07 EST 2006  Don Stewart <dons@cse.unsw.edu.au>
915   * Fix stack leak in split on > 60M strings
916
917 Mon May  8 17:50:13 EST 2006  Don Stewart <dons@cse.unsw.edu.au>
918   * Try same fix for stack overflow in elemIndices
919
920]
921[Fix all uses for Int that should be CInt or CSize in ffi imports. Spotted by Duncan and Ian
922Don Stewart <dons@cse.unsw.edu.au>**20060508010311]
923[Fixed import list syntax
924Sven Panne <sven.panne@aedion.de>**20060507155008]
925[Faster filterF, filterNotByte
926dons@cse.unsw.edu.au**20060507042301]
927[Much faster find, findIndex. Hint from sjanssen
928dons@cse.unsw.edu.au**20060507033048]
929[Merge "unrecognized long opt" fix from 6.4.2
930Sven Panne <sven.panne@aedion.de>**20060506110519]
931[
932dons@cse.unsw.edu.au**20060506061029
933 Sat May  6 13:01:34 EST 2006  Don Stewart <dons@cse.unsw.edu.au>
934   * Do loopU realloc on the Haskell heap. And add a really tough stress test
935
936 Sat May  6 12:28:58 EST 2006  Don Stewart <dons@cse.unsw.edu.au>
937   * Use simple, 3x faster concat. Plus QC properties. Suggested by sjanssen and dcoutts
938
939 Sat May  6 15:59:31 EST 2006  Don Stewart <dons@cse.unsw.edu.au>
940   * dcoutt's packByte bug squashed
941
942   With inlinePerformIO, ghc head was compiling:
943
944    packByte 255 `compare` packByte 127
945
946   into roughly
947
948    case mallocByteString 2 of
949        ForeignPtr f internals ->
950             case writeWord8OffAddr# f 0 255 of _ ->
951             case writeWord8OffAddr# f 0 127 of _ ->
952             case eqAddr# f f of
953                    False -> case compare (GHC.Prim.plusAddr# f 0)
954                                          (GHC.Prim.plusAddr# f 0)
955
956   which is rather stunning. unsafePerformIO seems to prevent whatever
957   magic inlining was leading to this. Only affected the head.
958
959]
960[Add array fusion versions of map, filter and foldl
961dons@cse.unsw.edu.au**20060505060858
962
963 This patch adds fusable map, filter and foldl, using the array fusion
964 code for unlifted, flat arrays, from the Data Parallel Haskell branch,
965 after kind help from Roman Leshchinskiy,
966
967 Pipelines of maps, filters and folds should now need to walk the
968 bytestring once only, and intermediate bytestrings won't be constructed.
969
970]
971[fix for non-GHC
972Ross Paterson <ross@soi.city.ac.uk>**20060504093044]
973[use bracket in appendFile (like writeFile)
974Ross Paterson <ross@soi.city.ac.uk>**20060504091528]
975[writeFile: close the file on error
976Simon Marlow <simonmar@microsoft.com>**20060504084505
977 Suggested by Ross Paterson, via Neil Mitchell
978
979]
980[Sync with FPS head
981dons@cse.unsw.edu.au**20060503105259
982
983 This patch brings Data.ByteString into sync with the FPS head.
984 The most significant of which is the new Haskell counting sort.
985
986 Changes:
987
988 Sun Apr 30 18:16:29 EST 2006  sjanssen@cse.unl.edu
989   * Fix foldr1 in Data.ByteString and Data.ByteString.Char8
990
991 Mon May  1 11:51:16 EST 2006  Don Stewart <dons@cse.unsw.edu.au>
992   * Add group and groupBy. Suggested by conversation between sjanssen and petekaz on #haskell
993
994 Mon May  1 16:42:04 EST 2006  sjanssen@cse.unl.edu
995   * Fix groupBy to match Data.List.groupBy.
996
997 Wed May  3 15:01:07 EST 2006  sjanssen@cse.unl.edu
998   * Migrate to counting sort.
999
1000   Data.ByteString.sort used C's qsort(), which is O(n log n).  The new algorithm
1001   is O(n), and is faster for strings larger than approximately thirty bytes.  We
1002   also reduce our dependency on cbits!
1003
1004]
1005[improve performance of Integer->String conversion
1006Simon Marlow <simonmar@microsoft.com>**20060503113306
1007 See
1009
1010 Submitted by: bertram.felgenhauer@googlemail.com
1011
1012
1013]
1014[inline withMVar, modifyMVar, modifyMVar_
1015Simon Marlow <simonmar@microsoft.com>**20060503111152]
1016[Fix string truncating in hGetLine -- it was a pasto from Simon's code
1017Simon Marlow <simonmar@microsoft.com>**20060503103504
1018 (from Don Stewart)
1019]
1020[Merge in Data.ByteString head. Fixes ByteString+cbits in hugs
1021Don Stewart <dons@cse.unsw.edu.au>**20060429040733]
1022[Import Data.ByteString from fps 0.5.
1023Don Stewart <dons@cse.unsw.edu.au>**20060428130718
1024 Fast, packed byte vectors, providing a better PackedString.
1025
1026]
1027[fix previous patch
1028Ross Paterson <ross@soi.city.ac.uk>**20060501154847]
1029[fixes for non-GHC
1030Ross Paterson <ross@soi.city.ac.uk>**20060501144322]
1031[fix imports for mingw32 && !GHC
1032Ross Paterson <ross@soi.city.ac.uk>**20060427163248]
1033[RequireOrder: do not collect unrecognised options after a non-opt
1034Simon Marlow <simonmar@microsoft.com>**20060426121110
1035 The documentation for RequireOrder says "no option processing after
1036 first non-option", so it doesn't seem right that we should process the
1037 rest of the arguments to collect the unrecognised ones.  Presumably
1038 the client wants to know about the unrecognised options up to the
1039 first non-option, and will be using a different option parser for the
1040 rest of the command line.
1041
1042 eg. before:
1043
1044 Prelude System.Console.GetOpt> getOpt' RequireOrder [] ["bar","--foo"]
1045 ([],["bar","--foo"],["--foo"],[])
1046
1047 after:
1048
1049 Prelude System.Console.GetOpt> getOpt' RequireOrder [] ["bar","--foo"]
1050 ([],["bar","--foo"],[],[])
1051]
1052[fix for Haddock 0.7
1053Ashley Yakeley <ashley@semantic.org>**20060426072521]
1055Ashley Yakeley <ashley@semantic.org>**20060425071853]
1057Ross Paterson <ross@soi.city.ac.uk>**20060424102146]
1058[add superclasses to Applicative and Traversable
1059Ross Paterson <ross@soi.city.ac.uk>**20060411144734
1060
1061 Functor is now a superclass of Applicative, and Functor and Foldable
1062 are now superclasses of Traversable.  The new hierarchy makes clear the
1063 inclusions between the classes, but means more work in defining instances.
1064 Default definitions are provided to help.
1065]
1066[add Functor and Monad instances for Prelude types
1067Ross Paterson <ross@soi.city.ac.uk>**20060410111443]
1068[GHC.Base.breakpoint
1069Lemmih <lemmih@gmail.com>**20060407125827]
1070[Track the GHC source tree reorganisation
1071Simon Marlow <simonmar@microsoft.com>**20060407041631]
1072[in the show instance for Exception, print the type of dynamic exceptions
1073Simon Marlow <simonmar@microsoft.com>**20060406112444
1074 Unfortunately this requires some recursve module hackery to get at
1075 the show instance for Typeable.
1076]
1077[implement ForeignEnvPtr, newForeignPtrEnv, addForeignPtrEnv for GHC
1078Simon Marlow <simonmar@microsoft.com>**20060405155448]
1079[add  forkOnIO :: Int -> IO () -> IO ThreadId
1080Simon Marlow <simonmar@microsoft.com>**20060327135018]
1081[Rework previous: not a gcc bug after all
1082Simon Marlow <simonmar@microsoft.com>**20060323161229
1083 It turns out that we were relying on behaviour that is undefined in C,
1084 and undefined behaviour in C means "the compiler can do whatever the
1085 hell it likes with your entire program".  So avoid that.
1086]
1087[work around a gcc 4.1.0 codegen bug in -O2 by forcing -O1 for GHC.Show
1088Simon Marlow <simonmar@microsoft.com>**20060323134514
1089 See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=26824
1090]
1091[commit mysteriously missing parts of "runIOFastExit" patch
1092Simon Marlow <simonmar@microsoft.com>**20060321101535]
1093[add runIOFastExit :: IO a -> IO a
1094Simon Marlow <simonmar@microsoft.com>**20060320124333
1095 Similar to runIO, but calls stg_exit() directly to exit, rather than
1096 shutdownHaskellAndExit().  Needed for running GHCi in the test suite.
1097]
1098[Fix a broken invariant
1099Simon Marlow <simonmar@microsoft.com>**20060316134151
1100 Patch from #694,  for the problem "empty is an identity for <> and \$\$" is
1101 currently broken by eg. isEmpty (empty<>empty)"
1102]
1103[Add unsafeSTToIO :: ST s a -> IO a
1104Simon Marlow <simonmar@microsoft.com>**20060315160232
1105 Implementation for Hugs is missing, but should be easy.  We need this
1106 for the forthcoming nested data parallelism implementation.
1107]
1109jeanphilippe.bernardy@gmail.com**20060315143539
1110 Added 'alter :: (Maybe a -> Maybe a) -> k -> Map k a -> Map k a' to IntMap and Map
1111 This addresses ticket #665
1112]
1113[deprecate FunctorM in favour of Foldable and Traversable
1114Ross Paterson <ross@soi.city.ac.uk>**20060315092942
1115 as discussed on the libraries list.
1116]
1117[Simplify Eq, Ord, and Show instances for UArray
1118Simon Marlow <simonmar@microsoft.com>**20060313142701
1119 The Eq, Ord, and Show instances of UArray were written out longhand
1120 with one instance per element type.  It is possible to condense these
1121 into a single instance for each class, at the expense of using more
1122 extensions (non-std context on instance declaration).
1123
1124 Suggestion by: Frederik Eaton <frederik@ofb.net>
1125
1126]
1127[Oops typo in intSet notMember
1128jeanphilippe.bernardy@gmail.com**20060311224713]
1129[IntMap lookup now returns monad instead of Maybe.
1130jeanphilippe.bernardy@gmail.com**20060311224502]
1131[Added notMember to Data.IntSet and Data.IntMap
1132jeanphilippe.bernardy@gmail.com**20060311085221]
1133[add Data.Set.notMember and Data.Map.notMember
1134John Meacham <john@repetae.net>**20060309191806]
1135[addToClockTime: handle picoseconds properly
1136Simon Marlow <simonmar@microsoft.com>**20060310114532
1137 fixes #588
1138]
1139[make head/build rule apply to all types, not just Bool.
1140John Meacham <john@repetae.net>**20060303045753]
1141[Avoid overflow when normalising clock times
1142Ian Lynagh <igloo@earth.li>**20060210144638]
1143[Years have 365 days, not 30*365
1144Ian Lynagh <igloo@earth.li>**20060210142853]
1145[declare blkcmp() static
1146Simon Marlow <simonmar@microsoft.com>**20060223134317]
1147[typo in comment in Foldable class
1148Ross Paterson <ross@soi.city.ac.uk>**20060209004901]
1149[simplify fmap
1150Ross Paterson <ross@soi.city.ac.uk>**20060206095048]
1151[update ref in comment
1152Ross Paterson <ross@soi.city.ac.uk>**20060206095139]
1153[Give -foverlapping-instances to Data.Typeable
1154simonpj@microsoft**20060206133439
1155
1156 For some time, GHC has made -fallow-overlapping-instances "sticky":
1157 any instance in a module compiled with -fallow-overlapping-instances
1158 can overlap when imported, regardless of whether the importing module
1159 allows overlap.  (If there is an overlap, both instances must come from
1160 modules thus compiled.)
1161
1162 Instances in Data.Typeable might well want to be overlapped, so this
1163 commit adds the flag to Data.Typeable (with an explanatory comment)
1164
1165
1166]
1167[Add -fno-bang-patterns to modules using both bang and glasgow-exts
1168simonpj@microsoft.com**20060203175759]
1169[When splitting a bucket, keep the contents in the same order
1170Simon Marlow <simonmar@microsoft.com>**20060201130427
1171 To retain the property that multiple inserts shadow each other
1172 (see ticket #661, test hash001)
1173]
1174[add foldr/build optimisation for take and replicate
1175Simon Marlow <simonmar@microsoft.com>**20060126164603
1176 This allows take to be deforested, and improves performance of
1177 replicate and replicateM/replicateM_.  We have a separate problem that
1178 means expressions involving [n..m] aren't being completely optimised
1179 because eftIntFB isn't being inlined but otherwise the results look
1180 good.
1181
1182 Sadly this has invalidated a number of the nofib benchmarks which were
1183 erroneously using take to duplicate work in a misguided attempt to
1184 lengthen their runtimes (ToDo).
1185]
1186[Generate PrimopWrappers.hs with Haddock docs
1187Simon Marlow <simonmar@microsoft.com>**20060124131121
1188 Patch originally from Dinko Tenev <dinko.tenev@gmail.com>, modified
1189 to add log message by me.
1190]
1191[[project @ 2006-01-19 14:47:15 by ross]
1192ross**20060119144715
1193 backport warning avoidance from Haddock
1194]
1195[[project @ 2006-01-18 11:45:47 by malcolm]
1196malcolm**20060118114547
1197 Fix import of Ix for nhc98.
1198]
1199[[project @ 2006-01-17 09:38:38 by ross]
1200ross**20060117093838
1201 add Ix instance for GeneralCategory.
1202]
1203[TAG Initial conversion from CVS complete
1204John Goerzen <jgoerzen@complete.org>**20060112154126]
1205Patch bundle hash:
1206fe9dc0b895d0a5b427892f89d906696158dbf4f5