library reorganisation
This is the place I'm going to record the planned reorganisations to the packages we ship with GHC. Some of this may happen for 6.6. Please comment.
Goals
-
make the base package less monolithic by extracting parts into separate packages
-
hence reduce the amount of library code that needs to be built to bootstrap GHC.
-
make it possible to build and ship GHC with a minimal set of libraries, without
removing the possibility of delivering it with a more comprehensive set too.
-
packages provided with a GHC installation should be upgradable.
Activities
-
GHC's libraries need to be built using Cabal. Some of the things we need to do
before this can happen:
* Cabal needs support for using a specific package database
* we need to support
-split-objs
with--make
-
Abstract away from the particular packages that are built in the GHC tree. Make
It possible to populate
libraries
with any Cabal packages you like, whichare built and installed with GHC. (subject to the minimum requirements: base,
haskell98, unix, template-haskell, readline, ...).
Library reorganisation
The following modules could be removed from base (perhaps not exhaustive, and there may be dependencies I haven't considered):
Control.Applicative
Data.Array.*
Data.Foldable
Data.Graph
-
Data.HashTable
(replace with Jan-Willem Maessen's version) Data.IntMap
Data.IntSet
Data.Map
Data.Monoid
Data.Sequence
Data.Set
Data.Traversable
Data.Tree
-
Text.Html
(tonetwork
package?) Text.PrettyPrint.*
Text.Printf
-
Text.Regex
(integrate with, or replace by, JRegex?)
Some libraries we want to add:
-
FastPackedStrings (replace
Data.PackedString
)
These were deprecated in 6.4, and can be removed now:
Data.FiniteMap
- old interface in
Data.Set
-
withObject
inForeign.Marshal.Utils
These are deprecated now, and can be removed later:
Data.FunctorM
Data.Queue