Die Integration von Rust-Code in den Linux-Kernel sorgt für kontroverse Diskussionen innerhalb der Community. Im Zentrum der Debatte stehen die Sicherheitsvorteile von Rust, die Herausforderungen der Wartbarkeit und die potenziellen Risiken einer mehrsprachigen Codebasis.
Auslöser der aktuellen Auseinandersetzung ist ein Richtlinien-Dokument von Miguel Ojeda, dem Hauptentwickler von Rust für Linux. Dieses Dokument unterstreicht zwar die Möglichkeit für Subsysteme, Rust aus „Kapazitätsgründen“ abzulehnen, wurde jedoch umgehend von Christoph Hellwig, einem erfahrenen Kernel-Entwickler, kritisiert.
Hellwig stellte die Gültigkeit des Dokuments infrage und bemängelte fehlende Faktengenauigkeit. Er bezog sich auf private Gespräche, in denen Linus Torvalds angeblich zugesagt habe, Einwände von Maintainern gegen Rust-Code zu ignorieren. Ojeda bestätigte zwar solche Vorgänge, relativierte sie jedoch als selten und nicht spezifisch für Rust.
Hellwig kritisierte die Kernel-Bindings von Rust als „nicht idiomatisches Rust“ und warnte vor einer möglichen Ausbreitung wie ein „Krebsgeschwür“, die die Codebasis fragmentieren könnte. Er äußerte Zweifel an der langfristigen Tragfähigkeit einer gemischten C- und Rust-Codebasis und befürchtet endlose Umschreibungen zwischen den Sprachen sowie eine Überlastung der Ressourcen der Maintainer.
Jarkko Sakkinen schloss sich den Bedenken hinsichtlich des Prozesses an und betonte das Fehlen klarer Testrichtlinien für Rust-Patches. Er erwähnte das Beispiel von DMA-Patches, die ohne Test-Payload eingereicht wurden, was seiner Meinung nach zu einer automatischen Ablehnung führen sollte.
Befürworter wie Greg KH argumentierten, dass Rust ganze Klassen von Fehlern eliminiert, die C-Code plagen. Er betonte, dass die Mehrheit der Bugs (quantitativ, nicht qualitativ) auf kleine Sonderfälle in C zurückzuführen sei, die in Rust nicht existierten. Dazu gehören Speicherüberschreibungen, Fehlerbehandlung, fehlende Fehlerprüfungen und Use-after-free-Fehler.
Steven Rostedt verwies auf Daten, die eine exponentielle Reduzierung von Sicherheitslücken in Projekten wie Android nach der Einführung von Rust zeigten. Er ist der Meinung, dass neue Treiber, die in Rust geschrieben werden, die Anzahl der Sicherheitslücken, die neue Treiber üblicherweise in den Kernel einbringen, reduzieren würden.
Entwickler betonten auch die praktischen Hürden bei der Rust-Integration. Sakkinen bemängelte die Komplexität der Einrichtung und die unzureichende Dokumentation für Cross-Compilation-Workflows mit BuildRoot oder Yocto. Laurent Pinchart und Lyude Paul äußerten Bedenken hinsichtlich des Maintainer-Burnouts und verwiesen auf die enorme Aufgabe, APIs wie das Lebenszeitmanagement von V4L2 für die Rust-Kompatibilität neu zu gestalten.
Hellwig warnte deutlich davor, dass Maintainer den Kernel aufgrund der zusätzlichen Komplexität von Rust verlassen könnten. Er erklärte, dass die Arbeit mit einer unkontrollierten mehrsprachigen Codebasis ihn dazu bringen würde, seine Freizeit anderweitig zu verbringen.
Ojeda bekräftigte, dass die Vorteile der Rust-Integration die kurzfristigen Schwierigkeiten überwiegen und dass Rust die Kompromisse für Linux wert sei. Kees Cook formulierte das Ziel als „bessere Codequalität“, die die Entwicklung durch weniger Debugging beschleunigt. Hellwig hingegen forderte Transparenz und warf Torvalds vor, sich hinter der Rhetorik des „Experiments“ zu verstecken, während er Rust Subsystemen aufzwingt.
Die hitzige Debatte unterstreicht einen entscheidenden Moment für den Kernel. Während Rust überzeugende Sicherheitsvorteile bietet, hängt seine Integration davon ab, ob Werkzeuglücken geschlossen, die Belastung der Maintainer verringert und ein Konsens erzielt werden kann – eine Herausforderung, die so komplex ist wie der Kernel selbst.
Bibliographie: https://www.linkedin.com/posts/vladimir-s-365187163_rust-for-linux-safety-gains-vs-maintainability-activity-7298795544385114112-MRft https://x.com/Gadget_Ry/status/1892983576670412847 https://www.developer-tech.com/news/tag/rust-for-linux/ https://www.reddit.com/r/linux/comments/1f3q0l8/one_of_the_rust_linux_kernel_maintainers_steps/ https://news.ycombinator.com/item?id=42972217 https://forums.theregister.com/forum/all/2024/09/02/rust_for_linux_maintainer_steps_down/ https://www.heise.de/en/news/Is-a-kernel-developer-blocking-the-success-of-Rust-for-Linux-Yes-and-no-10269318.html https://x.com/gadget_ry https://corrode.dev/blog/long-term-rust-maintenance/