A challenging issue in the construction and maintenance of large appli
cation systems is how to determine which components need to be rebuilt
after change, when and in which order. Rebuilding is typically recomp
ilation and linking, but may also include update of derivable componen
ts such as cross-reference databases and re-creation of library indexe
s. Type definitions or schema, and data values in a file store, databa
se or persistent store may also need to be rebuilt. The main purpose o
f this paper is to describe how persistent language technology can be
exploited to enhance build management. In particular, the paper descri
bes a method for transactional, incremental linking and the implementa
tion of its support. To help implement this method, and to make it saf
er and more efficient to carry out rebuild activities in general, we h
ave defined a set of automatically checkable constraints on the softwa
re. The build management tool we have implemented, the Builder, derive
s rebuild dependencies automatically and offers partitioning of depend
ency graphs-a means to defer or avoid unnecessary rebuilding. The Buil
der is implemented in a persistent programming language and provides b
uild management for applications written in the language. It exploits
features such as strong typing, runtime linguistic reflection, and ref
erential integrity provided by the language processing technology. The
Builder operates over both programs and (complex) data, which is in c
ontrast to conventional language-centred tools. (C) 1997 by John Wiley
& Sons, Ltd.