The MetaBETA Project

A Meta-Level Architecture for BETA

The aim of the MetaBETA project is to design and implement a meta-level interface for the statically typed and compiled language BETA. A meta-level interface extends the expressibility of a programming language to allow programs to be written for the language and not just in the language. Functionality that depends on the language implementation is either impossible or very hard to express in most languages, e.g., object distribution, persistence, source-code interpreters, debuggers, source browsers. etc. The problem is that it is impossible for a running program to access class information, or overwrite the default implementation of language primitives, such as object creation, destruction, and invocation. In other words, to access meta-level information.

Most meta-level interfaces have been designed for dynamically typed and semi-interpreted languages. Implementing a meta-level interface for a statically typed and compiled language introduces several new problems:

To address these problems, our design is based on: (i) the meta-level architecture, which introduces a runtime system for a compiled language. The runtime system is viewed as a virtual machine that implements the functionality of the programming language, and therefore it provides a natural entity to be extended with a meta-level interface. And (ii) the meta-level interface is based on a novel language construct, a meta-reference called attribute reference. Attribute references extend the expressive power of the language by allowing the programmer to have typed references to instance variables, which is essential for implementing a meta-level interface.

Project Members:


Ph.D Students:


René W. Schmidt <>
This page is optimized for black-and-white SPARC ELC Xterminals.