Rust-Unterstützung für den Linux-Kernel stieß auf Kritik von Torvalds

Linus Torvalds hat die Überprüfung von Patches zur Implementierung der Möglichkeit zur Erstellung von Treibern in Rust für den Linux-Kernel durchgeführt und einige kritische Anmerkungen geäußert.

Die größten Bedenken ergaben sich aus der potenziellen Möglichkeit, in Fehlerzuständen wie Speicherknappheit in panic() zu geraten, wenn dynamische Speicherzuweisungen, auch innerhalb des Kernels, fehlschlagen können. Torvalds erklärte, dass ein solcher Ansatz im Kernel grundsätzlich inakzeptabel ist, und wenn dieses Problem nicht verstanden wird, kann er jeden Code, der einen solchen Ansatz verfolgt, vollständig ablehnen (totally NAKed). Auf der anderen Seite stimmte der Entwickler, der mit den Patches beschäftigt ist, diesem Problem zu und hält es für lösbar.

Ein weiteres Problem sind die Versuche, Gleitkomma- oder 128-Bit-Typen zu nutzen, was für Umgebungen wie den Linux-Kernel nicht zulässig ist. Dies stellte sich als ernsthafteres Problem heraus, da die aktuelle Basisbibliothek (Core) von Rust unteilbar ist und einen großen Blob darstellt – es gibt keine Möglichkeit, nur bestimmte Funktionen anzufordern und somit die Nutzung der problematischen Funktionalität zu verhindern. Die Lösung könnte Änderungen am Rust-Compiler und an der Bibliothek erfordern, während das Team derzeit noch keine Strategie hat, wie die Modularität der Sprache implementiert werden kann.

Darüber hinaus bemerkte Torvalds, dass das bereitgestellte Treiberbeispiel nutzlos sei und empfahl, als Beispiel einen Treiber beizufügen, der eine der realen Aufgaben löst.

Zusatz: Das Unternehmen Google gab bekannt, an der Initiative zur Förderung der Unterstützung von Rust im Linux-Kernel teilzunehmen und führte technische Aspekte der Zweckmäßigkeit der Einführung von Rust an, um Probleme zu bekämpfen, die aufgrund von Speicherfehlern entstehen. Google ist der Ansicht, dass Rust bereits bereit ist, sich neben C als Sprache zur Entwicklung von Kernelkomponenten in Linux zu etablieren. Der Artikel enthält auch Beispiele für die Verwendung von Rust zur Entwicklung von Kernel-Treibern im Kontext ihrer Verwendung auf der Android-Plattform (Rust wird als offiziell unterstützte Sprache für die Android-Entwicklung anerkannt).

Es wird festgestellt, dass Google einen ersten Prototyp eines in Rust geschriebenen Treibers für den Interprozesskommunikationsmechanismus Binder vorbereitet hat, der einen detaillierten Vergleich der Leistung und Sicherheit von Binder-Implementierungen in C und Rust ermöglicht. In der aktuellen Form ist die Arbeit noch nicht abgeschlossen, aber bereits für fast alle grundlegenden Abstraktionen der Kernel-Funktionalität, die für die Arbeit mit Binder erforderlich sind, wurden Schichten erstellt, um diese Abstraktionen im Rust-Code zu nutzen.

Quelle: opennet.ru

60GB SSD 8Gb DDR4