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
