CoPoRust

Rust support for coded processing

Project funding

Background

Hardware is exposed to environmental influences such as temperature fluctuations, vibrations, radiation, and aging processes at the nanostructure level. These influences affect the behavior of the hardware and can manifest themselves, for example, as sporadic bit flips in the RAM and processor or as permanently interrupted lines in the form of random hardware errors. Even if the probability of their occurrence is low, the diagnosis of such environmental influences is required in safety-critical systems. Software Coded Processing (SCP) enables such diagnoses to be performed at the software level. SCP works with a two-channel approach that executes a second, coded channel in addition to the software channel natively programmed by the developer. The two channels are merged in such a way that hardware errors are reliably detected. This enables the implementation of safety-critical systems based on COTS hardware without the need for redundant or specialized hardware. Currently, SCP integration is typically performed for the C/C++ programming languages using a source-to-source transformation. The relatively new programming language Rust has been gaining in importance for several years. The potential of Rust has also been recognized in the field of software development for functional safety. For this reason, the Safety-Critical Rust Consortium was established to supplement Rust and its tools with regard to the necessary safety processes of the standards. What makes Rust special is its approach to memory management. Unlike C/C++, where manual memory management is often the cause of bugs and security vulnerabilities, Rust relies on an ownership and borrowing system. This system makes it possible to check the lifetime of memory and memory references at compile time. This makes the compiler an extremely powerful tool for detecting memory errors at an early stage. In addition to memory management, Rust also offers effective concepts for implementing multithreaded applications and error handling mechanisms.

Project goal

Based on this development, supporting Rust is the logical next step in combining the advantages of SCP and Rust and offering users a future-proof solution. The aim is to analyze which additional coding is necessary for Rust and how the coded channel can be integrated into a Rust project. On the other hand, it will be investigated whether Rust's metaprogramming functionality offers an alternative way of integrating SCP.

Get in touch

This image shows Marc Fischer

Marc Fischer

M.Sc.

Research Assistant "Software and Engineering Methods"

To the top of the page