Dynamic extensibility is the ability to incorporate new classes into an application at runtime. Reflection makes it possible for a language to extend its own domain, e.g., to built type-orthogonal functionality. MetaBETA is an extension of the BETA language that supports dynamic extensibility and reflection. MetaBETA has has a metalevel interface that provides access to the state of a running application and to the default implementation of language primitives.
This report presents the model behind MetaBETA. In particular, we discuss the execution model of a MetaBETA program and how type-orthogonal abstractions can be built. This includes presentation of dynamic slots, a mechanism that makes is possible extend objects at runtime. The other main area covered in this report is the implementation of MetaBETA. The central component of the architecture is a runtime system, which is viewed as a virtual machine whose baselevel interface implements the functionality needed by the programming language.
Click here to retrieve the whole document in PostScript (42 pages, 759Kb).