Director:Philippsen, M.
Period:January 1, 2006 - December 31, 2011
Coworker:Veldema, R.; Klemm, M.

Tapir is a new programming language to ease systems programming.
Systems programming includes networking protocols, operating systems, middlewares, DSM systems, etc. Such systems are critical for the functioning of a system as they supply services that are required by user applications. For example, an operating system supplies an operating environment and abstracts from concrete hardware in doing so. A DSM system simulates a single shared memory machine by abstracting from the single machines inside a cluster so that a (user-level application on a) cluster can be programmed without having to program explicit message passing.
Compared to application programming, systems programming has a different set of requirements. The programming 'style' is also very different from the styles used in programming user-level applications. Finally, the performance requirements are usually very strict in systems programs as the complete system's performance greatly relies on the underlying layers of systems programs. Bugs in systems code have also great repercussions on a complete system's reliability. Combined, we can directly conclude the following when using high-level languages for systems programming:

  • High-level languages, such as C++, C#, and Java 'hide' implementation details from the programmer. A programmer for example no longer needs to know how exactly a method call is implemented. This knowledge is, however, required when doing systems programming.
  • High-level languages supply functionality that is neither required nor wanted. For example, when programming an operating system, automatic language driven exception handling or garbage collection are not wanted.
  • Systems programs require no high abstraction levels like common high- level programming languages supply. Likewise, the libraries that a given language offers can simply not be supplied in a systems context. Usually this is due to the system itself supplying the functionality that the library is to provide.

The basics of the Tapir language have been created. While Tapir has some similarities to Java, C#, and C++, all unneeded and unwanted functionality of the above have been removed. For example, Tapir has no automatic memory management, no exception handling, and no type- casts. Class and object concepts have been kept, but inheritance has been removed. The resulting Tapir programs can be verified by means of model-checking, even while the programming is still being developed. Verification is made easy as code pieces that are implementation details can be marked as such so that they can be safely ignored by the verifier. Tapir code can be executed in parallel for example also on a graphics card without the possibility of the common programming errors associated with parallelism can occur.
Even while the language is still being developed, a prototype DSM protocol has already been implemented in the Tapir language. We have evaluated RDMA-based DSM protocols so that they can be added to the Tapir language. Tapir's semantic checks are implemented by means of model-checking. Model-checking, however, is a very memory intensive analysis. This made us write our own Java Virtual machine, called LVM, which is especially suited for managing large numbers of objects. LVM outperforms standard Java VMs as soon as swapping becomes necessary.

TAPIR Language Specification Compiler Distribution: June 2009 jcheck-dist-19-Jun-2009.tgz jcheck-dist-25-Sep-2009.tgz tapir-dist-19-Jun-2009.tgz tapir-dist-25-Sep-2009.tgz cdsm-dist-25-Sep-2009.tgz Tapir is also available as read-only subversion checkout using: "svn co https://faui2svn.informatik.uni-erlangen.de/svn/Manta/branches/tapir/compiler" and "svn co https://faui2svn.informatik.uni-erlangen.de/svn/Manta/branches/tapir/JCheck" and "svn co https://faui2svn.informatik.uni-erlangen.de/svn/Manta/CDSM". Please drop me an email if this doesn't work.
watermark seal