It seems that this year will not be the year of Linux, since even though the last quarter of last year everything looked like Linux and desktops would take off in 2025, things are not always as they seem.
And it's just a few days Christoph Hellwig, a prominent figure in maintaining critical subsystems such as DMA, KVM, Slab Allocator and PowerPC in the Linux kernel, has made clear its refusal to support patches that facilitate development of controllers in Rust.
Christoph Hellwig mentions that the patches in question proposed to include wrappers around functions of the DMA subsystem to allow drivers written in Rust to use it. However, he argues that this strategya complicates code maintenance and the clarity of C interfaces must be preserved, preventing abstractions from being extended that could hinder integration with the rest of the kernel.
The problems of mixing languages ​​in a project
According to Hellwig, The main problem is that the integration of Rust code generates dependencies that force C subsystem developers to consider the impact of their modifications on Rust's binding code. This It means that any adjustments to the structures or internal functions in C might require parallel changes to Rust's code, which creates a scenario that is difficult to maintain in the long term.
To avoid this situation, Hellwig recommended that controllers in Rust directly access to the native DMA API in C, rather than resorting to additional wrappers that they believe would compromise kernel maintainability.
Meanwhile, the Developers who proposed the patches argued that they would take care of the maintenance of the Rust code and, to this end, they have organized the links in a specific subdirectory (rust/kernel/dma.rs). However, Hellwig vetoed these proposals, warning that he did not need to take responsibility. to integrate code from other languages ​​into core subsystems.
Additionally, he strongly commented that if you want to transform the kernel into a mosaic of multiple languages, you should start with Rust's drivers instead of imposing this complexity in fundamental areas.
The controversy intensified when figures like Jason Gunthorpe, TPM, VFIO and Infiniband maintainer at NVIDIA, shared examples of how changes to memory subsystems, while correct from a C code perspective, generated problems when trying to compile the kernel with Rust support. These incidents made it clear that bindings between C and Rust can introduce additional dependencies that make coordinated development difficult.
It is worth mentioning that The discussion was not limited to technical aspects. Hector Martin suggested that the solution might be to adopt the link directly through Linus Torvalds, avoiding the intervention of the DMA subsystem maintainer. However, this approach could upset the traditional hierarchical structure of kernel development.
Hector also pointed out behaviors that he considered toxic, He even mentioned that Hellwig's criticism of Rust as a "cancerous tumor" had contributed to his frustration and ultimately his decision to step down as the ARM/Apple platform's mainline kernel maintainer. Despite his resignation, the platform will continue to be supported by Sven Peter, who has pledged to continue maintaining it.
For its part, Linus Torvalds joined the conversation, emphasizing that the development process of the kernel, although imperfect, is working and that technical discussions should focus on patches, without being influenced by external pressures or harassment on social networks. For Torvalds, the approach should be purely technical, leaving aside personal disputes.
Christoph Hellwig's refusal to incorporate Rust wrappers into the DMA subsystem highlights the tensions among Linux kernel developers. While some see Rust as a powerful tool for creating new projects, others fear that integrating multiple languages ​​could hinder the maintainability and consistency of the codebase.
The situation remains a subject of debate and could have significant implications for the future of Rust support in the kernel. In any case, what is clear is that the Linux development community continues to face complex challenges, where technical decisions must be carefully considered to ensure the sustainability of the project in the long term.