The change of size,
or content, of a data item to a function or as an
external definition

Incompatible

A bug fix, or internal enhancement to a function, providing the
semantic properties of the object remain unchanged

Compatible

A bug fix, or internal enhancement
to a function when the semantic properties of the object change

Incompatible

Note - Because of interposition, the addition of a symbol can constitute an incompatible
update. The new symbol might conflict with an applications use of that symbol.
However, this form of incompatibility does seem rare in practice as source-level
namespace management is commonly used.

Compatible updates can be accommodated by maintaining version definitions that are internal
to the object being generated. Incompatible updates can be accommodated by producing
a new object with a new external versioned name. Both of these versioning
techniques enable the selective binding of applications. These techniques also enable verification
of correct version binding at runtime. These two techniques are explored in more
detail in the following sections.