ComponentPascal is a Pascal-family language, which supports object oriented programming styles. Its immediate ancestors are Oberon-2 [OberonLanguage], ModulaTwo and PascalLanguage. The language has single inheritance, and allows independent compilation of modules. The language has a rich system of type annotations that are intended to make the programming of software components robust and type-safe.
In particular the language avoids many of the classic problems of object oriented programming, such as the so-called fragile base class problem. How does it do that? Classes and methods may be extended only if they are annotated as extensible, and each new method declaration must declare whether it is intended to override an existing method, or is intended to be new.
Apart from any inherent interest in the language itself, the use of ComponentPascal as a test case for the runtime platform is a useful one.
Pascal-family languages have a number of constructs that do not occur in languages of the C-family, so that there are a number of new problems to be solved. These issues include nested procedure definitions, non-local addressing, and a different notion of identifier visibility.