Der Branch linux-next, auf dem die Veröffentlichung des Linux-Kernels 5.13 basieren wird, enthält ein anfängliches Set von Komponenten zur Entwicklung von Gerätetreibern in der Programmiersprache Rust. Separat wurde die Dokumentation zur Verwendung von Rust im Linux-Kernel sowie ein Beispielmodul mit einem Treiber für ein Zeichengerät in Rust veröffentlicht. Der Code wurde von Stephen Rothwell, dem Maintainer des linux-next Branches, hinzugefügt. Üblicherweise enthält der Branch linux-next Code, der bereit ist, im nächsten Änderungszyklus für den Kernel angenommen zu werden, aber es ist noch unklar, ob die Unterstützung für Rust von Linus Torvalds für die Linux 5.13 Version akzeptiert wird, da der Code noch nicht von einer breiten Entwicklergemeinschaft überprüft wurde.
Die Unterstützung der Entwicklung von Linux-Kernel-Treibern in Rust wurde im vergangenen Jahr intensiv diskutiert, einschließlich mit Linus Torvalds, der diese Möglichkeit nicht ausschloss. Auch Greg Kroah-Hartman, der für die Wartung des stabilen Linux-Kernel-Zweigs verantwortlich ist, hat diese Idee unterstützt. Der Einsatz von Rust bei der Treiberentwicklung ermöglicht es, mit minimalem Aufwand sichere und qualitativ hochwertigere Treiber zu erstellen, die von Problemen wie dem Zugriff auf freigegebenen Speicher, Dereferenzierung von Nullzeigern und Pufferüberläufen befreit sind.
Zur Aktivierung der Rust-Unterstützung im linux-next-Zweig wurde in KConfig die Option CONFIG_RUST („Rust-Unterstützung“ im Menü „Allgemeine Einstellungen“) hinzugefügt. Bei Aktivierung dieser Option wird überprüft, ob der Compiler rustc im System vorhanden ist, und wenn dies der Fall ist, können die weiteren auf Rust basierenden Komponenten aktiviert werden (z. B. erscheint im Menü „Kernel-Hacking“ der Abschnitt „Rust-Hacking“). Der Einsatz von Rust wird als optionale Funktion betrachtet, die standardmäßig nicht aktiv ist und nicht dazu führt, dass Rust zu den erforderlichen Build-Abhängigkeiten des Kernels hinzugefügt wird.
Die Entwicklung von Kernkomponenten in Rust ist sowohl mit GCC als auch mit Clang möglich. Für die Verwendung von Rust im Kernel sind die neuesten Nachtschichten des Compilers rustc erforderlich, die nicht älter sind als der nightly-2021-02-20-Zweig (man hofft, in Zukunft auch die Unterstützung stabiler Rust-Zweige hinzuzufügen, momentan besteht jedoch eine Bindung an einige experimentelle Features). Zudem müssen die Standardbibliotheken von Rust, die im Paket rust-src bereitgestellt werden, sowie der Bindungs-Generator bindgen im System vorhanden sein. Die Unterstützung ist derzeit auf die Plattformen x86_64 und ARM64 beschränkt.
Quelle: opennet.ru
