Meta-level-Ansätze und Werkzeuge für komplexe nebenläufige Systeme
Sprache der Bezeichnung:
Deutsch
Englische Bezeichnung:
Meta-level Engineering and Tooling for Complex Concurrent Systems
Englische Kurzfassung:
Multicore processors stipulate concurrent programming, for instance to perform computations in parallel. Concurrent systems are often hard to understand and to debug. Unfortunately, today?s debugging tools for concurrent programs work on the lowest abstraction level, e.g., on memory accesses instead of on high-level concurrency concepts that developers used to build the systems, which makes it even harder to understand the software.
To support the development of concurrent systems, we will investigate how to abstract from the wide range of concurrency mechanisms. The goal is to devise a common mechanism to build tools that are able to represent high-level concurrency concepts so that developers can better understand their software. Furthermore, we will investigate how to implement such a common mechanism, because existing techniques affect the way programs behave and can hide the concurrency bugs a software developer might try to understand.
This is a joint project together with the Software Languages Lab at the Vrije Universiteit Brussel, Belgium. We will devise a common meta-level tool interface from the high-level perspective of concurrent programming techniques, as well as from the low-level perspective of performance and minimal interference with program execution. For our research, we rely on Truffle, a novel language implementation framework that allows us to build prototypes with state-of-the-art performance while using the existing infrastructure of Java virtual machines. Based on this technical foundation, we will investigate in an iterative approach support for message-passing, shared-state, and declarative concurrency to devise a meta-level interface that abstracts from the specific concurrency models. Furthermore, we will investigate how to efficiently support time-travelling debugging in such a setting to provide developers with the information on high-level concurrency concepts and the ability to examine and understand bugs in their systems.