Changes between Version 4 and Version 5 of Commentary/Packages
- Timestamp:
- 07/10/09 06:44:59 (4 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
Commentary/Packages
v4 v5 30 30 == Identifying Packages == 31 31 32 `PackageName` ::33 A string , e.g. "base". Defined in `Distribution.Package`. Does not uniquely identify a package: the package32 `PackageName` ("base"):: 33 A string. Defined in `Distribution.Package`. Does not uniquely identify a package: the package 34 34 database can contain several packages with the same name. 35 35 36 `PackageIdentifier` ::36 `PackageIdentifier` ("base-4.1.0.0"):: 37 37 A `PackageName` plus a `Version`. Does uniquely identify a package, but only by convention (we may lift 38 38 this restriction in the future). `InstalledPackageInfo` contains the field `package :: PackageIdentifier`. 39 39 40 `InstalledPackageId` ::41 A n opaque string. Each package is uniquely identified by its `InstalledPackageId`. Dependencies40 `InstalledPackageId` ("base-4.1.0.0-1mpgjN"):: 41 A string that uniquely identifies a package in the database. Dependencies 42 42 between installed packages are also identified by the `InstalledPackageId`. 43 43 44 `PackageId` ::44 `PackageId` (these currently look like "base-4.1.0.0" in GHC 6.12):: 45 45 Inside GHC, we use the type `PackageId`, which is a `FastString`. The (Z-encoding of) `PackageId` prefixes each 46 46 external symbol in the generated code, so that the modules of one package do not clash with those of another package, … … 71 71 We need to talk about some more package Ids: 72 72 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.75 73 * `PackageSymbolId`: the symbol prefix used in compiled code. 76 74 * `PackageLibId`: the package Id in the name of a compiled library file (static and shared). … … 121 119 * The previous schemes only allow compatible ABI changes to be made. If we want to allow incompatible changes to be 122 120 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 important124 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. 125 123
