[GHC] #10871: Implement "fat" interface files which can be directly compiled without source
GHC
ghc-devs at haskell.org
Mon Oct 19 08:37:55 UTC 2015
#10871: Implement "fat" interface files which can be directly compiled without
source
-------------------------------------+-------------------------------------
Reporter: ezyang | Owner: ezyang
Type: feature request | Status: new
Priority: normal | Milestone:
Component: Compiler | Version: 7.11
Resolution: | Keywords: backpack
Operating System: Unknown/Multiple | Architecture:
| Unknown/Multiple
Type of failure: None/Unknown | Test Case:
Blocked By: | Blocking:
Related Tickets: | Differential Rev(s):
Wiki Page: |
-------------------------------------+-------------------------------------
Comment (by simonmar):
First, I absolutely agree that we should be able to use Backpack
without Cabal, indeed it must be so since Cabal is just a layer on top
of GHC.
The original intuition with Backpack was that building fully
instantiated packages can work exactly as it does now - we build
everything from the leaves up to the root in dependency order, no
extra mechanisms are needed. Furthermore, when dealing with
indefinite packages, we can generate interface files but not code.
I'm still not seeing anything in this that requires fat interface
files.
Let me re-answer your questions: What does it mean to
install an indefinite package? We install just the interface files,
so that we can typecheck against it. What does it mean to install a
package that instantiates an indefinite package? Just built and
install it! Then we have to build the package that it instantiates,
which is exactly how cabal-install works now.
I think your story is more complicated. You said "GHC can manage
compiling the instantiated units, since it can just resume that
compilation!" but that's blurring the boundary between Cabal and GHC,
since suddenly GHC has to go and compile *and install* things. I can
imagine this getting really messy. Better to have Cabal manage
building and installing things at the package level, like it does now.
GHC will need to know when it is just typechecking something
vs. compiling it against definite dependencies. Hence, Cabal will
also need a new command (or something) to do this - it's a new mode of
operation, and the user needs to be in control, so there's no escaping
this being visible at the Cabal level, I believe.
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/10871#comment:17>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list