[project @ 2002-12-18 16:29:25 by simonmar]
authorsimonmar <unknown>
Wed, 18 Dec 2002 16:29:25 +0000 (16:29 +0000)
committersimonmar <unknown>
Wed, 18 Dec 2002 16:29:25 +0000 (16:29 +0000)
"Auto" packages.

The big change here is that it is no longer necessary to explicitly
say '-package X' on the command line if X is a package containing
hierarchical Haskell modules.  All packages marked "auto" contribute
to the import path, so their modules are always available.  At link
time, the compiler knows which packages are actually used by the
program, and it links in only those libraries needed.

There's one exception: one-shot linking.  If you link a program using

    ghc -o prog A.o B.o ...

then you need to explicitly add -package flags for each package
required (except base & haskell98) because the compiler has no
information about the package dependencies in this case.

Package configs have a new field: auto, which is either True or False.
Non-auto packages must be mentioned on the command-line as usual.
Non-auto packages are still required for:

  - non-hierarchical libraries (to avoid polluting the module namespace)

  - packages with no Haskell content

  - if you want more than one version of a package, or packages
    providing overlapping functionality where the user must decide
    which one to use.

Doc changes to follow...

base.conf.in

index c490b41..9d97361 100644 (file)
@@ -2,6 +2,7 @@
 
 Package {
         name           = "base",
+       auto           = True,
 #ifdef INSTALLING
        import_dirs    = [ "$libdir/imports/base" ],
 #else