Miguel Ojeda, der Autor des Projekts Rust-for-Linux, hat den Entwicklern des Linux-Kernels vorgeschlagen, die Version v10 der Komponenten zur Entwicklung von Gerätetreibern in Rust zu veröffentlichen. Dies ist die elfte Ausgabe der Patches, die auf der ursprünglichen Version basiert, die ohne Versionsnummer veröffentlicht wurde. Die Unterstützung von Rust wurde von Linus Torvalds genehmigt, um in den Linux-Kernel 6.1 aufgenommen zu werden, sofern keine unvorhergesehenen Probleme auftreten. Die Entwicklung wird von Google und der ISRG (Internet Security Research Group) finanziert, die das Projekt Let’s Encrypt ins Leben gerufen hat und die Förderung von HTTPS sowie die Entwicklung technologischer Lösungen zur Verbesserung der Internet-Sicherheit unterstützt.
Wie die vorherige Patch-Version wurde v10 auf das absolut Notwendigste reduziert, das erforderlich ist, um ein einfaches Kernel-Modul in Rust zu erstellen. Die Unterschiede zur vorherigen Version beschränken sich auf kleinere Anpassungen, die Ersetzung von sizeof durch ARRAY_SIZE in kallsyms.c und die Anpassung der Patches an den Kernel v6.0-rc7. Der minimale Patch, dessen Größe von 40.000 auf 13.000 Codezeilen verringert wurde, soll die Annahme von Rust im Hauptkernel erleichtern. Nach der Gewährleistung der minimalen Unterstützung ist geplant, die vorhandene Funktionalität schrittweise auszubauen und weitere Änderungen aus dem Rust-for-Linux-Zweig zu integrieren.
Die vorgeschlagenen Änderungen ermöglichen die Nutzung von Rust als zweite Sprache für die Entwicklung von Treibern und Kernel-Modulen. Die Unterstützung von Rust wird als Option angeboten, die nicht standardmäßig aktiviert ist und nicht zur Verpflichtung führt, Rust in den erforderlichen Build-Abhängigkeiten des Kernels einzuschließen. Die Verwendung von Rust zur Entwicklung von Treibern bietet die Möglichkeit, sicherere und hochwertigere Treiber mit minimalem Aufwand zu erstellen, die frei von Problemen wie dem Zugriff auf den Speicherbereich nach dessen Freigabe, dem Dereferenzieren von Nullzeigern und Pufferüberläufen sind.
Die sichere Verwaltung von Speicher in Rust erfolgt während der Kompilierung durch Überprüfung von Referenzen, das Verfolgen des Eigentums an Objekten und das Management der Lebensdauer von Objekten (Sichtbarkeiten). Außerdem bewertet Rust die Korrektheit des Zugriffs auf den Speicher zur Laufzeit. Rust bietet auch Mechanismen zum Schutz vor Überläufen bei Ganzzahlen, verlangt die obligatorische Initialisierung von Variablen vor ihrer Verwendung, behandelt Fehler in der Standardbibliothek besser und wendet das Konzept der Unveränderlichkeit (immutable) für Referenzen und Variablen standardmäßig an. Zudem bietet es eine starke statische Typisierung zur Minimierung logischer Fehler.
Quelle: opennet.ru
