Using game-engine techniques and RUST to modernise on-board software
OBSW development takes into account multiple design constraints linked with typical real-time SW development such as reliability, determinism and performance on constrained HW. Such constraints are often at odds with each other. For example, determinism encourages static memory and ressource allocation, but optimal performance requires dynamic exploitation of these same resources. Current reference OBSW practices have managed to capture an acceptable tradeoff between those (often) conflicting constraints. But it comes at significant price for OBSW developers: numerous guidelines must be followed during development, and enforced during code reviews. This challenge has become quite apparent in recent years, as customers expect more complex SW features delivering optimized performance from multi-core HW targets. In this context, the study development activities provide strong indications of the potential benefits of Rust and ECS-like design principles for OBSW development. Novel ECS-based scheduling techniques and Rust "fearless concurrency" properties combine to offer automatic and deterministic parallelization of tasks. Furthermore, a Rust-powered development environment should be significantly cheaper to maintain than its C equivalent due to both its configuration language consistency and its dramatically reduced instruction footprint. The Rust ECS demonstrator and a traditional C OOP PLSW implementation were compared against benchmarking scenarios designed to generate significant CPU and network load respectively. Measurements show the ECS engine does not arbitrarily limit the performance of CPU or IO bound operations