Contents

1 Updating to GHC 6.8 and Cabal 1.2

1.1 Cabal configuration support

1.2 Cabal API changes

Many packages that use non-default Setup.hs or Setup.lhs files need to be updated as they use Cabal APIs that have changed. In many cases new features in Cabal-1.2 allow these packages to go back to using the default Setup.hs.

These boot packages are included with ghc-6.8. If your package imports any of these modules, you need only add the corresponding packages to the build-depends line in your cabal file. However if you want to support both ghc-6.6 and ghc-6.8 you need to use the configurations feature in your .cabal file. For example:

1.4 Data.ByteString api changes

module Data.ByteString.Base has been split into two. The "unsafe" functions moved to Data.ByteString.Unsafe and the others moved into Data.ByteString.Internal. The stable API going forward is all the modules exposed by the bytestring package except for the .Internal modules and the .Fusion module.

The lazy bytestring representation type has changed. Instead of a newtyped list:

newtype ByteString = LPS [Strict.ByteString]

it is now:

data ByteString = Empty | Chunk !Strict.ByteString ByteString

The crucial difference is that in the latter representation we can unpack the strict bytestring into the

Chunk

constructor which reduces the number of indirections to get at the string data from two to one.