• simonmar's avatar
    [project @ 2004-11-26 16:19:45 by simonmar] · ef5b4b14
    simonmar authored
    Further integration with the new package story.  GHC now supports
    pretty much everything in the package proposal.
      - GHC now works in terms of PackageIds (<pkg>-<version>) rather than
        just package names.  You can still specify package names without
        versions on the command line, as long as the name is unambiguous.
      - GHC understands hidden/exposed modules in a package, and will refuse
        to import a hidden module.  Also, the hidden/eposed status of packages
        is taken into account.
      - I had to remove the old package syntax from ghc-pkg, backwards
        compatibility isn't really practical.
      - All the package.conf.in files have been rewritten in the new syntax,
        and contain a complete list of modules in the package.  I've set all
        the versions to 1.0 for now - please check your package(s) and fix the
        version number & other info appropriately.
      - New options:
    	-hide-package P    sets the expose flag on package P to False
    	-ignore-package P  unregisters P for this compilation
    	For comparison, -package P sets the expose flag on package P
            to True, and also causes P to be linked in eagerly.
            -package-name is no longer officially supported.  Unofficially, it's
    	a synonym for -ignore-package, which has more or less the same effect
    	as -package-name used to.
    	Note that a package may be hidden and yet still be linked into
    	the program, by virtue of being a dependency of some other package.
    	To completely remove a package from the compiler's internal database,
            use -ignore-package.
    	The compiler will complain if any two packages in the
            transitive closure of exposed packages contain the same
    	You *must* use -ignore-package P when compiling modules for
            package P, if package P (or an older version of P) is already
            registered.  The compiler will helpfully complain if you don't.
    	The fptools build system does this.
       - Note: the Cabal library won't work yet.  It still thinks GHC uses
         the old package config syntax.
    Internal changes/cleanups:
       - The ModuleName type has gone away.  Modules are now just (a
         newtype of) FastStrings, and don't contain any package information.
         All the package-related knowledge is in DynFlags, which is passed
         down to where it is needed.
       - DynFlags manipulation has been cleaned up somewhat: there are no
         global variables holding DynFlags any more, instead the DynFlags
         are passed around properly.
       - There are a few less global variables in GHC.  Lots more are
         scheduled for removal.
       - -i is now a dynamic flag, as are all the package-related flags (but
         using them in {-# OPTIONS #-} is Officially Not Recommended).
       - make -j now appears to work under fptools/libraries/.  Probably
         wouldn't take much to get it working for a whole build.