Abstract: ZL is a C++-compatible language in which high-level constructs, such
as classes, are defined using macros over a C-like core language. This
approach makes many parts of the language easily customizable. For example,
since the class construct can be defined using macros, a programmer
can have complete control over the memory layout of objects. Using
this capability, a programmer can mitigate certain problems in
software evolution such as fragile ABIs (Application Binary
Interfaces) due to software changes and incompatible ABIs due to
compiler changes. In this paper, we outline the problem of fragile and
incompatible ABIs and show how ZL can be used to solve them.