Zur Webseite der Informatik

Project SKilL

The Programming Languages and Compiler Group created the project SKilL. The goal of the project is to provide a platform for efficient intra-toolchain communication with a minimum of maintenance.

The heart of the project is a binary file format that has a formal specification and offers change tolerance as well as high decoding speed.
Tools can map it to an efficient graph representation matching their individual view onto the common intermediate representation. Special effort has been put into the design of the serialization interface.
We want to enable the user to access data via a generated API that is based on the tool's specification.
That way, we try to eliminate a significant amount of training required for new co-workers or students.
The format specification is a Java-like language that is used by the code generator to create a graph representation that feels natural in the target language. An open source implementation currently supporting Ada, C++, Java and Scala is available at https://github.com/skill-lang/skill.

In contrast to existing solutions, SKilL can deal with specification changes common in toolchain evolution. In most cases, it is not even necessary to recompile tools after a change of specification.
Nonetheless, files containing data incompatible with the specified type system will not be readable, leading to type-safety on the intermediate representation level. Furthermore, SKilL has the ability to append new data to existing files, thus reducing the amount of IO-time significantly.
Additionally, SKilL was designed with modern hardware architectures in mind, resulting in capabilities of parallel and lazy evaluation of files. Thus, response times of tools using only a small fraction of an intermediate representation can be increased significantly.

The current focus lies on migrating the Bauhaus toolchain to SKilL.
Doing so, we will prove theoretical results in a real-world scenario.

If you are interested in a research cooperation, talk to Timm Felden.