Newsgroups: comp.object,comp.lang.smalltalk,comp.lang.ada
Path: cantaloupe.srv.cs.cmu.edu!das-news2.harvard.edu!oitnews.harvard.edu!newsfeed.rice.edu!uw-beaver!pysht.cs.washington.edu!jdean
From: jdean@pysht.cs.washington.edu (Jeffrey Dean)
Subject: Re: Has C++ had its day?
Message-ID: <DAMzrH.C6E@beaver.cs.washington.edu>
Sender: news@beaver.cs.washington.edu (USENET News System)
Reply-To: jdean@cs.washington.edu
Organization: University of Washington
References: <3q7tb1$1ct@holly.csv.warwick.ac.uk> <1995Jun12.135705.3580@merlin.hgc.edu> <3rsnp8$bqj@wally2.hti.net> <3s7ijs$jjb@gensym1.gensym.com> <DAJ73H.35M@world.std.com> <3sc5g3$hvl@gensym1.gensym.com>
Date: Fri, 23 Jun 1995 17:40:11 GMT
Lines: 73
Xref: glinda.oz.cs.cmu.edu comp.object:33486 comp.lang.smalltalk:24955 comp.lang.ada:31666

In article <3sc5g3$hvl@gensym1.gensym.com>, jsa@gensym.com () writes:
|> >>Now this seems to contradict your earlier statement.  For example, any
|> >>_additions_ to the spec couldn't modify any of the dependencies and thus
|> >>would not require any recompilation.
|> >
|> >Not true.  If you add a function that overloads something else (possibly
|> >in some faraway package), then this could affect overload resolution of
|> >something that can see both.  A previously-legal call to Foo could
|> >become ambiguous, because you added a new thing called Foo.  It's not
|> >trivial for an incremental compiler to get this right.
|> 
|> Indeed.  I suppose this is one of the reasons why Robert Dewar isn't exactly
|> enamoured of the idea of "incremental" recompilation...
|> 
|> /Jon

Although supporting incremental compilation is not trivial, it is
possible to do, by maintaining the appropriate dependencies between source
code and compiled code.  Our research in the Cecil project includes
exploring whole-program optimization for object-oriented languages,
while still maintaining incremental compilation.  We've written a
paper on supporting incremental compilation even though we perform various
cross-module optimizations.  The paper (and other papers on our
research) are available from our WWW site:

  http://www.cs.washington.edu/research/projects/cecil/www/cecil-home.html

They're also available via anonymous ftp from cs.washington.edu in the
directory /pub/chambers.

The abstract for the paper on incremental compilation is as follows:
--------------------------------------------------------------------
A Framework for Selective Recompilation in the Presence of Complex
Intermodule Dependencies

Craig Chambers, Jeffrey Dean, and David Grove 

Compilers and other programming environment tools derive information
from the source code of programs; derived information includes
compiled code, interprocedural summary information, and call graph
views. If the source program changes, the derived information needs to
be updated. We present a simple framework for maintaining intermodule
dependencies, embodying different tradeoffs in terms of space usage,
speed of processing, and selectivity of invalidation, that eases the
implementation of incremental update of derived information. Our
framework augments a directed acyclic graph representation of
dependencies with factoring nodes (to save space) and filtering nodes
(to increase selectivity), and it includes an algorithm for efficient
invalidation processing. We show how several schemes for selective
recompilation, such as smart recompilation, filter sets for
interprocedural summary information, and dependencies for
whole-program optimization of object-oriented languages, map naturally
onto our framework. For this latter application, by exploiting the
facilities of our framework, we are able to reduce the number of lines
of source code recompiled by a factor of seven over a header
file-based scheme, and by a factor of two over the previous
state-of-the-art selective dependency mechanism without consuming
additional space.

Appeared in ICSE'95 in Seattle, April, 1995. 
--------------------------------------------------------------------

The full text of the paper is available via the WWW:

  http://www.cs.washington.edu/research/projects/cecil/www/dependencies.html

-- Jeff

------------------------------------------------------------------------------
Jeffrey Dean (jdean@cs.washington.edu)         Graduate Student, Cecil Project
Dept. of Computer Science & Engineering               University of Washington
             http://www.cs.washington.edu/homes/jdean/index.html
------------------------------------------------------------------------------
