Abstract
With current compiler technology, changing a single line in a large software system may trigger massive recompilations. If the change occurs in a file with shared declarations, all compilation units depending upon that file must be recompiled to assure consistency. However, many of those recompilations may be redundant, because the change may affect only a small fraction of the overall system.
Smart recompilation is a method for reducing the set of modules that must be recompiled after a change. The method determines whether recompilation is necessary by isolating the differences among program modules and analyzing the effect of changes. The method is applicable to languages with and without overloading. A prototype demonstrates that the method is efficient and can be added with modest effort to existing compilers.
- 1 Ada Programming Language, Military Standard. J. D. Ichbiah, United States Department of Defense, 1983.Google Scholar
- 2 BAKER, T.P. A one-pass algorithm for overload resolution in Ada. ACM Trans. Program. Lang. Syst. 4, 4 (Oct. 1982), 601-614. Google Scholar
- 3 BIRTWISTLE, G., ENDERIN, L., OHLIN, M., AND PALME, J. DECsystem-lO Simula Language Handbook Part 1. C8398, Swedish National Defense Research Institute, Mar. 1976.Google Scholar
- 4 DAUSMANN, M. Reducing recompilation costs for software systems in Ada. In System lmplementation Languages: Experience and Assessment, Proceedings of the IFIP WG2.4 Conference (Canterbury, UK, 1984) North-Holland, Amsterdam.Google Scholar
- 5 FELDMAN, S. Make--A program for maintaining computer programs. Softw. Pract. Exper. 9, 3 (Mar. 1979), 255-265.Google Scholar
- 6 LAUER, H. C. AND SATTERTHWAITE, E.H. The impact of Mesa on system design. In Proceedings of the 4th International Conference on Software Engineering (Sept. 1979), ACM, IEEE, ERO, GI, 174-182. Google Scholar
- 7 LEBLANG, D. B., AND CHASE, R. P. Computer-aided software engineering in a distributed workstation environment. SIGPLAN Not. 19, 5 (May 1984), 104-112. Google Scholar
- 8 MITCHELL, J. G., MAYBURY, W., AND SWEET, R. Mesa Language Manual. Tech. Rep. Xerox Palo Alto Research Center, Feb. 1978.Google Scholar
- 9 ROCHKIND, M.J. The source code control system. IEEE Trans. Softw. Eng. SE-I, 4 (Dec. 1975), 364-370.Google Scholar
- 10 SWEET, R.E. The Mesa programming environment. ACM SIGPLAN Not. 20, 7 (July 1985), 216-229. Google Scholar
- 11 TICHV, W. F. Software development control based on module interconnection. In Software Development Environments, A. I. Wasserman, Ed., IEEE Computer Society Press, 1981, 272-284. Also published in Proceedings of the 4th International Conference on Software Engineering. (Sept. 1979), IEEE, New York. Google Scholar
- 12 TICHY, W. F. A data model for programming support environments and its application. In Automated Tools for Information System Design and Development, H-J. Schneider and A. I. Wasserman, Eds., North-Holland, Amsterdam, 1982.Google Scholar
- 13 TICHY, W.F. The string-to-string correction problem with block moves. ACM Trans. Comput. Syst. 2, 4 (Nov. 1984), 309-321. Google Scholar
- 14 TICHY, W. F. RCS--A system for version control. Softw. Pract. Exper. 15, 7 (July 1985), 637-654. Google Scholar
- 15 WroTH, N. Programming in Modula-2. Springer-Verlag, New York, 1985.Google Scholar
Index Terms
- Smart recompilation
Recommendations
Smartest recompilation
POPL '93: Proceedings of the 20th ACM SIGPLAN-SIGACT symposium on Principles of programming languagesTo separately compile a program module in traditional statically-typed languages, one has to manually write down an import interface which explicitly specifies all the external symbols referenced in the module. Whenever the definitions of these external ...
Smarter recompilation
Tichy's Smart Recompilation method can be made smarter by permitting benign type inconsistencies between separately compiled modules. This enhanced method helps the programmer to make far-reaching changes in small, manageable steps.
Smart recompilation
POPL '85: Proceedings of the 12th ACM SIGACT-SIGPLAN symposium on Principles of programming languagesWith current compiler technology, changing a single line in a large software system may trigger massive recompilations. If the change occurs in a file with shared definitions, all compilation units depending upon that file must be recompiled to assure ...
Comments