Starting with tag: [TAG 0.7 Don Stewart **20060804090650] [notes Don Stewart **20060804093009] [add some missing functions to Char8 Don Stewart **20060804093043] [this is now the 0.8 branch Don Stewart **20060804093255] [remember that we still have to fix groupBy Don Stewart **20060804095000] [Encourage users to use -funbox-strict-fields Don Stewart **20060807042123] [comment out some tests we don't use now Don Stewart **20060812042504] [Sync 0.8 and streams api Don Stewart **20060812042515] [wibble Don Stewart **20060812042544] [wibbles Don Stewart **20060812042644] [Add lazy-as-available byte strings agl@imperialviolet.org**20060813194125 Lazy reading of network sockets is fantastic, but often you need to process data as it's sent. Currently you can either set the block size to 1 byte or you have to wait for an entire block to be read. This adds the (terribly named) hGetSomeContentsN, which returns the contents of a handle, lazily, but in a timely fashion. ] [comment out lengthU rules, now there's no lengthU dons@cse.unsw.edu.au**20060814002542] [Merge dons@cse.unsw.edu.au**20060814003049] [lazy init isn't O(1), I think it should be O(n/c) Don Stewart **20060819042149] [Rewrite some lazy consumers so they don't cause space leaks Duncan Coutts **20060814020004] [Merge from the unstable branch. API mostly, and hGetSome story. Add fast 'empty()' while I'm here Don Stewart **20060822133026] [no more findIndexOrEnd exported Don Stewart **20060822135201] [no more joinWithByte Don Stewart **20060822135841] [remove some bogus things done better with rules Don Stewart **20060822142305] [fix Properties.hs Don Stewart **20060822143005] [hide hGet*N functions in .Lazy Don Stewart **20060822144158] [no more tokens Don Stewart **20060822144710] [inline words, don't export hGet*N from .Lazy.Char8 Don Stewart **20060822145337] [no more tokens QC Don Stewart **20060822145445] [No, I can't just merge createAndTrim straight from unstable Don Stewart **20060822151838] [good bye packWith/unpackWith Don Stewart **20060822153959] [rule for join -> joinByte Don Stewart **20060823071407] [rules for break/breakByte and span/spanByte Don Stewart **20060823073808] [propeties for the new rules Don Stewart **20060823075135] [add rules for break isSpace -> breakSpace Don Stewart **20060823075814] [Add rule for specialise dropWhile isSpace -> dropSpace Don Stewart **20060823080532] [fix build for hugs Don Stewart **20060823090227] [more hugs fixes Don Stewart **20060823090814] [fusion wibbles Don Stewart **20060824040553] [update Bench.hs to new api Don Stewart **20060824042140] [hide internal module from haddock in Data.ByteString Don Stewart **20060828010842] [wibbe Don Stewart **20060905020458] [hide LPS constructor. move lazy bytestring defn in to .Base Don Stewart **20060907082102] [Fix testsuite Don Stewart **20060907082136] [add fromChunks/toChunks Don Stewart **20060907083254] [Fix type an implementation of toChunks. Duncan Coutts **20060907182429 It should be returing a list of chunks! :-) Spotted by int-e. ] [add readInteger for *.Char8, and add appropriate quickcheck properties Bertram Felgenhauer **20060907210243] [remove leftover strictness annotations. they seemed to hurt more than help. Bertram Felgenhauer **20060907212129] [remove tokens and mapAccumR from .Lazy Don Stewart **20060909044423] [and another tokens occurence Don Stewart **20060909044658] [fix hugs Don Stewart **20060909045538] [fix hugs nice and good Don Stewart **20060909050020] [Fix lazyness of take, drop & splitAt. Duncan Coutts **20061004111822 Spotted by Einar Karttunen. Thanks to him and to Bertram Felgenhauer for explaining the problem and the fix to me. ] [make cons create 16 byte chunks instead of 17 byte chunks for lazy butestrings Bertram Felgenhauer **20061007141231] [export the right 'cycle' Don Stewart **20061110014621] [import portability fixes from Ross's base commits Don Stewart **20061110021347] [remove a slighly suspicious use of unsafeCoerce# Don Stewart **20061120115933] [double check blank lines (since QC isn't generating them for us) Don Stewart **20061125064030] [portability: give alternate import modules for nhc98 Malcolm.Wallace@cs.york.ac.uk**20061116112452] [Workaround for import resolution bug in nhc98. Malcolm.Wallace@cs.york.ac.uk**20061116112651 Where there are multiple renamed imports: import X as P import Y as P import Z as P and they all export or re-export the same entity e, nhc98 does not seem to be able to recognise that P.e is a unique entity, despite X.e, Y.e, and Z.e all referring to the same thing. This patch just introduces an extra module name import X as S so that S.e is resolvable. ] [workaround nhc98 import resolution bug for another module Malcolm.Wallace@cs.york.ac.uk**20061116113410] [wibbles to fix ghc build Don Stewart **20061203033218] [Setup.lhs Don Stewart **20061203034405] [Fixups for building with nhc98 - inadvertently missed this file earlier. Malcolm.Wallace@cs.york.ac.uk**20061204120912] [In teh testsuite, always pass the same GHC options, via ${GHCFLAGS} Ian Lynagh **20070124150146] [Test the library in-place rather than whatever is installed Ian Lynagh **20070124151123] [Add a unit tests file, a test that append is lazy in the tail, and make it so. Ian Lynagh **20070124160043 Append was looking at the tails to see whether or not it was [], which forced evaluation of the tail in situations where that is undesirable. ] [Add lazybuild test Ian Lynagh **20070124161853] [Hide build noice when running tests Ian Lynagh **20070124162017] [HEADS UP: Change CString api Don Stewart **20070130024408 Formerly, the CString api was very unsafe. The old api consisted of: Zero-copying, efficient. Unsafe if you mutate the C string, in the case of packMallocCString, if you run the finalisers twice: packCString :: CString -> ByteString packCStringLen :: CStringLen -> ByteString packMallocCString :: CString -> ByteString useAsCStringLen :: ByteString -> (CStringLen -> IO a) -> IO a Safe. Copies the ByteString: copyCString :: CString -> IO ByteString copyCStringLen :: CStringLen -> IO ByteString useAsCString :: ByteString -> (CString -> IO a) -> IO a Note that the default functions, packCString et al are fundamentally unsafe. By modifying the CString (or Ptr) passed to them, it is possible to mutate the ByteString, breaking referential transparency for pure Haskell code. First step, move these functions into IO, and tag those that are unsafe with the name 'unsafe'. Secondly, all unsafe* functions are moved into Data.ByteString.Base. The API is also sanitised a bit, becoming: Data.ByteString: packCString :: CString -> IO ByteString packCStringLen :: CStringLen -> IO ByteString useAsCString :: ByteString -> (CString -> IO a) -> IO a useAsCStringLen :: ByteString -> (CStringLen -> IO a) -> IO a Safe, always copies to and from the CString*. Dangerous, efficient api, suitable for constant CStrings only (and may have other guarantees, such as null termination): unsafeUseAsCString :: ByteString -> (CString -> IO a) -> IO a unsafeUseAsCStringLen :: ByteString -> (CStringLen -> IO a) -> IO a unsafePackCString :: CString -> IO ByteString unsafePackCStringLen :: CStringLen -> IO ByteString unsafePackMallocCString :: CString -> IO ByteString Currently untested, though the code was only suffled around. All QC tests pass, but they don't exercise the CString api. ] [add iavor's CString test Don Stewart **20070130025217] [remove filterNotByte, and its rules. Its a rather pointless rule (filter -> filterNotByte -> filter) Don Stewart **20070205020018] [Make fromForeignPtr take the start so it is truly the inverse of toForeignPtr Ian Lynagh **20070202154627] [transforming Don Stewart **20070212004317] [adhering to agile principles, requiring a boot-in-place to run the tests on each commit is removed.. Don Stewart **20070212004501] [no boot-in-place Don Stewart **20070213065256] [comment only Don Stewart **20070213065321] [Make the lazy cons lazy, and add a cons' for when you want it to be strict Ian Lynagh **20070201140835] [Correct docs for Data.ByteString.Lazy.Char8.cons Ian Lynagh **20070201155054] [Add cons' to Lazy.Char8 too Ian Lynagh **20070201155643] [Add complexity to Lazy.cons' docs Ian Lynagh **20070201155906] [Define headTail :: ByteString -> Maybe (Word8, ByteString) Ian Lynagh **20070201161048] [headTail -> uncons dons@cse.unsw.edu.au**20070215034944] [Makefile build system for nhc98 Malcolm.Wallace@cs.york.ac.uk**20061124142035] [need things from cbits directory for nhc98 build Malcolm.Wallace@cs.york.ac.uk**20061204120154] [fps package needs extra stack to build (+ add D.BS.Char8) Malcolm.Wallace@cs.york.ac.uk**20061208103626] [Implement byteswapping, used for endian fiddling. Malcolm.Wallace@cs.york.ac.uk**20070227163230 If the ByteString is going to end up being interpreted as a binary representation of a sequence of 4-byte quantities (e.g. Float), then one might need to change the endianness (byte ordering) of the representation. This patch adds the API call byteswap :: ByteString -> ByteString for such applications. It assumes the bytestring will be a multiple of 4 in size. (If not, the last n<4 bytes will be untouched.) It also assumes (without checking) that the start of the bytestring has the correct alignment. ] [nhc now has hGetBuf/hPutBuf Don Stewart **20070301094400] [append on lazy bytestrings is O(n/c) (just the inital spine is copied0 Don Stewart **20070312122615] [Fix types of foreign imports Ian Lynagh **20070403194713] [Remove incorrectly typed commented out foreign imports Ian Lynagh **20070403194812] [old nhc98 Makefiles now obsolete Malcolm.Wallace@cs.york.ac.uk**20070525134324] [nhc98 needs extra stack to build for profiling Malcolm.Wallace@cs.york.ac.uk**20070531141202]