|The melting ice technology (1): compilers & interpreters email@example.com (1994-05-09)|
|The melting ice technology (2): levels firstname.lastname@example.org (1994-05-09)|
|Re: The melting ice technology (2): levels email@example.com (1994-05-12)|
|Re: The melting ice technology (2): levels firstname.lastname@example.org (1994-05-13)|
|Re: The melting ice technology (2): levels email@example.com (1994-05-13)|
|Re: The melting ice technology (2): levels firstname.lastname@example.org (1994-05-14)|
|Re: The melting ice technology (2): levels email@example.com (1994-05-16)|
|From:||firstname.lastname@example.org (Bertrand Meyer.)|
|Organization:||Interactive Software Engineering, Santa Barbara|
|Date:||Mon, 9 May 1994 18:25:20 GMT|
[This message assumes that the reader is familiar with the preceding one,
labeled as part 1.]
Simplifying things a bit, ISE's Melting Ice Technology relies on four
S3: An intermediate form
S1: Machine code
The translation `comp [S2, S1]' is provided by the combination of some C
compiler and some linker. This is a potentially long process; worse, it is
usually proportional to the size of the entire program being compiled, not
to the size of incrementally changed elements.
S3 has been designed in such a way that:
- There exists a translator comp [S3, S2]
- There also exists an interpreter interp [S3].
The great advantage of the Melting Ice for users of ISE Eiffel follows
from the existence of an automatic change analysis mechanism which, after
a user has performed a sequence of changes to an existing program -
however big the program, for example EiffelBench itself with its 2,500
classes or so, and however extensive and complex the set of changes - will
quickly detect the minimum program subset that must be re-processed as a
result of the changes. The Melting Ice mechanism will then re-execute the
comp [S4, S3]
on the identified program subset. Then there is no need to go through C
compilation and linking, that is to say, through
comp [S3, S2] ; comp [S2, S1]
Instead any changed part, known as the ``melted'' part, is executed
directly through `interp [S3]'.
What is truly remarkable, of course, is that this process still yields
acceptable execution speed, and in particular that (in contrast with the
commercially available incremental compilers that we have seen) there is
no major performance overhead, such as long startup times, bloated
executables etc. Melting itself is extremely fast - often just a few
seconds after a typical set of changes to a possibly large program.
Once in a while the user may ``refreeze'' the melted parts; this means
applying the further steps of compilation
/5/ comp [S3, S2] ; comp [S2, S1]
to the parts that have been melted since the last freeze.
Personal Eiffel for Windows is a melt-only compiler, meaning that
refreezing (operation /5/) is not supported. In practice this implies that
users have access to the entire compiling and environment facilities, with
only one exception: since the process stops at S3 no C code is generated.
A big advantage of this approach is that even though the implementation
technology remains C-based internally, users of Personal Eiffel for
Windows do not need to buy a C compiler.
Since Personal Eiffel for Windows comes with the full set of precompiled
EiffelBase, EiffelLex and EiffelParse libraries (several thousand of
available reusable features), there is in fact a lot of C code (S2) in its
machine form (S1) present in any user-developed program. But anything that
is added to that reusable base is melted rather than C-compiled.
It would thus be incorrect to say that Personal Eiffel for Windows is an
interpreter. It is definitely a compiler - in fact, exactly the same
compiler as Professional Eiffel (for Unix, for Windows or for other
supported platforms). But for non-precompiled code it stops the
compilation process at the S3 level instead of going on to S2 and S1, that
is to say, generation of C and machine code.
In Professional Eiffel for Windows (to be released soon) freezing will be
available as well as melting. The necessary C compiler, for users who do
not already have one, will be available from ISE.
Note: this being cross-posted to comp.compilers I have used the common
term ``program'' rather than the normal Eiffel term ``system''.
Return to the
Search the comp.compilers archives again.