LPC 2023 will host the second edition of the Rust MC. This microconference intends to cover talks and discussions on both Rust for Linux as well as other non-kernel Rust topics. Proposals can be submitted via LPC submission systems, selecting the Rust MC track.
Rust is a systems programming language that is making great strides in becoming the next big one in the domain. Rust for Linux is the project adding support for the Rust language to the Linux kernel.
Rust has a key property that makes it very interesting as the second language in the kernel: it guarantees no undefined behavior takes place (as long as unsafe code is sound). This includes no use-after-free mistakes, no double frees, no data races, etc. It also provides other important benefits, such as improved error handling, stricter typing, sum types, pattern matching, privacy, closures, generics, etc.
Possible Rust for Linux topics:
- Rust in the kernel (e.g. status update, next steps...).
- Use cases for Rust around the kernel (e.g. subsystems, drivers, other modules...).
- Discussions on how to abstract existing subsystems safely, on API design, on coding guidelines...
- Integration with kernel systems and other infrastructure (e.g. build system, documentation, testing and CIs, maintenance, unstable features, architecture support, stable/LTS releases, Rust versioning, third-party crates...).
- Updates on its subprojects (e.g. klint, pinned-init...).
Possible Rust topics:
- Language and standard library (e.g. upcoming features, stabilization of the remaining features the kernel needs, memory model...).
- Compilers and codegen (e.g. rustc improvements, LLVM and Rust, rustc_codegen_gcc, Rust GCC...).
- Other tooling and new ideas (bindgen, Cargo, Miri, Clippy, Compiler Explorer, Coccinelle for Rust...).
- Educational material.
- Any other Rust topic within the Linux ecosystem.
Last year was the first edition of the Rust MC and the focus was on showing the ongoing efforts by different parties (compilers, Rust for Linux, CI, eBPF...). Shortly after the Rust MC, Rust got merged into the Linux kernel. Abstractions are getting upstreamed, with the first major drivers looking to be merged soon: Android Binder, the Asahi GPU driver and the NVMe driver (presented in that MC).
The unique demands of the Linux kernel often blur the lines between safety and correctness: a prime example is the potentially hazardous act of sleeping inside an atomic context. While at first glance it may seem to be merely a correctness concern, in scenarios involving an RCU read lock, it could escalate to a safety violation by leading to use-after-free issues. Addressing these concerns...
Address stability is required for a lot of kernel structures. For example linked lists require the elements to have a stable address for as long as the elements are part of the list. Not complying with this requirement can result in memory safety issues.
Rust aims to prevent all such issues, therefore it prevents programmers from moving certain memory. When combining stable address...
Coccinelle is a tool for making widespread searches and changes in source code. Coccinelle was originally developed for C code and has been extensively used in the Linux kernel. We are working on porting Coccinelle to Rust, based on the infrastructure provided by Rust Analyzer. This talk will present the current state of the tool, with the goal of getting feedback from developers interested...
In this joint talk by the maintainers of C binder and Rust binder, we will give motivation for why the binder driver is a good place to use Rust, and we will discuss the experience of using Rust in the Linux kernel.
Please see the RFC for more information: https://firstname.lastname@example.org/
Rust for Linux has brought in Rust as a second programming language in the Linux
Kernel. The Rust for Linux project is making good progress towards building a
general framework for writing Linux kernel device drivers in safe Rust. The
block layer is still missing necessary plumbing to achieve this goal.
In this talk report on the work that we have done in the block layer to enable
Discuss the status of the Rust support in the Media subsystem in light of the patchset with initial support sent by the presenter together with the current and planned features as well as the points raised by the V4L2 maintainers during face-to-face discussions at the Media Summit 2023.
The objective is to discuss and identify ways to introduce Rust support to a large subsystem given some...
Programming in C and shifting to Rust can be a hard challenge for an old-school C programmer. Rust for Linux introduced a new programming paradigm to the Linux Kernel and this means that C programmers like me need to shift our mindset. I'll share my view on the matter after rewriting the VGEM DRM driver in Rust during my Igalia Coding Experience in the summer: the view of a C programmer and a...