Changes between Version 4 and Version 5 of Commentary/Packages


Ignore:
Timestamp:
Jul 10, 2009 1:44:59 PM (6 years ago)
Author:
simonmar
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Commentary/Packages

    v4 v5  
    3030== Identifying Packages == 
    3131 
    32  `PackageName`:: 
    33     A string, e.g. "base".  Defined in `Distribution.Package`.  Does not uniquely identify a package: the package 
     32 `PackageName` ("base"):: 
     33    A string.  Defined in `Distribution.Package`.  Does not uniquely identify a package: the package 
    3434    database can contain several packages with the same name. 
    3535 
    36  `PackageIdentifier`:: 
     36 `PackageIdentifier` ("base-4.1.0.0"):: 
    3737    A `PackageName` plus a `Version`.  Does uniquely identify a package, but only by convention (we may lift 
    3838    this restriction in the future).  `InstalledPackageInfo` contains the field `package :: PackageIdentifier`. 
    3939 
    40  `InstalledPackageId`::  
    41     An opaque string.  Each package is uniquely identified by its `InstalledPackageId`.  Dependencies 
     40 `InstalledPackageId` ("base-4.1.0.0-1mpgjN")::  
     41    A string that uniquely identifies a package in the database.  Dependencies 
    4242    between installed packages are also identified by the `InstalledPackageId`. 
    4343 
    44  `PackageId`:: 
     44 `PackageId` (these currently look like "base-4.1.0.0" in GHC 6.12):: 
    4545    Inside GHC, we use the type `PackageId`, which is a `FastString`.  The (Z-encoding of) `PackageId` prefixes each 
    4646    external symbol in the generated code, so that the modules of one package do not clash with those of another package, 
     
    7171We need to talk about some more package Ids: 
    7272 
    73   * `InstalledPackageId`: the identifier of a package in the package database.  The `InstalledPackageId` is just a string, 
    74     but it may contain the package name and API version for documentation. 
    7573  * `PackageSymbolId`: the symbol prefix used in compiled code. 
    7674  * `PackageLibId`: the package Id in the name of a compiled library file (static and shared). 
     
    121119 * The previous schemes only allow compatible ABI changes to be made.  If we want to allow incompatible changes to be 
    122120   made, then we need something like ELF's symbol versioning.  This is probably overkill, since we will be making 
    123    incompatible ABI changes in the compiler and RTS at regular intervals anyway.  ABI compatibility is more important 
    124    between major releases of the compiler. 
     121   incompatible ABI changes in the compiler and RTS at regular intervals anyway, so long-term ABI compatibility is 
     122   impractical at this stage. 
    125123