This paper describes the system of interface files and recompilation checking in the Glasgow Haskell 1.3 Compiler. In developing this system our aim is to provide a separate compilation system which avoids unnecessary recompilation while performing significant inter-module optimisations. We associate a version number (based on the current timestamp) with each declaration and record the versions of all the imported declarations used when a module is compiled. When the module is recompiled the usage numbers are compared with the current version numbers to determine if the recompilation is unnecessary. The paper also describesa proposed system of source interfaces designedto dealwith the problem of cyclic module dependencies. This avoids the error-prone duplication of declarations by extracting the interface directly from the source code.
Download Full PDF Version (Non-Commercial Use)