An overview of the building module's role and abilities.


§1. Prerequisites. The building module is a part of the Inform compiler toolset. It is presented as a literate program or "web". Before diving in:

§2. Services for builders. This module is essentially middleware. It does none of the proactive business of compiling, but instead acts as a bridge to the low-level functions in the bytecode module, allowing them to be used with much greater ease.

In particular, Inter code is fundamentally a mass of inter_packages, which cross-reference each other using inter_symbols. But of course it cannot all be made simultaneously. What we need is a more flexible way to describe things in the Inter tree: both those which have already been made, and also those which are yet to be made. So:

                DEFINITELY MADE     PERHAPS NOT YET MADE
    PACKAGE     inter_package       package_request
    SYMBOL      inter_symbol        inter_name

So, for example, a package_request can represent /main/synoptic/kinds either before or after that package has been built. At some point the package ceases to be virtual and comes into being: this is called "incarnation".

And similarly for inter_name, which it would perhaps be more consistent to call a symbol_request.

§3. Since what is built by the code in this module is Inter code, which forms up into trees, the metaphor should perhaps be "garden", but in fact we call a context for making Inter a building_site.