Separate Compilation for Standard ML
Abstract:
Languages that support abstraction and modular structure, such as
Standard ML, Modula, Ada, and (more or less) C++, may have deeply
nested dependency hierarchies among source files. In ML the problem
is particularly severe because ML's powerful parameterized module
(functor) facility entails dependencies among implementation modules,
not just among interfaces.
To efficiently compile individual modules in such languages, it is
useful (in ML, necessary) to infer, digest, and cache the static environment
resulting from the compilation of each module.
Our system provides a simple model of compilation and linkage that
supports incremental recompilation (a restricted form of separate
compilation) with type-safe linkage. This model is
made available to user programs in the form of a set of internal
compiler modules, a feature that we call the ``visible compiler.''
The chief client of this interface is the IRM incremental recompilation
manager from CMU.
- This technical report has been published as
- Separate Compilation for Standard ML. Andrew W. Appel and David
B. MacQueen, Proc. 1994 ACM Conf. on Programming
Language Design and Implementation,
(ACM/SIGPLAN Notcies vol. 29, number 6),
pp. 13-23, June 1994.