Architecture of Montana: An open and extensible programming environment with an incremental C++ compiler
Abstract
Montana is an open, extensible integrated programming environment for C++ that supports incremental compilation and linking, a persistent code cache called a CodeStore, and a set of programming interfaces to the CodeStore for tool writers. CodeStore serves as a central source of information for compiling, browsing, and debugging. CodeStore contains information about both the static and dynamic structure of the compiled program. This information spans files, macros, declarations, function bodies, templates and their instantiations, program fragment dependencies, linker relocation information, and debugging information. Montana allows the compilation process to be extended and modified. Montana has been used as the basis of a number of tools, and is also used as the infrastructure of a production compiler, IBM's Visual Age C++ 4.0.