Changes between Version 12 and Version 13 of Commentary/Libraries
- Timestamp:
- 08/28/09 04:38:05 (4 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
Commentary/Libraries
v12 v13 1 1 = GHC Commentary: Libraries = 2 2 3 All GHC build trees contain a set of libraries :3 All 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). 4 4 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). 5 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`.) 6 6 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. 7 Every installation of GHC includes the Boot Packages. 8 9 == Zero-boot package === 10 11 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. 8 12 9 13 As 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. 10 14 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`.) 15 The current Zero-boot packages are: 16 * `Cabal`: we frequently update Cabal and GHC in sync 17 * `filepath` 12 18 13 19 == Classifying the boot packages == … … 20 26 21 27 Most boot libraries are INDEPENDENT. INDEPENDENT libraries have a 22 master repository somewhere separate from the GHC repositories. 28 master 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 30 The current classification of packages is: 31 * SPECIFIC: `ghc-prim`, `template-haskell`, `DPH` 32 * COUPLED: `base` 33 * INDEPENDENT: all other packages 23 34 24 35 == Structure of the boot packages == … … 56 67 The `haskell98`, `old-time` and `random` packages are mostly only needed for Haskell 98 support, although `dph` currently uses `random` too. 57 68 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
