Fortress Repository Internals

Setting

Source files are either suffixed .fss (Fortress component) or .fsi (Fortress API).

These are converted into AST files (.tfs for component, .tfi for API).

Components and APIs can import (depend on) APIs.

The system may be run in one of (at least) two modes, "compile" or "run".

"Compile" merely checks the correctness of a single component or API (and also the APIs that are transitively imported).

"Run" also requires that each API be implemented; thus, if component A imports API B, exported by API C, then A depends on both B and C.

Syntax expansion, at one time, potentially caused the contents of a component to depend upon the contents of another component (that is, A depends on C because C expands syntax found in A), but this has been revised. Nonetheless, the temporary existence of the troublesome dependence forced repositories to be very careful about how the compute dependences; in particular, an explicit dependence graph is built, topologically sorted, and iterated over.