Skip to content
  • Edward Z. Yang's avatar
    Rename PackageId to PackageKey, distinguishing it from Cabal's PackageId. · 4bebab25
    Edward Z. Yang authored
    
    
    Summary:
    Previously, both Cabal and GHC defined the type PackageId, and we expected
    them to be roughly equivalent (but represented differently).  This refactoring
    separates these two notions.
    
    A package ID is a user-visible identifier; it's the thing you write in a
    Cabal file, e.g. containers-0.9.  The components of this ID are semantically
    meaningful, and decompose into a package name and a package vrsion.
    
    A package key is an opaque identifier used by GHC to generate linking symbols.
    Presently, it just consists of a package name and a package version, but
    pursuant to #9265 we are planning to extend it to record other information.
    Within a single executable, it uniquely identifies a package.  It is *not* an
    InstalledPackageId, as the choice of a package key affects the ABI of a package
    (whereas an InstalledPackageId is computed after compilation.)  Cabal computes
    a package key for the package and passes it to GHC using -package-name (now
    *extremely* misnamed).
    
    As an added bonus, we don't have to worry about shadowing anymore.
    
    As a follow on, we should introduce -current-package-key having the same role as
    -package-name, and deprecate the old flag.  This commit is just renaming.
    
    The haddock submodule needed to be updated.
    
    Signed-off-by: default avatarEdward Z. Yang <ezyang@cs.stanford.edu>
    
    Test Plan: validate
    
    Reviewers: simonpj, simonmar, hvr, austin
    
    Subscribers: simonmar, relrod, carter
    
    Differential Revision: https://phabricator.haskell.org/D79
    
    Conflicts:
    	compiler/main/HscTypes.lhs
    	compiler/main/Packages.lhs
    	utils/haddock
    4bebab25