Ticket #2643: fromAscList_BF.patch

File fromAscList_BF.patch, 70.0 KB (added by sedillard, 6 years ago)
Line 
1
2New patches:
3
4[O(n) fromAscList IntSet / IntMap
5sedillard@gmail.com**20080521195941
6 
7 Added algorithm by Scott Dillard and Bertram Felgenhauer to build IntSets and
8 IntMaps from sorted input in linear time. Also changed quickcheck prop_Ordered
9 (no longer a tautology!) to include negative and duplicate keys.
10 
11] {
12hunk ./Data/IntMap.hs 175
13-import Debug.QuickCheck
14+import Test.QuickCheck
15hunk ./Data/IntMap.hs 1451
16--- | /O(n*min(n,W))/. Build a map from a list of key\/value pairs where
17+-- | /O(n)/. Build a map from a list of key\/value pairs where
18hunk ./Data/IntMap.hs 1459
19-  = fromList xs
20+  = fromAscListWithKey (\k x y -> x) xs
21hunk ./Data/IntMap.hs 1461
22--- | /O(n*min(n,W))/. Build a map from a list of key\/value pairs where
23+-- | /O(n)/. Build a map from a list of key\/value pairs where
24hunk ./Data/IntMap.hs 1463
25+-- /The precondition (input list is ascending) is not checked./
26hunk ./Data/IntMap.hs 1469
27-  = fromListWith f xs
28+  = fromAscListWithKey (\k x y -> f x y) xs
29hunk ./Data/IntMap.hs 1471
30--- | /O(n*min(n,W))/. Build a map from a list of key\/value pairs where
31+-- | /O(n)/. Build a map from a list of key\/value pairs where
32hunk ./Data/IntMap.hs 1473
33+-- /The precondition (input list is ascending) is not checked./
34hunk ./Data/IntMap.hs 1478
35-fromAscListWithKey f xs
36-  = fromListWithKey f xs
37+fromAscListWithKey _ []     = Nil
38+fromAscListWithKey f (x:xs) = fromDistinctAscList (combineEq x xs)
39+  where
40+    -- [combineEq f xs] combines equal elements with function [f] in an ordered list [xs]
41+    combineEq z [] = [z]
42+    combineEq z@(kz,zz) (x@(kx,xx):xs)
43+      | kx==kz    = let yy = f kx xx zz in combineEq (kx,yy) xs
44+      | otherwise = z:combineEq x xs
45hunk ./Data/IntMap.hs 1487
46--- | /O(n*min(n,W))/. Build a map from a list of key\/value pairs where
47+-- | /O(n)/. Build a map from a list of key\/value pairs where
48hunk ./Data/IntMap.hs 1489
49+-- /The precondition (input list is strictly ascending) is not checked./
50hunk ./Data/IntMap.hs 1494
51-fromDistinctAscList xs
52-  = fromList xs
53+fromDistinctAscList []     = Nil
54+fromDistinctAscList (z:zs) = work z zs Nada
55+  where
56+    work x@(kx,vx) []            stk = finish kx (Tip kx vx) stk
57+    work x@(kx,vx) (z@(kz,_):zs) stk = reduce z zs (branchMask kx kz) kx (Tip kx vx) stk
58+
59+    reduce :: (Key,a) -> [(Key,a)] -> Mask -> Prefix -> IntMap a -> Stack a -> IntMap a
60+    reduce z zs _ px tx Nada = work z zs (Push px tx Nada)
61+    reduce z zs m px tx stk@(Push py ty stk') =
62+        let mxy = branchMask px py
63+            pxy = mask px mxy
64+        in  if shorter m mxy
65+                 then reduce z zs m pxy (Bin pxy mxy ty tx) stk'
66+                 else work z zs (Push px tx stk)
67+
68+    finish _  t  Nada = t
69+    finish px tx (Push py ty stk) = finish p (join py ty px tx) stk
70+        where m = branchMask px py
71+              p = mask px m
72+
73+data Stack a = Push {-# UNPACK #-} !Prefix !(IntMap a) !(Stack a) | Nada
74hunk ./Data/IntMap.hs 1864
75-    let xs = [(x,()) | x <- [0..n::Int]]
76+    let xs = concat [[(x-n,()),(x-n,())] | x <- [0..2*n::Int]]
77hunk ./Data/IntSet.hs 680
78--- | /O(n*min(n,W))/. Build a set from an ascending list of elements.
79+-- | /O(n)/. Build a set from an ascending list of elements.
80+-- /The precondition (input list is ascending) is not checked./
81hunk ./Data/IntSet.hs 683
82-fromAscList xs
83-  = fromList xs
84+fromAscList [] = Nil
85+fromAscList (x:xs) = fromDistinctAscList (combineEq x xs)
86+  where
87+    combineEq x' [] = [x']
88+    combineEq x' (x:xs)
89+      | x==x'     = combineEq x' xs
90+      | otherwise = x' : combineEq x xs
91hunk ./Data/IntSet.hs 691
92--- | /O(n*min(n,W))/. Build a set from an ascending list of distinct elements.
93+-- | /O(n)/. Build a set from an ascending list of distinct elements.
94+-- /The precondition (input list is strictly ascending) is not checked./
95hunk ./Data/IntSet.hs 694
96-fromDistinctAscList xs
97-  = fromList xs
98+fromDistinctAscList []     = Nil
99+fromDistinctAscList (z:zs) = work z zs Nada
100+  where
101+    work x []     stk = finish x (Tip x) stk
102+    work x (z:zs) stk = reduce z zs (branchMask z x) x (Tip x) stk
103+
104+    reduce z zs _ px tx Nada = work z zs (Push px tx Nada)
105+    reduce z zs m px tx stk@(Push py ty stk') =
106+        let mxy = branchMask px py
107+            pxy = mask px mxy
108+        in  if shorter m mxy
109+                 then reduce z zs m pxy (Bin pxy mxy ty tx) stk'
110+                 else work z zs (Push px tx stk)
111+
112+    finish _  t  Nada = t
113+    finish px tx (Push py ty stk) = finish p (join py ty px tx) stk
114+        where m = branchMask px py
115+              p = mask px m
116+
117+data Stack = Push {-# UNPACK #-} !Prefix !IntSet !Stack | Nada
118hunk ./Data/IntSet.hs 1050
119-    let xs = [0..n::Int]
120+    let xs = concat [[i-n,i-n]|i<-[0..2*n :: Int]]
121hunk ./Data/Set.hs 1
122+{-# OPTIONS -cpp #-}
123}
124
125Context:
126
127[record libraries@haskell.org as maintainer
128Ross Paterson <ross@soi.city.ac.uk>**20080425141754]
129[Improved, fixed documentation, some minor issues for Data.Map, Data.IntMap. Added examples.
130apa3a@yahoo.com**20080204184756]
131[make deepL/R a little more lazy
132Ross Paterson <ross@soi.city.ac.uk>**20080315153030]
133[document behaviour for out-of-range indices
134Ross Paterson <ross@soi.city.ac.uk>**20080315152925]
135[Fix a link in haddock docs
136Ian Lynagh <igloo@earth.li>**20071126184450]
137[Fix some URLs
138Ian Lynagh <igloo@earth.li>**20071126214233]
139[Add tiny regression test
140David Benbennick <dbenbenn@gmail.com>**20071113045358]
141[Fix ticket 1762
142David Benbennick <dbenbenn@gmail.com>**20071111201939]
143[Specify build-type: Simple
144Duncan Coutts <duncan@haskell.org>**20071018125404]
145[Add a boring file
146Ian Lynagh <igloo@earth.li>**20070913204647]
147[TAG 2007-09-13
148Ian Lynagh <igloo@earth.li>**20070913215901]
149[TAG ghc-6.8 branched 2007-09-03
150Ian Lynagh <igloo@earth.li>**20070903155607]
151[expand description
152Ross Paterson <ross@soi.city.ac.uk>**20070819235542]
153[include Typeable.h in package
154Ross Paterson <ross@soi.city.ac.uk>**20070819234048]
155[We need Data.Generics.Instances (Data []) for the Data Tree instance
156Ian Lynagh <igloo@earth.li>**20070812183802]
157[Move Data.Foldable and Data.Traversable back to base
158Ian Lynagh <igloo@earth.li>**20070812165728]
159[Fix datamap001 test
160Ian Lynagh <igloo@earth.li>**20070803181553]
161[Move the datamap001 test from base to here
162Ian Lynagh <igloo@earth.li>**20070803180858]
163[We now depend on the array package
164Ian Lynagh <igloo@earth.li>**20070801235655]
165[Remove the rest of base to leave a "containers" package
166Ian Lynagh <igloo@earth.li>**20070801223831]
167[Remove System.Posix.Signals (moving to unix)
168Ian Lynagh <igloo@earth.li>**20070729215213]
169[bytestring is now in its own package
170Ian Lynagh <igloo@earth.li>**20070729132215]
171[Export throwErrnoPath* functions
172Ian Lynagh <igloo@earth.li>**20070722002923]
173[Add simple haddock docs for throwErrnoPath* functions
174Ian Lynagh <igloo@earth.li>**20070722002817]
175[Move throwErrnoPath* functions from unix:System.Posix.Error
176Ian Lynagh <igloo@earth.li>**20070722002746]
177[Temporarily fix breakage for nhc98.
178Malcolm.Wallace@cs.york.ac.uk**20070801163750
179 A recent patch to System.IO introduced a cyclic dependency on Foreign.C.Error,
180 and also inadvertently dragged along System.Posix.Internals which has
181 non-H'98 layout, causing many build problems.  The solution for now
182 is to #ifndef __NHC__ all of the recent the openTempFile additions,
183 and mark them non-portable once again.  (I also took the opportunity
184 to note a number of other non-portable functions in their Haddock
185 comments.)
186]
187[Generalise the type of synthesize, as suggested by Trac #1571
188simonpj@microsoft**20070801125208
189 
190 I have not looked at the details, but the type checker is happy with the
191 more general type, and more general types are usually a Good Thing.
192 
193]
194[Fix fdToHandle on Windows
195Ian Lynagh <igloo@earth.li>**20070730133139
196 The old setmode code was throwing an exception, and I'm not sure it is
197 meant to do what we need anyway. For now we assume that all FDs are
198 both readable and writable.
199]
200[Correct Windows OS name in cabal configuration
201Ian Lynagh <igloo@earth.li>**20070729161739]
202[Use cabal configurations rather than Setup hacks
203Ian Lynagh <igloo@earth.li>**20070729132157]
204[Handle buffers should be allocated with newPinnedByteArray# always
205Simon Marlow <simonmar@microsoft.com>**20070725095550
206 Not just on Windows.  This change is required because we now use safe
207 foreign calls for I/O on blocking file descriptors with the threaded
208 RTS.  Exposed by concio001.thr on MacOS X: MacOS apparently uses
209 smaller buffers by default, so they weren't being allocated as large
210 objects.
211 
212]
213[fix Hugs implementation of openTempFile
214Ross Paterson <ross@soi.city.ac.uk>**20070724114003]
215[Hugs only: avoid dependency cycle
216Ross Paterson <ross@soi.city.ac.uk>**20070724113852]
217[open(Binary)TempFile is now portable
218Ian Lynagh <igloo@earth.li>**20070722152752]
219[Tweak temporary file filename chooser
220Ian Lynagh <igloo@earth.li>**20070722105445]
221[Move open(Binary)TempFile to System.IO
222Ian Lynagh <igloo@earth.li>**20070722010205]
223[Rename openFd to fdToHandle'
224Ian Lynagh <igloo@earth.li>**20070721235538
225 The name collision with System.Posix.IO.openFd made my brain hurt.
226]
227[Add a test for Data.Map, for a bug on the libraries@ list
228Ian Lynagh <igloo@earth.li>**20070721002119]
229[fix Data.Map.updateAt
230Bertram Felgenhauer <int-e@gmx.de>**20070718150340
231 See http://haskell.org/pipermail/libraries/2007-July/007785.html for a piece
232 of code triggering the bug. updateAt threw away parts of the tree making up
233 the map.
234]
235[in hClose, free the handle buffer by replacing it with an empty one
236Simon Marlow <simonmar@microsoft.com>**20070719161419
237 This helps reduce the memory requirements for a closed but unfinalised
238 Handle.
239]
240[Implement GHC.Environment.getFullArgs
241Ian Lynagh <igloo@earth.li>**20070717141918
242 This returns all the arguments, including those normally eaten by the
243 RTS (+RTS ... -RTS).
244 This is mainly for ghc-inplace, where we need to pass /all/ the
245 arguments on to the real ghc. e.g. ioref001(ghci) was failing because
246 the +RTS -K32m -RTS wasn't getting passed on.
247]
248[Define stripPrefix; fixes trac #1464
249Ian Lynagh <igloo@earth.li>**20070714235204]
250[no need to hide Maybe
251Malcolm.Wallace@cs.york.ac.uk**20070710154058]
252[Add a more efficient Data.List.foldl' for GHC (from GHC's utils/Util.lhs)
253Ian Lynagh <igloo@earth.li>**20070706205526]
254[Remove include-dirs ../../includes and ../../rts
255Ian Lynagh <igloo@earth.li>**20070705205356
256 We get these by virtue of depending on the rts package.
257]
258[FIX #1131 (newArray_ allocates an array full of garbage)
259Simon Marlow <simonmar@microsoft.com>**20070704102020
260 Now newArray_ returns a deterministic result in the ST monad, and
261 behaves as before in other contexts.  The current newArray_ is renamed
262 to unsafeNewArray_; the MArray class therefore has one more method
263 than before.
264]
265[change nhc98 option from -prelude to --prelude
266Malcolm.Wallace@cs.york.ac.uk**20070702150355]
267[Word is a type synonym in nhc98 - so class instance not permitted.
268Malcolm.Wallace@cs.york.ac.uk**20070629122035]
269[fix bug in writes to blocking FDs in the non-threaded RTS
270Simon Marlow <simonmar@microsoft.com>**20070628134320]
271[Modernize printf.
272lennart.augustsson@credit-suisse.com**20070628083852
273 
274 Add instances for Int8, Int16, Int32, Int64, Word, Word8, Word16, Word32, and
275 Word64.
276 Handle + flag.
277 Handle X, E, and G formatting characters.
278 Rewrite internals to make it simpler.
279]
280[Speed up number printing and remove the need for Array by using the standard 'intToDigit' routine
281John Meacham <john@repetae.net>**20070608182353]
282[Use "--  //" (2 spaces) rather than "-- //" (1) to avoid tripping haddock up
283Ian Lynagh <igloo@earth.li>**20070627010930
284 Are we nearly there yet?
285]
286[Use a combination of Haskell/C comments to ensure robustness.
287Malcolm.Wallace@cs.york.ac.uk**20070626095222
288 e.g. -- // ensures that _no_ preprocessor will try to tokenise the
289 rest of the line.
290]
291[Change C-style comments to Haskell-style.
292Malcolm.Wallace@cs.york.ac.uk**20070625094515
293 These two headers are only ever used for pre-processing Haskell code,
294 and are never seen by any C tools except cpp.  Using the Haskell comment
295 convention means that cpphs no longer needs to be given the --strip
296 option to remove C comments from open code.  This is a Good Thing,
297 because all of /* */ and // are valid Haskell operator names, and there
298 is no compelling reason to forbid using them in files which also happen
299 to have C-preprocessor directives.
300]
301[makefileHook needs to generate PrimopWrappers.hs too
302Simon Marlow <simonmar@microsoft.com>**20070622073424]
303[Hugs now gets MonadFix(mfix) from its prelude
304Ross Paterson <ross@soi.city.ac.uk>**20070620000343]
305[Typo (consUtils.hs -> consUtils.h)
306Ian Lynagh <igloo@earth.li>**20070619124140]
307[install dependent include files and Typeable.h
308Bertram Felgenhauer <int-e@gmx.de>**20070613041734]
309[update prototype following inputReady->fdReady change
310Simon Marlow <simonmar@microsoft.com>**20070614095309]
311[FIX hGetBuf001: cut-and-pasto in readRawBufferNoBlock
312Simon Marlow <simonmar@microsoft.com>**20070614094222]
313[fix description of CWStringLen
314Ross Paterson <ross@soi.city.ac.uk>**20070605223345]
315[Remove unsafeCoerce-importing kludgery in favor of Unsafe.Coerce
316Isaac Dupree <id@isaac.cedarswampstudios.org>**20070601203625]
317[--configure-option and --ghc-option are now provided by Cabal
318Ross Paterson <ross@soi.city.ac.uk>**20070604115233]
319[Data.PackedString: Data.Generics is GHC-only
320Ross Paterson <ross@soi.city.ac.uk>**20070529232427]
321[Add Data instance for PackedString; patch from greenrd in trac #1263
322Ian Lynagh <igloo@earth.li>**20070529205420]
323[Control.Concurrent documentation fix
324shae@ScannedInAvian.com**20070524163325]
325[add nhc98-options: field to .cabal file
326Malcolm.Wallace@cs.york.ac.uk**20070528122626]
327[add a dummy implementation of System.Timeout.timeout for nhc98
328Malcolm.Wallace@cs.york.ac.uk**20070528110309]
329[Add System.Timeout to base.cabal
330Ian Lynagh <igloo@earth.li>**20070527123314
331 Filtered out for non-GHC by Setup.hs.
332]
333[add module Data.Fixed to nhc98 build
334Malcolm.Wallace@cs.york.ac.uk**20070525141021]
335[DIRS now lives in package Makefile, not script/pkgdirlist
336Malcolm.Wallace@cs.york.ac.uk**20070525111749]
337[delete unused constants
338Ross Paterson <ross@soi.city.ac.uk>**20070525001741]
339[remove System.Cmd and System.Time too
340Malcolm.Wallace@cs.york.ac.uk**20070524163200]
341[remove locale as well
342Malcolm.Wallace@cs.york.ac.uk**20070524161943]
343[nhc98 version of instance Show (a->b) copied from Prelude
344Malcolm.Wallace@cs.york.ac.uk**20070524160615]
345[remove directory, pretty, and random bits from base for nhc98
346Malcolm.Wallace@cs.york.ac.uk**20070524160608]
347[Remove Makefile and package.conf.in (used in the old build system)
348Ian Lynagh <igloo@earth.li>**20070524142545]
349[Split off process package
350Ian Lynagh <igloo@earth.li>**20070523210523]
351[Fix comment: maperrno is in Win32Utils.c, not runProcess.c
352Ian Lynagh <igloo@earth.li>**20070523181331]
353[System.Locale is now split out
354Ian Lynagh <igloo@earth.li>**20070519132638]
355[Split off directory, random and old-time packages
356Ian Lynagh <igloo@earth.li>**20070519120642]
357[Remove Control.Parallel*, now in package parallel
358Ian Lynagh <igloo@earth.li>**20070518165431]
359[Remove the pretty-printing modules (now in package pretty(
360Ian Lynagh <igloo@earth.li>**20070518162521]
361[add install-includes: field
362Simon Marlow <simonmar@microsoft.com>**20070517094948]
363[correct the documentation for newForeignPtr
364Simon Marlow <simonmar@microsoft.com>**20070516082019]
365[When doing safe writes, handle EAGAIN rather than raising an exception
366Simon Marlow <simonmar@microsoft.com>**20070515114615
367 It might be that stdin was set to O_NONBLOCK by someone else, and we
368 should handle this case.  (this happens with GHCi, I'm not quite sure why)
369]
370[Use FilePath to make paths when building GHC/Prim.hs and GHC/PrimopWrappers.hs
371Ian Lynagh <igloo@earth.li>**20070514110409]
372[Build GHC/Prim.hs and GHC/PrimopWrappers.hs from Cabal
373Ian Lynagh <igloo@earth.li>**20070509142655]
374[fix imports for non-GHC
375Ross Paterson <ross@soi.city.ac.uk>**20070513001138]
376[Give an example of how intersection takes elements from the first set
377Ian Lynagh <igloo@earth.li>**20070512160253]
378[further clarify the docs for 'evaluate'
379Malcolm.Wallace@cs.york.ac.uk**20070508101124]
380[improve documentation for evaluate
381Simon Marlow <simonmar@microsoft.com>**20070508081712]
382[FIX: #724 (tee complains if used in a process started by ghc)
383Simon Marlow <simonmar@microsoft.com>**20070507123537
384 
385 Now, we only set O_NONBLOCK on file descriptors that we create
386 ourselves.  File descriptors that we inherit (stdin, stdout, stderr)
387 are kept in blocking mode.  The way we deal with this differs between
388 the threaded and non-threaded runtimes:
389 
390  - with -threaded, we just make a safe foreign call to read(), which
391    may block, but this is ok.
392 
393  - without -threaded, we test the descriptor with select() before
394    attempting any I/O.  This isn't completely safe - someone else
395    might read the data between the select() and the read() - but it's
396    a reasonable compromise and doesn't seem to measurably affect
397    performance.
398]
399[the "unknown" types are no longer required
400Simon Marlow <simonmar@microsoft.com>**20070426135931]
401[Make Control.Exception buildable by nhc98.
402Malcolm.Wallace@cs.york.ac.uk**20070504105548
403 The nhc98 does not have true exceptions, but these additions should be
404 enough infrastructure to pretend that it does.  Only IO exceptions will
405 actually work.
406]
407[Trim imports, remove a cycle
408simonpj@microsoft**20070503123010
409 
410 A first attempt at removing gratuitous cycles in the base package.
411 I've removed the useless module GHC.Dynamic, which gets rid of a cycle;
412 and trimmed off various unnecesary imports.
413 
414 This also fixes the IsString import problem.
415 
416]
417[Be less quiet about building the base package
418simonpj@microsoft**20070503093707]
419[Remove Splittable class (a vestige of linear implicit parameters)
420simonpj@microsoft**20070221104329]
421[Add IsString to exports of GHC.Exts
422simonpj@microsoft**20070221104249]
423[tweak documentation as per suggestion from Marc Weber on libraries@haskell.org
424Simon Marlow <simonmar@microsoft.com>**20070426075921]
425[Add extra libraries when compiling with GHC on Windows
426Ian Lynagh <igloo@earth.li>**20070424213127]
427[Follow Cabal changes in Setup.hs
428Ian Lynagh <igloo@earth.li>**20070418114345]
429[inclusion of libc.h is conditional on __APPLE__
430Malcolm.Wallace@cs.york.ac.uk**20070417085556]
431[MERGE: fix ugly uses of memcpy foreign import inside ST
432Simon Marlow <simonmar@microsoft.com>**20070416101530
433 fixes cg026
434]
435[Fix configure with no --with-cc
436Ian Lynagh <igloo@earth.li>**20070415165143]
437[MacOS 10.3 needs #include <libc.h> as well
438Malcolm.Wallace@cs.york.ac.uk**20070414155507]
439[For nhc98 only, use hsc2hs to determine System.Posix.Types.
440Malcolm.Wallace@cs.york.ac.uk**20070413155831
441 Avoids the existing autoconf stuff, by introducing an auxiliary module
442 called NHC.PosixTypes that uses hsc2hs, which is then simply re-exported
443 from System.Posix.Types.
444]
445[we need a makefileHook too
446Simon Marlow <simonmar@microsoft.com>**20070413151307]
447[Remove unnecesary SOURCE import of GHC.Err in GHC.Pack
448Ian Lynagh <igloo@earth.li>**20070412235908]
449[add System.Posix.Types to default nhc98 build
450Malcolm.Wallace@cs.york.ac.uk**20070412195026]
451[mark System.IO.openTempFile as non-portable in haddocks
452Malcolm.Wallace@cs.york.ac.uk**20070412135359]
453[Don't turn on -Werror in Data.Fixed
454Ian Lynagh <igloo@earth.li>**20070411155721
455 This may be responsible for the x86_64/Linux nightly build failing.
456]
457[Fix -Wall warnings
458Ian Lynagh <igloo@earth.li>**20070411004929]
459[Add missing case in removePrefix
460Ian Lynagh <igloo@earth.li>**20070411002537]
461[Allow additional options to pass on to ./configure to be given
462Ian Lynagh <igloo@earth.li>**20070406151856]
463[Hugs only: fix location of unsafeCoerce
464Ross Paterson <ross@soi.city.ac.uk>**20070406113731]
465[fix isPortableBuild test
466Ross Paterson <ross@soi.city.ac.uk>**20070406111304]
467[Unsafe.Coerce doesn't need Prelude
468Ian Lynagh <igloo@earth.li>**20070405175930]
469[make Setup and base.cabal suitable for building the libraries with GHC
470Ian Lynagh <igloo@earth.li>**20070308163824]
471[HsByteArray doesn't exist
472Ian Lynagh <igloo@earth.li>**20070404163051]
473[Don't use Fd/FD in foreign decls
474Ian Lynagh <igloo@earth.li>**20070404155822
475 Using CInt makes it much easier to verify that it is right, and we won't
476 get caught out by possible newtype switches between CInt/Int.
477]
478[HsByteArray doesn't exist
479Ian Lynagh <igloo@earth.li>**20070404155732]
480[Fix braino
481Ian Lynagh <igloo@earth.li>**20070404144508]
482[Fix incorrect changes to C types in a foreign import for nhc98.
483Malcolm.Wallace@cs.york.ac.uk**20070404120954
484 If we use type CTime, it needs to be imported.  Also, CTime is not an
485 instance of Integral, so use some other mechanism to convert it.
486]
487[Fix C/Haskell type mismatches
488Ian Lynagh <igloo@earth.li>**20070403194943]
489[add new module Unsafe.Coerce to build system
490Malcolm.Wallace@cs.york.ac.uk**20070403131333]
491[Fix type mismatches between foreign imports and HsBase.h
492Ian Lynagh <igloo@earth.li>**20070403001611
493 
494 Merge to stable, checking for interface changes.
495]
496[put 'unsafeCoerce' in a standard location
497Malcolm.Wallace@cs.york.ac.uk**20061113114103]
498[fix for nhc98 build
499Malcolm.Wallace@cs.york.ac.uk**20070402141712]
500[Function crossMapP for fixing desugaring of comprehensions
501Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20070402082906
502 
503 Merge into 6.6 branch.
504]
505[Add min/max handling operations for IntSet/IntMap
506jeanphilippe.bernardy@gmail.com**20070315072352]
507[Monoid instance for Maybe and two wrappers: First and Last. trac proposal #1189
508Jeffrey Yasskin <jyasskin@gmail.com>**20070309062550]
509[Fix the type of wgencat
510Ian Lynagh <igloo@earth.li>**20070329164223]
511[fix strictness of foldr/build rule for take, see #1219
512Simon Marlow <simonmar@microsoft.com>**20070327103941]
513[remove Makefile.inc (only affects nhc98)
514Malcolm.Wallace@cs.york.ac.uk**20070320120057]
515[copyBytes copies bytes, not elements; fixes trac #1203
516Ian Lynagh <igloo@earth.li>**20070312113555]
517[Add ioeGetLocation, ioeSetLocation to System/IO/Error.hs; trac #1191
518Ian Lynagh <igloo@earth.li>**20070304130315]
519[fix race condition in prodServiceThread
520Simon Marlow <simonmar@microsoft.com>**20070307134330
521 See #1187
522]
523[Prevent duplication of unsafePerformIO on a multiprocessor
524Simon Marlow <simonmar@microsoft.com>**20070306145424
525 Fixes #986.  The idea is to add a new operation
526 
527   noDuplicate :: IO ()
528 
529 it is guaranteed that if two threads have executed noDuplicate, then
530 they are not duplicating any computation.
531 
532 We now provide two new unsafe operations:
533 
534 unsafeDupablePerformIO    :: IO a -> a
535 unsafeDupableInterleaveIO :: IO a -> IO a
536 
537 which are equivalent to the old unsafePerformIO and unsafeInterleaveIO
538 respectively.  The new versions of these functions are defined as:
539 
540 unsafePerformIO    m = unsafeDupablePerformIO (noDuplicate >> m)
541 unsafeInterleaveIO m = unsafeDupableInterleaveIO (noDuplicate >> m)
542]
543[expand docs for forkOS
544Simon Marlow <simonmar@microsoft.com>**20070305160921]
545[document timeout limitations
546Peter Simons <simons@cryp.to>**20070228223540]
547[So many people were involved in the writing of this module that
548Peter Simons <simons@cryp.to>**20070228223415
549 it feels unfair to single anyone out as the lone copyright
550 holder.
551]
552[This patch adds a timeout function to the base libraries. Trac #980 is
553Peter Simons <simons@cryp.to>**20070126222615
554 concerned with this issue. The design guideline for this implementation
555 is that 'timeout N E' should behave exactly the same as E as long as E
556 doesn't time out. In our implementation, this means that E has the same
557 myThreadId it would have without the timeout wrapper. Any exception E
558 might throw cancels the timeout and propagates further up. It also
559 possible for E to receive exceptions thrown to it by another thread.
560]
561[PArr: fixed permutations
562Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20070305055807]
563[Add Data.String, containing IsString(fromString); trac proposal #1126
564Ian Lynagh <igloo@earth.li>**20070130134841
565 This is used by the overloaded strings extension (-foverloaded-strings in GHC).
566]
567[GHC.PArr: add bounds checking
568Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20070302053224]
569[Bump nhc98 stack size for System/Time.hsc
570sven.panne@aedion.de**20070301153009]
571[FDs are CInts now, fixing non-GHC builds
572sven.panne@aedion.de**20070225105620]
573[Fixed PArr.dropP
574Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20070222032405
575 - Thanks to Audrey Tang for the bug report
576]
577[Keep the same FD in both halves of a duplex handle when dup'ing
578Ian Lynagh <igloo@earth.li>**20070220141039
579 Otherwise we only close one of the FDs when closing the handle.
580 Fixes trac #1149.
581]
582[Remove more redundant FD conversions
583Ian Lynagh <igloo@earth.li>**20070220092520]
584[Fix FD changes on Windows
585Ian Lynagh <igloo@earth.li>**20070220091516]
586[Consistently use CInt rather than Int for FDs
587Ian Lynagh <igloo@earth.li>**20070219233854]
588[Fix the types of minView/maxView (ticket #1134)
589jeanphilippe.bernardy@gmail.com**20070210065115]
590[fix for hashString, from Jan-Willem Maessen (see #1137)
591Simon Marlow <simonmar@microsoft.com>**20070215094304
592 
593]
594[fix to getUSecOfDay(): arithmetic was overflowing
595Simon Marlow <simonmar@microsoft.com>**20070214161719]
596[The Windows counterpart to 'wrapround of thread delays'
597Ian Lynagh <igloo@earth.li>**20070209173510]
598[wrapround of thread delays
599Neil Davies <SemanticPhilosopher@gmail.com>**20070129160519
600 
601   * made the wrapround of the underlying O/S occur before the wrapround
602     of the delayed threads by making threads delay in microseconds since
603     O/S epoch (1970 - Unix, 1601 - Windows) stored in Word64.
604   * removed redundant calls reading O/S realtime clock
605   * removed rounding to 1/50th of sec for timers
606   * Only for Unix version of scheduler.
607]
608[Whitespace changes only
609Ian Lynagh <igloo@earth.li>**20070206232722]
610[Add some type sigs
611Ian Lynagh <igloo@earth.li>**20070206232439]
612[Use static inline rather than extern inline/inline
613Ian Lynagh <igloo@earth.li>**20070205203628
614 I understand this is more portable, and it also fixes warnings when
615 C things we are wrapping are themselves static inlines (which FD_ISSET
616 is on ppc OS X).
617]
618[add derived instances for Dual monoid
619Ross Paterson <ross@soi.city.ac.uk>**20070202190847]
620[add doc pointers to Foldable
621Ross Paterson <ross@soi.city.ac.uk>**20070202110931
622 
623 Could be applied to STABLE.
624]
625[Eliminate some warnings
626Ian Lynagh <igloo@earth.li>**20060729220854
627 Eliminate warnings in the libraries caused by mixing pattern matching
628 with numeric literal matching.
629]
630[Remove IsString(fromString) from the Prelude
631Ian Lynagh <igloo@earth.li>**20070130124136]
632[Add Kleisli composition
633Don Stewart <dons@cse.unsw.edu.au>**20061113015442]
634[IsString is GHC-only (so why is it in the Prelude?)
635Ross Paterson <ross@soi.city.ac.uk>**20070123183007]
636[Applicative and Monad instances for Tree
637Ross Paterson <ross@soi.city.ac.uk>**20070115174510]
638[Add IsString class for overloaded string literals.
639lennart@augustsson.net**20061221210532]
640[Added examples, more detailed documentation to Data.List Extracting sublists functions
641Andriy Palamarchuk <apa3a@yahoo.com>**20061204164710]
642[fix threadDelay
643Simon Marlow <simonmar@microsoft.com>**20070117091702
644 In "Add support for the IO manager thread" I accidentally spammed part
645 of "Make sure the threaded threadDelay sleeps at least as long as it
646 is asked", which is why the ThreadDelay001 test has been failing.
647]
648[update section on "blocking"
649Simon Marlow <simonmar@microsoft.com>**20070116124328]
650[Fix crash with   (minBound :: Int*) `div (-1)   as result is maxBound + 1.
651Ian Lynagh <igloo@earth.li>**20070115142005]
652[version of example using Tomasz Zielonka's technique
653Ross Paterson <ross@soi.city.ac.uk>**20070105175907]
654[Added Unknowns for higher kinds
655Pepe Iborra <mnislaih@gmail.com>**20061108155938]
656[Improved the Show instance for Unknown
657Pepe Iborra <mnislaih@gmail.com>**20060813111816]
658[Show instance for GHC.Base.Unknown
659mnislaih@gmail.com**20060801233530]
660[Introduce Unknowns for the closure viewer. Add breakpointCond which was missing
661mnislaih@gmail.com**20060725174537]
662[Fix missing comma in Fractional documentation
663Alec Berryman <alec@thened.net>**20061201173237]
664[Mention that throwTo does not guarantee promptness of delivery
665simonpj@microsoft**20061211123215]
666[Add note about synhronous delivery of throwTo
667simonpj@microsoft**20061211122257]
668[documentation for installHandler
669Simon Marlow <simonmar@microsoft.com>**20061205154927
670 merge to 6.6
671]
672[dos2unix
673Simon Marlow <simonmar@microsoft.com>**20061204095439]
674[don't try to compile this on Unix
675Simon Marlow <simonmar@microsoft.com>**20061204095427]
676[TAG 6.6 release
677Ian Lynagh <igloo@earth.li>**20061011124740]
678[TAG Version 2.1
679Ian Lynagh <igloo@earth.li>**20061009114014]
680[Bump version number
681Ian Lynagh <igloo@earth.li>**20061009114009]
682[Add support for the IO manager thread on Windows
683Simon Marlow <simonmar@microsoft.com>**20061201152042
684 Fixes #637.  The test program in that report now works for me with
685 -threaded, but it doesn't work without -threaded (I don't know if
686 that's new behaviour or not, though).
687]
688[deriving (Eq, Ord, Enum, Show, Read, Typeab) for ConsoleEvent
689Simon Marlow <simonmar@microsoft.com>**20061201144032]
690[Make sure the threaded threadDelay sleeps at least as long as it is asked to
691Ian Lynagh <igloo@earth.li>**20061128204807]
692[Add comments about argument order to the definitions of gmapQ and constrFields
693simonpj@microsoft**20061124164505]
694[Hugs: add Control.Parallel.Strategies
695Ross Paterson <ross@soi.city.ac.uk>**20061124161039]
696[Move instance of Show Ptr to Ptr.hs (fewer orphans)
697simonpj@microsoft.com**20061124100639]
698[Add type signatures
699simonpj@microsoft.com**20061124100621]
700[Add an example of the use of unfoldr, following doc feedback from dozer
701Don Stewart <dons@cse.unsw.edu.au>**20061124011249]
702[trim imports
703Ross Paterson <ross@soi.city.ac.uk>**20061123190352]
704[Data.Graph is now portable (enable for nhc98)
705Malcolm.Wallace@cs.york.ac.uk**20061123174913]
706[remove Data.FunctorM and Data.Queue
707Ross Paterson <ross@soi.city.ac.uk>**20061112001046
708 
709 These were deprecated in 6.6, and can thus be removed in 6.8.
710]
711[make Data.Graph portable (no change to the interface)
712Ross Paterson <ross@soi.city.ac.uk>**20061122010040
713 
714 The algorithm now uses STArrays on GHC and IntSets elsewhere.
715 (Hugs has STArrays, but avoiding them saves a -98, and boxed arrays
716 aren't fast under Hugs anyway.)
717]
718[One less unsafeCoerce# in the tree
719Don Stewart <dons@cse.unsw.edu.au>**20061120120242]
720[typo in comment
721Ross Paterson <ross@soi.city.ac.uk>**20061120115106]
722[fix shift docs to match ffi spec
723Ross Paterson <ross@soi.city.ac.uk>**20061117003144]
724[(nhc98) use new primitive implementations of h{Put,Get}Buf.
725Malcolm.Wallace@cs.york.ac.uk**20061116173104]
726[The wrong 'cycle' was exported from Data.ByteString.Lazy.Char8, spotted by sjanssen
727Don Stewart <dons@cse.unsw.edu.au>**20061110021311]
728[LPS chunk sizes should be 16 bytes, not 17.
729Don Stewart <dons@cse.unsw.edu.au>**20061110021254]
730[Update comments on Prelude organisation in GHC/Base.lhs
731Ian Lynagh <igloo@earth.li>**20061115001926]
732[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.
733bringert@cs.chalmers.se**20061113224202]
734[Control.Parallel.Strategies: added NFData instances for Data.Int.*, Data.Word.*, Maybe, Either, Map, Set, Tree, IntMap, IntSet.
735bringert@cs.chalmers.se**20061113221843]
736[Control.Parallel.Strategies: deprecate sPar, sSeq, Assoc, fstPairFstList, force and sforce.
737bringert@cs.chalmers.se**20061113215219
738 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.
739]
740[add Control.Monad.Instances to nhc98 build
741Malcolm.Wallace@cs.york.ac.uk**20061113113221]
742[Control.Parallel.Strategies: clarified documentation of parListChunk.
743bringert@cs.chalmers.se**20061112232904]
744[Added and cleaned up Haddock comments in Control.Parallel.Strategies.
745bringert@cs.chalmers.se**20061112220445
746 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.
747]
748[Fix broken pragmas; spotted by Bulat Ziganshin
749Ian Lynagh <igloo@earth.li>**20061111205916]
750[add doc link to bound threads section
751Ross Paterson <ross@soi.city.ac.uk>**20060929103252]
752[hide Data.Array.IO.Internals
753Ross Paterson <ross@soi.city.ac.uk>**20061111113248
754 
755 It's hidden from haddock, and everything it exports is re-exported by
756 Data.Array.IO.
757]
758[add Data.Function
759Malcolm.Wallace@cs.york.ac.uk**20061110142710]
760[add Data.Function
761Ross Paterson <ross@soi.city.ac.uk>**20061110141354]
762[whitespace only
763Ross Paterson <ross@soi.city.ac.uk>**20061110141326]
764[move fix to Data.Function
765Ross Paterson <ross@soi.city.ac.uk>**20061110141120]
766[import Prelude
767Ross Paterson <ross@soi.city.ac.uk>**20061110140445]
768[Added Data.Function (Trac ticket #979).
769Nils Anders Danielsson <nad@cs.chalmers.se>**20061110122503
770 + A module with simple combinators working solely on and with
771   functions.
772 + The only new function is "on".
773 + Some functions from the Prelude are re-exported.
774]
775[__hscore_long_path_size is not portable beyond GHC
776Malcolm.Wallace@cs.york.ac.uk**20061110113222]
777[redefine writeFile and appendFile using withFile
778Ross Paterson <ross@soi.city.ac.uk>**20061107140359]
779[add withFile and withBinaryFile (#966)
780Ross Paterson <ross@soi.city.ac.uk>**20061107134510]
781[remove conflicting import for nhc98
782Malcolm.Wallace@cs.york.ac.uk**20061108111215]
783[Add intercalate to Data.List (ticket #971)
784Josef Svenningsson <josef.svenningsson@gmail.com>**20061102122052]
785[non-GHC: fix canonicalizeFilePath
786Ross Paterson <ross@soi.city.ac.uk>**20061107133902
787 
788 I've also removed the #ifdef __GLASGOW_HASKELL__ from the proper
789 Windows versions of a few functions.  These will need testing with
790 Hugs on Windows.
791]
792[enable canonicalizePath for non-GHC platforms
793Simon Marlow <simonmar@microsoft.com>**20061107121141]
794[Update documentation for hWaitForInput
795Simon Marlow <simonmar@microsoft.com>**20061107111430
796 See #972
797 Merge to 6.6 branch.
798]
799[Use unchecked shifts to implement Data.Bits.rotate
800Samuel Bronson <naesten@gmail.com>**20061012125553
801 This should get rid of those cases, maybe lower the size enough that the inliner will like it?
802]
803[fix Haddock module headers
804Ross Paterson <ross@soi.city.ac.uk>**20061106124140]
805[fix example in docs
806Ross Paterson <ross@soi.city.ac.uk>**20061106115628]
807[Add intercalate and split to Data.List
808Josef Svenningsson <josef.svenningsson@gmail.com>*-20061024172357]
809[Data.Generics.Basics is GHC-only
810Ross Paterson <ross@soi.city.ac.uk>**20061102111736]
811[#ifdef around non-portable Data.Generics.Basics
812Malcolm.Wallace@cs.york.ac.uk**20061102103445]
813[Add deriving Data to Complex
814simonpj@microsoft**20061101102059]
815[minor clarification of RandomGen doc
816Ross Paterson <ross@soi.city.ac.uk>**20061030230842]
817[rearrange docs a bit
818Ross Paterson <ross@soi.city.ac.uk>**20061030161223]
819[Add intercalate and split to Data.List
820Josef Svenningsson <josef.svenningsson@gmail.com>**20061024172357]
821[Export pseq from Control.Parallel, and use it in Control.Parallel.Strategies
822Simon Marlow <simonmar@microsoft.com>**20061027150141]
823[`par` should be infixr 0
824Simon Marlow <simonmar@microsoft.com>**20061027130800
825 Alas, I didn't spot this due to lack of testing, and the symptom is
826 that an expression like x `par` y `seq z will have exactly the wrong
827 parallelism properties.  The workaround is to add parantheses.
828 
829 I think we could push this to the 6.6 branch.
830]
831[fix example in comment
832Ross Paterson <ross@soi.city.ac.uk>**20061023163925]
833[Use the new Any type for dynamics (GHC only)
834simonpj@microsoft**20061019160408]
835[add Data.Sequence to nhc98 build
836Malcolm.Wallace@cs.york.ac.uk**20061012135200]
837[Remove Data.FiniteMap, add Control.Applicative, Data.Traversable, and
838Malcolm.Wallace@cs.york.ac.uk**20061012095605
839 Data.Foldable to the nhc98 build.
840]
841[STM invariants
842tharris@microsoft.com**20061007123253]
843[Inline shift in GHC's Bits instances for {Int,Word}{,8,16,32,64}
844Samuel Bronson <naesten@gmail.com>**20061009020906]
845[Don't create GHC.Prim when bootstrapping; we can't, and we don't need it
846Ian Lynagh <igloo@earth.li>**20061004165355]
847[Data.ByteString: fix lazyness of take, drop & splitAt
848Don Stewart <dons@cse.unsw.edu.au>**20061005011703
849 
850 ByteString.Lazy's take, drop and splitAt were too strict when demanding
851 a byte string. Spotted by Einar Karttunen. Thanks to him and to Bertram
852 Felgenhauer for explaining the problem and the fix.
853 
854]
855[Fix syntax error that prevents building Haddock documentation on Windows
856brianlsmith@gmail.com**20060917013530]
857[Hugs only: unbreak typeRepKey
858Ross Paterson <ross@soi.city.ac.uk>**20060929102743]
859[make hGetBufNonBlocking do something on Windows w/ -threaded
860Simon Marlow <simonmar@microsoft.com>**20060927145811
861 hGetBufNonBlocking will behave the same as hGetBuf on Windows now, which
862 is better than just crashing (which it did previously).
863]
864[add typeRepKey :: TypeRep -> IO Int
865Simon Marlow <simonmar@microsoft.com>**20060927100342
866 See feature request #880
867]
868[fix header comment
869Ross Paterson <ross@soi.city.ac.uk>**20060926135843]
870[Add strict versions of insertWith and insertWithKey (Data.Map)
871jeanphilippe.bernardy@gmail.com**20060910162443]
872[doc tweaks, including more precise equations for evaluate
873Ross Paterson <ross@soi.city.ac.uk>**20060910115259]
874[Sync Data.ByteString with stable branch
875Don Stewart <dons@cse.unsw.edu.au>**20060909050111
876 
877 This patch:
878     * hides the LPS constructor (its in .Base if you need it)
879     * adds functions to convert between strict and lazy bytestrings
880     * and adds readInteger
881 
882]
883[Typeable1 instances for STM and TVar
884Ross Paterson <ross@soi.city.ac.uk>**20060904231425]
885[remove obsolete Hugs stuff
886Ross Paterson <ross@soi.city.ac.uk>**20060904223944]
887[Cleaner isInfixOf suggestion from Ross Paterson
888John Goerzen <jgoerzen@complete.org>**20060901143654]
889[New function isInfixOf that searches a list for a given sublist
890John Goerzen <jgoerzen@complete.org>**20060831151556
891 
892 Example:
893 
894 isInfixOf "Haskell" "I really like Haskell." -> True
895 isInfixOf "Ial" "I really like Haskell." -> False
896 
897 This function was first implemented in MissingH as MissingH.List.contains
898]
899[Better doc on Data.Map.lookup: explain what the monad is for
900jeanphilippe.bernardy@gmail.com**20060903133440]
901[fix hDuplicateTo on Windows
902Simon Marlow <simonmar@microsoft.com>**20060901150016
903 deja vu - I'm sure I remember fixing this before...
904]
905[Improve documentation of atomically
906simonpj@microsoft**20060714120207]
907[Add missing method genRange for StdGen (fixes #794)
908simonpj@microsoft**20060707151901
909 
910        MERGE TO STABLE
911 
912 Trac #794 reports (correctly) that the implementation of StdGen
913 only returns numbers in the range (0..something) rather than
914 (minBound, maxBound), which is what StdGen's genRange claims.
915 
916 This commit fixes the problem, by implementing genRange for StdGen
917 (previously it just used the default method).
918 
919 
920]
921[mark nhc98 import hack
922Ross Paterson <ross@soi.city.ac.uk>**20060831125219]
923[remove some outdated comments
924Simon Marlow <simonmar@microsoft.com>**20060831104200]
925[import Control.Arrow.ArrowZero to help nhc98's type checker
926Malcolm.Wallace@cs.york.ac.uk**20060831101105]
927[remove Text.Regex(.Posix) from nhc98 build
928Malcolm.Wallace@cs.york.ac.uk**20060831101016]
929[add Data.Foldable.{msum,asum}, plus tweaks to comments
930Ross Paterson <ross@soi.city.ac.uk>**20060830163521]
931[fix doc typo
932Ross Paterson <ross@soi.city.ac.uk>**20060830134123]
933[add Data.Foldable.{for_,forM_} and Data.Traversable.{for,forM}
934Ross Paterson <ross@soi.city.ac.uk>**20060830133805
935 
936 generalizing Control.Monad.{forM_,forM}
937]
938[Make length a good consumer
939simonpj@microsoft*-20060508142726
940 
941 Make length into a good consumer.  Fixes Trac bug #707.
942 
943 (Before length simply didn't use foldr.)
944 
945]
946[Add Control.Monad.forM and forM_
947Don Stewart <dons@cse.unsw.edu.au>**20060824081118
948 
949 flip mapM_ is more and more common, I find. Several suggestions have
950 been made to add this, as foreach or something similar. This patch
951 does just that:
952 
953     forM  :: (Monad m) => [a] -> (a -> m b) -> m [b]
954     forM_ :: (Monad m) => [a] -> (a -> m b) -> m ()
955 
956 So we can write:
957     
958     Prelude Control.Monad> forM_ [1..4] $ \x -> print x
959     1
960     2
961     3
962     4
963 
964]
965[Hide internal module from haddock in Data.ByteString
966Don Stewart <dons@cse.unsw.edu.au>**20060828011515]
967[add advice on avoiding import ambiguities
968Ross Paterson <ross@soi.city.ac.uk>**20060827170407]
969[expand advice on importing these modules
970Ross Paterson <ross@soi.city.ac.uk>**20060827164044]
971[add Haddock marker
972Ross Paterson <ross@soi.city.ac.uk>**20060827115140]
973[Clarify how one hides Prelude.catch
974Don Stewart <dons@cse.unsw.edu.au>**20060826124346
975 
976 User feedback indicated that an example was required, of how to hide
977 Prelude.catch, so add such an example to the docs
978 
979]
980[Workaround for OSes that don't have intmax_t and uintmax_t
981Ian Lynagh <igloo@earth.li>**20060825134936
982 OpenBSD (and possibly others) do not have intmax_t and uintmax_t types:
983     http://www.mail-archive.com/haskell-prime@haskell.org/msg01548.html
984 so substitute (unsigned) long long if we have them, otherwise
985 (unsigned) long.
986 
987]
988[add docs for par
989Simon Marlow <simonmar@microsoft.com>**20060825110610]
990[document minimal complete definition for Bits
991Ross Paterson <ross@soi.city.ac.uk>**20060824140504]
992[C regex library bits have moved to the regex-posix package
993Simon Marlow <simonmar@microsoft.com>**20060824132311]
994[Add shared Typeable support (ghc only)
995Esa Ilari Vuokko <ei@vuokko.info>**20060823003126]
996[this should have been removed with the previous patch
997Simon Marlow <simonmar@microsoft.com>**20060824121223]
998[remove Text.Regx & Text.Regex.Posix
999Simon Marlow <simonmar@microsoft.com>**20060824094615
1000 These are subsumed by the new regex-base, regex-posix and regex-compat
1001 packages.
1002]
1003[explicitly tag Data.ByteString rules with the FPS prefix.
1004Don Stewart <dons@cse.unsw.edu.au>**20060824041326]
1005[Add spec rules for sections in Data.ByteString
1006Don Stewart <dons@cse.unsw.edu.au>**20060824012611]
1007[Sync Data.ByteString with current stable branch, 0.7
1008Don Stewart <dons@cse.unsw.edu.au>**20060823143338]
1009[add notes about why copyFile doesn't remove the target
1010Simon Marlow <simonmar@microsoft.com>**20060823095059]
1011[copyFile: try removing the target file before opening it for writing
1012Simon Marlow <simonmar@microsoft.com>*-20060822121909]
1013[copyFile: try removing the target file before opening it for writing
1014Simon Marlow <simonmar@microsoft.com>**20060822121909]
1015[add alternative functors and extra instances
1016Ross Paterson <ross@soi.city.ac.uk>**20060821152151
1017 
1018 * Alternative class, for functors with a monoid
1019 * instances for Const
1020 * instances for arrows
1021]
1022[generate Haddock docs on all platforms
1023Simon Marlow <simonmar@microsoft.com>**20060821131612]
1024[remove extra comma from import
1025Ross Paterson <ross@soi.city.ac.uk>**20060819173954]
1026[fix docs for withC(A)StringLen
1027Ross Paterson <ross@soi.city.ac.uk>**20060818170328]
1028[use Haskell'98 compliant indentation in do blocks
1029Malcolm.Wallace@cs.york.ac.uk**20060818130810]
1030[use correct names of IOArray operations for nhc98
1031Malcolm.Wallace@cs.york.ac.uk**20060818130714]
1032[add mapMaybe and mapEither, plus WithKey variants
1033Ross Paterson <ross@soi.city.ac.uk>**20060817235041]
1034[remove Text.Html from nhc98 build
1035Malcolm.Wallace@cs.york.ac.uk**20060817135502]
1036[eliminate more HOST_OS tests
1037Ross Paterson <ross@soi.city.ac.uk>**20060815190609]
1038[Hugs only: disable unused process primitives
1039Ross Paterson <ross@soi.city.ac.uk>**20060813184435
1040 
1041 These were the cause of Hugs bug #30, I think, and weren't used by Hugs anyway.
1042]
1043[markup fix to Data.HashTable
1044Ross Paterson <ross@soi.city.ac.uk>**20060812103835]
1045[revert removal of ghcconfig.h from package.conf.in
1046Ross Paterson <ross@soi.city.ac.uk>**20060812082702
1047 
1048 as it's preprocessed with -undef (pointed out by Esa Ilari Vuokko)
1049]
1050[fix Data.HashTable for non-GHC
1051Ross Paterson <ross@soi.city.ac.uk>**20060811231521]
1052[remove deprecated 'withObject'
1053Simon Marlow <simonmar@microsoft.com>**20060811152350]
1054[Jan-Willem Maessen's improved implementation of Data.HashTable
1055Simon Marlow <simonmar@microsoft.com>**20060811151024
1056 Rather than incrementally enlarging the hash table, this version
1057 just does it in one go when the table gets too full.
1058]
1059[Warning police: Make some prototypes from the RTS known
1060sven.panne@aedion.de**20060811144629]
1061[Warning police: Removed useless catch-all clause
1062sven.panne@aedion.de**20060811142208]
1063[reduce dependency on ghcconfig.h
1064Ross Paterson <ross@soi.city.ac.uk>**20060811124030
1065 
1066 The only remaining use is in cbits/dirUtils.h, which tests solaris2_HOST_OS
1067 
1068 (Also System.Info uses ghcplatform.h and several modules import MachDeps.h
1069 to get SIZEOF_* and ALIGNMENT_* from ghcautoconf.h)
1070]
1071[(non-GHC only) track MArray interface change
1072Ross Paterson <ross@soi.city.ac.uk>**20060810182902]
1073[move Text.Html to a separate package
1074Simon Marlow <simonmar@microsoft.com>**20060810113017]
1075[bump version to 2.0
1076Simon Marlow <simonmar@microsoft.com>**20060810112833]
1077[Remove deprecated Data.FiniteMap and Data.Set interfaces
1078Simon Marlow <simonmar@microsoft.com>**20060809153810]
1079[move altzone test from ghc to base package
1080Ross Paterson <ross@soi.city.ac.uk>**20060809124259]
1081[remove unnecessary #include "ghcconfig.h"
1082Ross Paterson <ross@soi.city.ac.uk>**20060809123812]
1083[Change the API of MArray to allow resizable arrays
1084Simon Marlow <simonmar@microsoft.com>**20060809100548
1085 See #704
1086 
1087 The MArray class doesn't currently allow a mutable array to change its
1088 size, because of the pure function
1089 
1090   bounds :: (HasBounds a, Ix i) => a i e -> (i,i)
1091 
1092 This patch removes the HasBounds class, and adds
1093 
1094   getBounds :: (MArray a e m, Ix i) => a i e -> m (i,i)
1095 
1096 to the MArray class, and
1097 
1098   bounds :: (IArray a e, Ix i) => a i e -> (i,i)
1099 
1100 to the IArray class.
1101 
1102 The reason that bounds had to be incorporated into the IArray class is
1103 because I couldn't make DiffArray work without doing this.  DiffArray
1104 acts as a layer converting an MArray into an IArray, and there was no
1105 way (that I could find) to define an instance of HasBounds for
1106 DiffArray.
1107]
1108[deprecate this module.
1109Simon Marlow <simonmar@microsoft.com>**20060808100708]
1110[add traceShow (see #474)
1111Simon Marlow <simonmar@microsoft.com>**20060807155545]
1112[remove spurious 'extern "C" {'
1113Simon Marlow <simonmar@microsoft.com>**20060724160258]
1114[Fix unsafeIndex for large ranges
1115Simon Marlow <simonmar@microsoft.com>**20060721100225]
1116[disambiguate uses of foldr for nhc98 to compile without errors
1117Malcolm.Wallace@cs.york.ac.uk**20060711161614]
1118[make Control.Monad.Instances compilable by nhc98
1119Malcolm.Wallace@cs.york.ac.uk**20060711160941]
1120[breakpointCond
1121Lemmih <lemmih@gmail.com>**20060708055528]
1122[UNDO: Merge "unrecognized long opt" fix from 6.4.2
1123Simon Marlow <simonmar@microsoft.com>**20060705142537
1124 This patch undid the previous patch, "RequireOrder: do not collect
1125 unrecognised options after a non-opt".  I asked Sven to revert it, but
1126 didn't get an answer.
1127 
1128 See bug #473.
1129]
1130[Avoid strictness in accumulator for unpackFoldr
1131Don Stewart <dons@cse.unsw.edu.au>**20060703091806
1132 
1133 The seq on the accumulator for unpackFoldr will break in the presence of
1134 head/build rewrite rules. The empty list case will be forced, producing
1135 an exception. This is a known issue with seq and rewrite rules that we
1136 just stumbled on to.
1137 
1138]
1139[Disable unpack/build fusion
1140Don Stewart <dons@cse.unsw.edu.au>**20060702083913
1141 
1142 unpack/build on bytestrings seems to trigger a bug when interacting with
1143 head/build fusion in GHC.List. The bytestring001 testcase catches it.
1144 
1145 I'll investigate further, but best to disable this for now (its not
1146 often used anyway).
1147 
1148 Note that with -frules-off or ghc 6.4.2 things are fine. It seems to
1149 have emerged with the recent rules changes.
1150 
1151]
1152[Import Data.ByteString.Lazy, improve ByteString Fusion, and resync with FPS head
1153Don Stewart <dons@cse.unsw.edu.au>**20060701084345
1154 
1155 This patch imports the Data.ByteString.Lazy module, and its helpers,
1156 providing a ByteString implemented as a lazy list of strict cache-sized
1157 chunks. This type allows the usual lazy operations to be written on
1158 bytestrings, including lazy IO, with much improved space and time over
1159 the [Char] equivalents.
1160 
1161]
1162[Wibble in docs for new ForeignPtr functionsn
1163Don Stewart <dons@cse.unsw.edu.au>**20060609075924]
1164[comments for Applicative and Traversable
1165Ross Paterson <ross@soi.city.ac.uk>**20060622170436]
1166[default to NoBuffering on Windows for a read/write text file
1167Simon Marlow <simonmar@microsoft.com>**20060622144446
1168 Fixes (works around) #679
1169]
1170[remove dead code
1171Simon Marlow <simonmar@microsoft.com>**20060622144433]
1172[clarify and expand docs
1173Simon Marlow <simonmar@microsoft.com>**20060622112911]
1174[Add minView and maxView to Map and Set
1175jeanphilippe.bernardy@gmail.com**20060616180121]
1176[add signature for registerDelay
1177Ross Paterson <ross@soi.city.ac.uk>**20060614114456]
1178[a few doc comments
1179Ross Paterson <ross@soi.city.ac.uk>**20060613142704]
1180[Optimised foreign pointer representation, for heap-allocated objects
1181Don Stewart <dons@cse.unsw.edu.au>**20060608015011]
1182[Add the inline function, and many comments
1183simonpj@microsoft.com**20060605115814
1184 
1185 This commit adds the 'inline' function described in the
1186 related patch in the compiler.
1187 
1188 I've also added comments about the 'lazy' function.
1189 
1190]
1191[small intro to exceptions
1192Ross Paterson <ross@soi.city.ac.uk>**20060525111604]
1193[export breakpoint
1194Simon Marlow <simonmar@microsoft.com>**20060525090456]
1195[Merge in changes from fps head. Highlights:
1196Don Stewart <dons@cse.unsw.edu.au>**20060525065012
1197 
1198     Wed May 24 15:49:38 EST 2006  sjanssen@cse.unl.edu
1199       * instance Monoid ByteString
1200 
1201     Wed May 24 15:04:04 EST 2006  Duncan Coutts <duncan.coutts@worc.ox.ac.uk>
1202       * Rearange export lists for the .Char8 modules
1203 
1204     Wed May 24 14:59:56 EST 2006  Duncan Coutts <duncan.coutts@worc.ox.ac.uk>
1205       * Implement mapAccumL and reimplement mapIndexed using loopU
1206 
1207     Wed May 24 14:47:32 EST 2006  Duncan Coutts <duncan.coutts@worc.ox.ac.uk>
1208       * Change the implementation of the unfoldr(N) functions.
1209       Use a more compact implementation for unfoldrN and change it's behaviour
1210       to only return Just in the case that it actually 'overflowed' the N, so
1211       the boundary case of unfolding exactly N gives Nothing.
1212       Implement unfoldr and Lazy.unfoldr in terms of unfoldrN. Use fibonacci
1213       growth for the chunk size in unfoldr
1214 
1215     Wed May 24 08:32:29 EST 2006  sjanssen@cse.unl.edu
1216       * Add unfoldr to ByteString and .Char8
1217       A preliminary implementation of unfoldr.
1218 
1219     Wed May 24 01:39:41 EST 2006  Duncan Coutts <duncan.coutts@worc.ox.ac.uk>
1220       * Reorder the export lists to better match the Data.List api
1221 
1222     Tue May 23 14:04:32 EST 2006  Don Stewart <dons@cse.unsw.edu.au>
1223       * pack{Byte,Char} -> singleton. As per fptools convention
1224 
1225     Tue May 23 14:00:51 EST 2006  Don Stewart <dons@cse.unsw.edu.au>
1226       * elemIndexLast -> elemIndexEnd
1227 
1228     Tue May 23 13:57:34 EST 2006  Don Stewart <dons@cse.unsw.edu.au>
1229       * In the search for a more orthogonal api, we kill breakFirst/breakLast,
1230         which were of dubious value
1231 
1232     Tue May 23 12:24:09 EST 2006  Don Stewart <dons@cse.unsw.edu.au>
1233       * Abolish elems. It's name implied it was unpack, but its type didn't. it made no sense
1234 
1235     Tue May 23 10:42:09 EST 2006  Duncan Coutts <duncan.coutts@worc.ox.ac.uk>
1236       * Minor doc tidyup. Use haddock markup better.
1237 
1238     Tue May 23 11:00:31 EST 2006  Don Stewart <dons@cse.unsw.edu.au>
1239       * Simplify the join() implementation. Spotted by Duncan.
1240 
1241]
1242[add a way to ask the IO manager thread to exit
1243Simon Marlow <simonmar@microsoft.com>**20060524121823]
1244[Sync with FPS head, including the following patches:
1245Don Stewart <dons@cse.unsw.edu.au>**20060520030436
1246         
1247     Thu May 18 15:45:46 EST 2006  sjanssen@cse.unl.edu
1248       * Export unsafeTake and unsafeDrop
1249 
1250     Fri May 19 11:53:08 EST 2006  Don Stewart <dons@cse.unsw.edu.au>
1251       * Add foldl1'
1252 
1253     Fri May 19 13:41:24 EST 2006  Don Stewart <dons@cse.unsw.edu.au>
1254       * Add fuseable scanl, scanl1 + properties
1255 
1256     Fri May 19 18:20:40 EST 2006  Don Stewart <dons@cse.unsw.edu.au>
1257       * Spotted another chance to use unsafeTake,Drop (in groupBy)
1258 
1259     Thu May 18 09:24:25 EST 2006  Duncan Coutts <duncan.coutts@worc.ox.ac.uk>
1260       * More effecient findIndexOrEnd based on the impl of findIndex
1261 
1262     Thu May 18 09:22:49 EST 2006  Duncan Coutts <duncan.coutts@worc.ox.ac.uk>
1263       * Eliminate special case in findIndex since it's handled anyway.
1264 
1265     Thu May 18 09:19:08 EST 2006  Duncan Coutts <duncan.coutts@worc.ox.ac.uk>
1266       * Add unsafeTake and unsafeDrop
1267       These versions assume the n is in the bounds of the bytestring, saving
1268       two comparison tests. Then use them in varous places where we think this
1269       holds. These cases need double checking (and there are a few remaining
1270       internal uses of take / drop that might be possible to convert).
1271       Not exported for the moment.
1272 
1273     Tue May 16 23:15:11 EST 2006  Don Stewart <dons@cse.unsw.edu.au>
1274       * Handle n < 0 in drop and splitAt. Spotted by QC.
1275 
1276     Tue May 16 22:46:22 EST 2006  Don Stewart <dons@cse.unsw.edu.au>
1277       * Handle n <= 0 cases for unfoldr and replicate. Spotted by QC
1278 
1279     Tue May 16 21:34:11 EST 2006  Don Stewart <dons@cse.unsw.edu.au>
1280       * mapF -> map', filterF -> filter'
1281 
1282]
1283[haddock fix
1284Ross Paterson <ross@soi.city.ac.uk>**20060518154723]
1285[simplify indexing in Data.Sequence
1286Ross Paterson <ross@soi.city.ac.uk>**20060518154316]
1287[Move Eq, Ord, Show instances for ThreadId to GHC.Conc
1288Simon Marlow <simonmar@microsoft.com>**20060518113339
1289 Eliminates orphans.
1290]
1291[Better error handling in the IO manager thread
1292Simon Marlow <simonmar@microsoft.com>**20060518113303
1293 In particular, handle EBADF just like rts/posix/Select.c, by waking up
1294 all the waiting threads.  Other errors are thrown, instead of just
1295 being ignored.
1296]
1297[#define _REENTRANT 1  (needed to get the right errno on some OSs)
1298Simon Marlow <simonmar@microsoft.com>**20060518104151
1299 Part 2 of the fix for threaded RTS problems on Solaris and possibly
1300 *BSD (Part 1 was the same change in ghc/includes/Rts.h).
1301]
1302[copyCString* should be in IO. Spotted by Tomasz Zielonka
1303Don Stewart <dons@cse.unsw.edu.au>**20060518012154]
1304[add import Prelude to get dependencies right for Data/Fixed.hs
1305Duncan Coutts <duncan.coutts@worc.ox.ac.uk>**20060517222044
1306 Hopefully this fixes parallel builds.
1307]
1308[Fix negative index handling in splitAt, replicate and unfoldrN. Move mapF, filterF -> map', filter' while we're here
1309Don Stewart <dons@cse.unsw.edu.au>**20060517020150]
1310[Use our own realloc. Thus reduction functions (like filter) allocate on the Haskell heap. Makes around 10% difference.
1311Don Stewart <dons@cse.unsw.edu.au>**20060513051736]
1312[Last two CInt fixes for 64 bit, and bracket writeFile while we're here
1313Don Stewart <dons@cse.unsw.edu.au>**20060512050750]
1314[Some small optimisations, generalise the type of unfold
1315Don Stewart <dons@cse.unsw.edu.au>**20060510043309
1316 
1317     Tue May  9 22:36:29 EST 2006  Duncan Coutts <duncan.coutts@worc.ox.ac.uk>
1318       * Surely the error function should not be inlined.
1319 
1320     Tue May  9 22:35:53 EST 2006  Duncan Coutts <duncan.coutts@worc.ox.ac.uk>
1321       * Reorder memory writes for better cache locality.
1322 
1323     Tue May  9 23:28:09 EST 2006  Duncan Coutts <duncan.coutts@worc.ox.ac.uk>
1324       * Generalise the type of unfoldrN
1325       
1326       The type of unfoldrN was overly constrained:
1327       unfoldrN :: Int -> (Word8 -> Maybe (Word8, Word8)) -> Word8 -> ByteString
1328       
1329       if we compare that to unfoldr:
1330       unfoldr :: (b -> Maybe (a, b)) -> b -> [a]
1331       
1332       So we can generalise unfoldrN to this type:
1333       unfoldrN :: Int -> (a -> Maybe (Word8, a)) -> a -> ByteString
1334       
1335       and something similar for the .Char8 version. If people really do want to
1336       use it a lot with Word8/Char then perhaps we should add a specialise pragma.
1337 
1338     Wed May 10 13:26:40 EST 2006  Don Stewart <dons@cse.unsw.edu.au>
1339       * Add foldl', and thus a fusion rule for length . {map,filter,fold},
1340       that avoids creating an array at all if the end of the pipeline is a 'length' reduction
1341 
1342 **END OF DESCRIPTION***
1343 
1344 Place the long patch description above the ***END OF DESCRIPTION*** marker.
1345 The first line of this file will be the patch name.
1346 
1347 
1348 This patch contains the following changes:
1349 
1350 M ./Data/ByteString.hs -8 +38
1351 M ./Data/ByteString/Char8.hs -6 +12
1352]
1353[portable implementation of WordPtr/IntPtr for non-GHC
1354Ross Paterson <ross@soi.city.ac.uk>**20060510001826
1355 
1356 plus much tweaking of imports to avoid cycles
1357]
1358[add WordPtr and IntPtr types to Foreign.Ptr, with associated conversions
1359Simon Marlow <simonmar@microsoft.com>**20060509092606
1360 
1361 As suggested by John Meacham. 
1362 
1363 I had to move the Show instance for Ptr into GHC.ForeignPtr to avoid
1364 recursive dependencies.
1365]
1366[add CIntPtr, CUIntPtr, CIntMax, CUIntMax types
1367Simon Marlow <simonmar@microsoft.com>**20060509092427]
1368[add GHC.Dynamic
1369Simon Marlow <simonmar@microsoft.com>**20060509082739]
1370[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
1371Don Stewart <dons@cse.unsw.edu.au>**20060509023425]
1372[Make length a good consumer
1373simonpj@microsoft**20060508142726
1374 
1375 Make length into a good consumer.  Fixes Trac bug #707.
1376 
1377 (Before length simply didn't use foldr.)
1378 
1379]
1380[Trim imports
1381simonpj@microsoft**20060508142557]
1382[Make unsafePerformIO lazy
1383simonpj@microsoft**20060508142507
1384 
1385 The stricteness analyser used to have a HACK which ensured that NOINLNE things
1386 were not strictness-analysed.  The reason was unsafePerformIO. Left to itself,
1387 the strictness analyser would discover this strictness for unsafePerformIO:
1388        unsafePerformIO:  C(U(AV))
1389 But then consider this sub-expression
1390        unsafePerformIO (\s -> let r = f x in
1391                               case writeIORef v r s of (# s1, _ #) ->
1392                               (# s1, r #)
1393 The strictness analyser will now find that r is sure to be eval'd,
1394 and may then hoist it out.  This makes tests/lib/should_run/memo002
1395 deadlock.
1396 
1397 Solving this by making all NOINLINE things have no strictness info is overkill.
1398 In particular, it's overkill for runST, which is perfectly respectable.
1399 Consider
1400        f x = runST (return x)
1401 This should be strict in x.
1402 
1403 So the new plan is to define unsafePerformIO using the 'lazy' combinator:
1404 
1405        unsafePerformIO (IO m) = lazy (case m realWorld# of (# _, r #) -> r)
1406 
1407 Remember, 'lazy' is a wired-in identity-function Id, of type a->a, which is
1408 magically NON-STRICT, and is inlined after strictness analysis.  So
1409 unsafePerformIO will look non-strict, and that's what we want.
1410 
1411]
1412[Sync with FPS head.
1413Don Stewart <dons@cse.unsw.edu.au>**20060508122322
1414 
1415 Mon May  8 10:40:14 EST 2006  Don Stewart <dons@cse.unsw.edu.au>
1416   * Fix all uses for Int that should be CInt or CSize in ffi imports.
1417   Spotted by Igloo, dcoutts
1418 
1419 Mon May  8 16:09:41 EST 2006  Don Stewart <dons@cse.unsw.edu.au>
1420   * Import nicer loop/loop fusion rule from ghc-ndp
1421 
1422 Mon May  8 17:36:07 EST 2006  Don Stewart <dons@cse.unsw.edu.au>
1423   * Fix stack leak in split on > 60M strings
1424 
1425 Mon May  8 17:50:13 EST 2006  Don Stewart <dons@cse.unsw.edu.au>
1426   * Try same fix for stack overflow in elemIndices
1427 
1428]
1429[Fix all uses for Int that should be CInt or CSize in ffi imports. Spotted by Duncan and Ian
1430Don Stewart <dons@cse.unsw.edu.au>**20060508010311]
1431[Fixed import list syntax
1432Sven Panne <sven.panne@aedion.de>**20060507155008]
1433[Faster filterF, filterNotByte
1434dons@cse.unsw.edu.au**20060507042301]
1435[Much faster find, findIndex. Hint from sjanssen
1436dons@cse.unsw.edu.au**20060507033048]
1437[Merge "unrecognized long opt" fix from 6.4.2
1438Sven Panne <sven.panne@aedion.de>**20060506110519]
1439[
1440dons@cse.unsw.edu.au**20060506061029
1441 Sat May  6 13:01:34 EST 2006  Don Stewart <dons@cse.unsw.edu.au>
1442   * Do loopU realloc on the Haskell heap. And add a really tough stress test
1443 
1444 Sat May  6 12:28:58 EST 2006  Don Stewart <dons@cse.unsw.edu.au>
1445   * Use simple, 3x faster concat. Plus QC properties. Suggested by sjanssen and dcoutts
1446 
1447 Sat May  6 15:59:31 EST 2006  Don Stewart <dons@cse.unsw.edu.au>
1448   * dcoutt's packByte bug squashed
1449   
1450   With inlinePerformIO, ghc head was compiling:
1451   
1452    packByte 255 `compare` packByte 127
1453   
1454   into roughly
1455   
1456    case mallocByteString 2 of
1457        ForeignPtr f internals ->
1458             case writeWord8OffAddr# f 0 255 of _ ->
1459             case writeWord8OffAddr# f 0 127 of _ ->
1460             case eqAddr# f f of
1461                    False -> case compare (GHC.Prim.plusAddr# f 0)
1462                                          (GHC.Prim.plusAddr# f 0)
1463   
1464   which is rather stunning. unsafePerformIO seems to prevent whatever
1465   magic inlining was leading to this. Only affected the head.
1466   
1467]
1468[Add array fusion versions of map, filter and foldl
1469dons@cse.unsw.edu.au**20060505060858
1470 
1471 This patch adds fusable map, filter and foldl, using the array fusion
1472 code for unlifted, flat arrays, from the Data Parallel Haskell branch,
1473 after kind help from Roman Leshchinskiy,
1474 
1475 Pipelines of maps, filters and folds should now need to walk the
1476 bytestring once only, and intermediate bytestrings won't be constructed.
1477 
1478]
1479[fix for non-GHC
1480Ross Paterson <ross@soi.city.ac.uk>**20060504093044]
1481[use bracket in appendFile (like writeFile)
1482Ross Paterson <ross@soi.city.ac.uk>**20060504091528]
1483[writeFile: close the file on error
1484Simon Marlow <simonmar@microsoft.com>**20060504084505
1485 Suggested by Ross Paterson, via Neil Mitchell
1486 
1487]
1488[Sync with FPS head
1489dons@cse.unsw.edu.au**20060503105259
1490 
1491 This patch brings Data.ByteString into sync with the FPS head.
1492 The most significant of which is the new Haskell counting sort.
1493 
1494 Changes:
1495 
1496 Sun Apr 30 18:16:29 EST 2006  sjanssen@cse.unl.edu
1497   * Fix foldr1 in Data.ByteString and Data.ByteString.Char8
1498 
1499 Mon May  1 11:51:16 EST 2006  Don Stewart <dons@cse.unsw.edu.au>
1500   * Add group and groupBy. Suggested by conversation between sjanssen and petekaz on #haskell
1501 
1502 Mon May  1 16:42:04 EST 2006  sjanssen@cse.unl.edu
1503   * Fix groupBy to match Data.List.groupBy.
1504 
1505 Wed May  3 15:01:07 EST 2006  sjanssen@cse.unl.edu
1506   * Migrate to counting sort.
1507   
1508   Data.ByteString.sort used C's qsort(), which is O(n log n).  The new algorithm
1509   is O(n), and is faster for strings larger than approximately thirty bytes.  We
1510   also reduce our dependency on cbits!
1511 
1512]
1513[improve performance of Integer->String conversion
1514Simon Marlow <simonmar@microsoft.com>**20060503113306
1515 See
1516  http://www.haskell.org//pipermail/libraries/2006-April/005227.html
1517 
1518 Submitted by: bertram.felgenhauer@googlemail.com
1519 
1520 
1521]
1522[inline withMVar, modifyMVar, modifyMVar_
1523Simon Marlow <simonmar@microsoft.com>**20060503111152]
1524[Fix string truncating in hGetLine -- it was a pasto from Simon's code
1525Simon Marlow <simonmar@microsoft.com>**20060503103504
1526 (from Don Stewart)
1527]
1528[Merge in Data.ByteString head. Fixes ByteString+cbits in hugs
1529Don Stewart <dons@cse.unsw.edu.au>**20060429040733]
1530[Import Data.ByteString from fps 0.5.
1531Don Stewart <dons@cse.unsw.edu.au>**20060428130718
1532 Fast, packed byte vectors, providing a better PackedString.
1533 
1534]
1535[fix previous patch
1536Ross Paterson <ross@soi.city.ac.uk>**20060501154847]
1537[fixes for non-GHC
1538Ross Paterson <ross@soi.city.ac.uk>**20060501144322]
1539[fix imports for mingw32 && !GHC
1540Ross Paterson <ross@soi.city.ac.uk>**20060427163248]
1541[RequireOrder: do not collect unrecognised options after a non-opt
1542Simon Marlow <simonmar@microsoft.com>**20060426121110
1543 The documentation for RequireOrder says "no option processing after
1544 first non-option", so it doesn't seem right that we should process the
1545 rest of the arguments to collect the unrecognised ones.  Presumably
1546 the client wants to know about the unrecognised options up to the
1547 first non-option, and will be using a different option parser for the
1548 rest of the command line.
1549 
1550 eg. before:
1551 
1552 Prelude System.Console.GetOpt> getOpt' RequireOrder [] ["bar","--foo"]
1553 ([],["bar","--foo"],["--foo"],[])
1554 
1555 after:
1556 
1557 Prelude System.Console.GetOpt> getOpt' RequireOrder [] ["bar","--foo"]
1558 ([],["bar","--foo"],[],[])
1559]
1560[fix for Haddock 0.7
1561Ashley Yakeley <ashley@semantic.org>**20060426072521]
1562[add Data.Fixed module
1563Ashley Yakeley <ashley@semantic.org>**20060425071853]
1564[add instances
1565Ross Paterson <ross@soi.city.ac.uk>**20060424102146]
1566[add superclasses to Applicative and Traversable
1567Ross Paterson <ross@soi.city.ac.uk>**20060411144734
1568 
1569 Functor is now a superclass of Applicative, and Functor and Foldable
1570 are now superclasses of Traversable.  The new hierarchy makes clear the
1571 inclusions between the classes, but means more work in defining instances.
1572 Default definitions are provided to help.
1573]
1574[add Functor and Monad instances for Prelude types
1575Ross Paterson <ross@soi.city.ac.uk>**20060410111443]
1576[GHC.Base.breakpoint
1577Lemmih <lemmih@gmail.com>**20060407125827]
1578[Track the GHC source tree reorganisation
1579Simon Marlow <simonmar@microsoft.com>**20060407041631]
1580[in the show instance for Exception, print the type of dynamic exceptions
1581Simon Marlow <simonmar@microsoft.com>**20060406112444
1582 Unfortunately this requires some recursve module hackery to get at
1583 the show instance for Typeable.
1584]
1585[implement ForeignEnvPtr, newForeignPtrEnv, addForeignPtrEnv for GHC
1586Simon Marlow <simonmar@microsoft.com>**20060405155448]
1587[add  forkOnIO :: Int -> IO () -> IO ThreadId
1588Simon Marlow <simonmar@microsoft.com>**20060327135018]
1589[Rework previous: not a gcc bug after all
1590Simon Marlow <simonmar@microsoft.com>**20060323161229
1591 It turns out that we were relying on behaviour that is undefined in C,
1592 and undefined behaviour in C means "the compiler can do whatever the
1593 hell it likes with your entire program".  So avoid that.
1594]
1595[work around a gcc 4.1.0 codegen bug in -O2 by forcing -O1 for GHC.Show
1596Simon Marlow <simonmar@microsoft.com>**20060323134514
1597 See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=26824
1598]
1599[commit mysteriously missing parts of "runIOFastExit" patch
1600Simon Marlow <simonmar@microsoft.com>**20060321101535]
1601[add runIOFastExit :: IO a -> IO a
1602Simon Marlow <simonmar@microsoft.com>**20060320124333
1603 Similar to runIO, but calls stg_exit() directly to exit, rather than
1604 shutdownHaskellAndExit().  Needed for running GHCi in the test suite.
1605]
1606[Fix a broken invariant
1607Simon Marlow <simonmar@microsoft.com>**20060316134151
1608 Patch from #694,  for the problem "empty is an identity for <> and $$" is
1609 currently broken by eg. isEmpty (empty<>empty)"
1610]
1611[Add unsafeSTToIO :: ST s a -> IO a
1612Simon Marlow <simonmar@microsoft.com>**20060315160232
1613 Implementation for Hugs is missing, but should be easy.  We need this
1614 for the forthcoming nested data parallelism implementation.
1615]
1616[Added 'alter'
1617jeanphilippe.bernardy@gmail.com**20060315143539
1618 Added 'alter :: (Maybe a -> Maybe a) -> k -> Map k a -> Map k a' to IntMap and Map
1619 This addresses ticket #665
1620]
1621[deprecate FunctorM in favour of Foldable and Traversable
1622Ross Paterson <ross@soi.city.ac.uk>**20060315092942
1623 as discussed on the libraries list.
1624]
1625[Simplify Eq, Ord, and Show instances for UArray
1626Simon Marlow <simonmar@microsoft.com>**20060313142701
1627 The Eq, Ord, and Show instances of UArray were written out longhand
1628 with one instance per element type.  It is possible to condense these
1629 into a single instance for each class, at the expense of using more
1630 extensions (non-std context on instance declaration).
1631 
1632 Suggestion by: Frederik Eaton <frederik@ofb.net>
1633 
1634]
1635[Oops typo in intSet notMember
1636jeanphilippe.bernardy@gmail.com**20060311224713]
1637[IntMap lookup now returns monad instead of Maybe.
1638jeanphilippe.bernardy@gmail.com**20060311224502]
1639[Added notMember to Data.IntSet and Data.IntMap
1640jeanphilippe.bernardy@gmail.com**20060311085221]
1641[add Data.Set.notMember and Data.Map.notMember
1642John Meacham <john@repetae.net>**20060309191806]
1643[addToClockTime: handle picoseconds properly
1644Simon Marlow <simonmar@microsoft.com>**20060310114532
1645 fixes #588
1646]
1647[make head/build rule apply to all types, not just Bool.
1648John Meacham <john@repetae.net>**20060303045753]
1649[Avoid overflow when normalising clock times
1650Ian Lynagh <igloo@earth.li>**20060210144638]
1651[Years have 365 days, not 30*365
1652Ian Lynagh <igloo@earth.li>**20060210142853]
1653[declare blkcmp() static
1654Simon Marlow <simonmar@microsoft.com>**20060223134317]
1655[typo in comment in Foldable class
1656Ross Paterson <ross@soi.city.ac.uk>**20060209004901]
1657[simplify fmap
1658Ross Paterson <ross@soi.city.ac.uk>**20060206095048]
1659[update ref in comment
1660Ross Paterson <ross@soi.city.ac.uk>**20060206095139]
1661[Give -foverlapping-instances to Data.Typeable
1662simonpj@microsoft**20060206133439
1663 
1664 For some time, GHC has made -fallow-overlapping-instances "sticky":
1665 any instance in a module compiled with -fallow-overlapping-instances
1666 can overlap when imported, regardless of whether the importing module
1667 allows overlap.  (If there is an overlap, both instances must come from
1668 modules thus compiled.)
1669 
1670 Instances in Data.Typeable might well want to be overlapped, so this
1671 commit adds the flag to Data.Typeable (with an explanatory comment)
1672 
1673 
1674]
1675[Add -fno-bang-patterns to modules using both bang and glasgow-exts
1676simonpj@microsoft.com**20060203175759]
1677[When splitting a bucket, keep the contents in the same order
1678Simon Marlow <simonmar@microsoft.com>**20060201130427
1679 To retain the property that multiple inserts shadow each other
1680 (see ticket #661, test hash001)
1681]
1682[add foldr/build optimisation for take and replicate
1683Simon Marlow <simonmar@microsoft.com>**20060126164603
1684 This allows take to be deforested, and improves performance of
1685 replicate and replicateM/replicateM_.  We have a separate problem that
1686 means expressions involving [n..m] aren't being completely optimised
1687 because eftIntFB isn't being inlined but otherwise the results look
1688 good. 
1689 
1690 Sadly this has invalidated a number of the nofib benchmarks which were
1691 erroneously using take to duplicate work in a misguided attempt to
1692 lengthen their runtimes (ToDo).
1693]
1694[Generate PrimopWrappers.hs with Haddock docs
1695Simon Marlow <simonmar@microsoft.com>**20060124131121
1696 Patch originally from Dinko Tenev <dinko.tenev@gmail.com>, modified
1697 to add log message by me.
1698]
1699[[project @ 2006-01-19 14:47:15 by ross]
1700ross**20060119144715
1701 backport warning avoidance from Haddock
1702]
1703[[project @ 2006-01-18 11:45:47 by malcolm]
1704malcolm**20060118114547
1705 Fix import of Ix for nhc98.
1706]
1707[[project @ 2006-01-17 09:38:38 by ross]
1708ross**20060117093838
1709 add Ix instance for GeneralCategory.
1710]
1711[TAG Initial conversion from CVS complete
1712John Goerzen <jgoerzen@complete.org>**20060112154126]
1713Patch bundle hash:
171452574bfb877dc9151556388d10344251cb4bd72d