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