Drivers are usually written in C for historical reasons, this can be a problem for safety and security. We are working on drivers called ixy (diminutive form of ixgbe) for 10 Gbit/s network cards written in high-level programming languages ranging from Rust to Haskell. The main goal is to show trade-offs when writing drivers in safer languages than C: How do language safety features affect performance? Are all languages suitable for drivers?
A second goal is to use ixy for educational purposes. Drivers are often seen as untouchable black-boxes by developers and researchers because they seem hard to write and understand. Our drivers are all in the order of 1000 lines of code with documentation, comments, and pointers to further reading material such as specific sections in data sheets.
Safety features of languages often cost performance, we try to quantify and model the impacts of specific safety features using both white-box and black-box benchmarking methods. Results show that some languages like Rust can achieve almost the same performance as C code while preventing memory errors.
Ongoing work is summarized in a project on GitHub with links to all implementations.
Scientists: Simon Bauer, M.Sc.