Syncopia: Synthesis and Analysis for Concurrent Programs
The Syncopia-project is funded as a bilateral Norwegian-German cooperation within the PPP-programme for collaborative research support scheme (``Projektbezogener Personenaustausch''). The cooperation is funded by the
The planned duration of the project is 24 months, the funding period spans the years 2019 and 2020.
In a nutshell
A strong persisting trend in computer and software systems is the omni-presence of distributed and concurrent systems, as witnessed by multi-core architectures, networks and multiprocessor systems on chip, cloud computing, IoT, smartdust, blockchain, etc. The speed at which these innovations take place bears the risk that we lose control of the reliability and predictability of the software fabric on which our world increasingly depends. The increasing degree of concurrency introduces new dimensions of complexity when it comes to guarantee the safety, security and functional correctness, creating non-determinism and tangled synchronisation problems that are extremely difficult to deal with. Qualitative synchronisation problems involve deadlock, livelock, priority inversion, data inconsistency or security attacks. Quantitative synchronisation problems concern violation of real-time deadlines, bottlenecks of throughput and utility or set up latencies. Traditional testing and exploratory debugging methods cannot cope with synchronisation problems. Therefore, in our view, it is of paramount importance to give more emphasis to the formal verification, analysis, and synthesis of concurrency aspects in the practical software development process.
This project combines recent work on weak memory models and static type-checking for memory-safe multi-threaded programming with recent advances in the SP technology. This will produce a first uniform methodology for ensuring memory safety and determinacy for general abstract data types. This advances the state of the art on both sides: It will support more powerful data abstraction, where main-stream concurrent programming typically only permits primitive memory registers. It will support genuinely concurrent execution models and the consideration of weak-memory models, where SP compilers typically only generate sequential C code and ignore data races in the instruction set architecture.