Changes between Version 9 and Version 10 of Commentary/Packages


Ignore:
Timestamp:
May 17, 2011 6:05:42 AM (4 years ago)
Author:
dterei
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Commentary/Packages

    v9 v10  
    1212 
    1313 Cabal:: 
    14    Cabal is a Haskell library, which provides basic datatypes for the package system, and support for building, 
     14   Cabal is a Haskell library, which provides basic data types for the package system, and support for building, 
    1515   configuring, and installing packages. 
    1616 
     
    6363== Design constraints == 
    6464 
    65  1. We want [wiki:Commentary/Compiler/RecompilationAvoidance] to work.  This means that symbol names should not contain any information that varies too often, such as the ABI hash of the module or package.  The ABI of an entity should depend only on its definition, and the definitons of the things it depends on. 
     65 1. We want [wiki:Commentary/Compiler/RecompilationAvoidance recompilation avoidance] to work.  This means that symbol names should not contain any information that varies too often, such as the ABI hash of the module or package.  The ABI of an entity should depend only on its definition, and the definitions of the things it depends on. 
    6666 
    6767 2. We want to be able to detect ABI incompatibility.  If a package is recompiled and installed over the top of the old one, and the new version is ABI-incompatible with the old one, then packages that depended on the old version should be detectably broken using the tools. 
     
    7575    * Shared library upgrades.  We want to be able to substitute a new ABI-compatible shared library for an old one, and all the existing binaries linked against the old version continue to work. 
    7676    * ABI compatibility is dependent on GHC too; changes to the compiler and RTS can introduce ABI incompatibilities.  We 
    77       guarantee to only make ABI incompatible changes in a major release of GHC.  Between major releases, ABI compatibilty 
     77      guarantee to only make ABI incompatible changes in a major release of GHC.  Between major releases, ABI compatibility 
    7878      is ensured; so for example it should be possible to use GHC 6.12.2 with the packages that came with GHC 6.12.1. 
    7979 
     
    100100 
    101101  * `PackageSymbolId`: We do not use the `InstalledPackageId` as the symbol prefix in the compiled code, because  
    102     that interacts badly with [wiki:Commentary/Compiler/RecompilationAvoidance].  Every time we pick a 
     102    that interacts badly with [wiki:Commentary/Compiler/RecompilationAvoidance recompilation avoidance].  Every time we pick a 
    103103    new unique `InstalledPackageId` (e.g. when reconfiguring the package), we would have to recompile 
    104104    the entire package.  Hence, the `PackageSymbolId` is picked deterministically for the package, e.g.