Starting Date: Summer 2025 (flexible)
Prerequisites: CS2850, Systems programming skills (C/C++, assembly basics)
Will results be assigned to University: No
Rust is a new programming language for performance-critical systems software, e.g. operating system kernels, hypervisors, databases, and web servers [1][2]. As with other systems programming languages (e.g. C/C++), Rust provides low-level control over hardware resources (e.g. memory layout and allocation). In contrast to C/C++, Rust’s strict compiler checks help prevent common programming errors, reducing the likelihood of memory-related bugs and security vulnerabilities while retaining good performance. As a result, Rust is becoming increasingly popular in industry with major software companies (e.g. cloud providers) [3].
In this project you will explore Rust development in the context of a particularly important piece of systems software: the Linux kernel. The Linux kernel consists of millions of lines of unsafe C code that are a major source of critical security vulnerabilities. In recent years, the Linux kernel community has developed a framework, Rust4Linux [3], that enables kernel developers to write Linux kernel modules (e.g. device drivers and some other kernel subsystems) in Rust [4][5]. Your overall goal in this project will be to design, implement, test and evaluate one or more performance-critical Linux kernel modules in Rust (e.g. a network card device driver). This can potentially contribute to ongoing research at RHUL into automated translation of C to Rust code.
The project will suit a student interested in systems software development, performance optimisation, software security, compilers and/or concurrent software. In addition, you will develop valuable skills in Linux kernel development and Rust programming.
[1] The Rust Programming Language (interactive book): https://rust-book.cs.brown.edu/
[2] Other Rust programming books: https://github.com/sger/RustBooks
[4] Rust for Linux: https://rust-for-linux.com/
[5] Linux Device Drivers (3rd Edition), J. Corbett, A. Rubini, G. Kroah-Hartman, https://lwn.net/Kernel/LDD3/
[6] Linux Kernel Programming: A comprehensive and practical guide to kernel internals, writing modules, and kernel synchronization (2nd Edition), K. Billimoria