Changes between Version 12 and Version 13 of Commentary/Libraries


Ignore:
Timestamp:
Aug 28, 2009 11:38:05 AM (5 years ago)
Author:
simonpj
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Commentary/Libraries

    v12 v13  
    11= GHC Commentary: Libraries = 
    22 
    3 All GHC build trees contain a set of libraries: 
     3All GHC build trees contain a set of libraries, called the '''Boot Packages'''.  These are the libraries that GHC's source code imports.  Obviously you need the boot packages to build GHC at all (whether the stage-1 or stage-2 compiler). 
    44 
    5  * The '''Boot Packages''' are the libraries that GHC's source code imports.  Obviously you need the boot packages to build GHC at all (whether the stage-1 or stage-2 compiler). 
     5The Boot Packages, along with the other subcomponents of the GHC build system, are in the file `packages` in a GHC tree. To get a list of them, you can run `make show VALUE=PACKAGES` in a configured GHC build tree.  (This variable is set in `$(TOP)/ghc.mk`.) 
    66 
    7  * The '''Zero-boot Packages''' are a small subset of the boot packages.  Since GHC's source code imports the boot packages, ''even the bootstrap compiler must have the boot packages available''.  But for certain fast-moving boot packages (eg Cabal), we don't want to rely on the user having installed a bang-up-to-date version of the package.  So we begin the entire build process by installing the zero-boot packages in the bootstrap compiler.  (This installation is purely local to the build tree.)  The bootstrap compiler is expected to have all other (non-zero-) boot packages already installed. 
     7Every installation of GHC includes the Boot Packages. 
     8 
     9== Zero-boot package === 
     10 
     11The '''Zero-boot Packages''' are a small subset of the boot packages.  Since GHC's source code imports the boot packages, ''even the bootstrap compiler must have the boot packages available''.  But for certain fast-moving boot packages (eg Cabal), we don't want to rely on the user having installed a bang-up-to-date version of the package.  So we begin the entire build process by installing the zero-boot packages in the bootstrap compiler.  (This installation is purely local to the build tree.)  The bootstrap compiler is expected to have all other (non-zero-) boot packages already installed. 
    812 
    913As time goes on, a Zero-boot package may become an ordinary boot package, because the bootstrap compiler is expected to have (a sufficiently up to date) version of the package already. 
    1014 
    11 The Boot Packages, along with the other subcomponents of the GHC build system, are in the file `packages` in a GHC tree. To get a list of them, you can run `make show VALUE=PACKAGES` in a configured GHC build tree.  (This variable is set in `$(TOP)/ghc.mk`.) 
     15The current Zero-boot packages are: 
     16 * `Cabal`: we frequently update Cabal and GHC in sync 
     17 * `filepath` 
    1218 
    1319== Classifying the boot packages == 
     
    2026 
    2127Most boot libraries are INDEPENDENT.  INDEPENDENT libraries have a 
    22 master repository somewhere separate from the GHC repositories. 
     28master repository somewhere separate from the GHC repositories.  Whenever we release GHC, we ensure that the INDEPENDENT boot libraries that come with GHC are precisely sync'd with a particular released version of that library. 
     29 
     30The current classification of packages is: 
     31  * SPECIFIC: `ghc-prim`, `template-haskell`, `DPH` 
     32  * COUPLED: `base` 
     33  * INDEPENDENT: all other packages 
    2334 
    2435== Structure of the boot packages == 
     
    5667The `haskell98`, `old-time` and `random` packages are mostly only needed for Haskell 98 support, although `dph` currently uses `random` too. 
    5768 
    58 The current classification of packages is: 
    59   * SPECIFIC: `ghc-prim`, `template-haskell` 
    60   * COUPLED: `base` 
    61   * INDEPENDENT and Zero-Boot: `Cabal`, `filepath` 
    62   * INDEPENDENT: all other packages 
     69