Neue Version von Patches für den Linux-Kernel mit Unterstützung für die Rust-Sprache

Miguel Ojeda, der Autor des Rust-for-Linux-Projekts, schlug die Veröffentlichung von v5-Komponenten zur Entwicklung von Gerätetreibern in der Rust-Sprache zur Prüfung durch Linux-Kernel-Entwickler vor. Dies ist die sechste Ausgabe der Patches, unter Berücksichtigung der ersten Version, die ohne Versionsnummer veröffentlicht wurde. Die Rust-Unterstützung gilt als experimentell, ist aber bereits im Linux-Next-Zweig enthalten und ausreichend entwickelt, um mit der Arbeit an der Erstellung von Abstraktionsschichten über Kernel-Subsystemen sowie dem Schreiben von Treibern und Modulen zu beginnen. Die Entwicklung wird von Google und der ISRG (Internet Security Research Group) finanziert, die Gründerin des Let's Encrypt-Projekts ist und HTTPS und die Entwicklung von Technologien zur Verbesserung der Internetsicherheit fördert.

Denken Sie daran, dass die vorgeschlagenen Änderungen es ermöglichen, Rust als zweite Sprache für die Entwicklung von Treibern und Kernelmodulen zu verwenden. Die Rust-Unterstützung wird als Option dargestellt, die standardmäßig nicht aktiviert ist und nicht dazu führt, dass Rust als erforderliche Build-Abhängigkeit für den Kernel einbezogen wird. Durch die Verwendung von Rust für die Treiberentwicklung können Sie mit minimalem Aufwand sicherere und bessere Treiber erstellen, ohne Probleme wie Speicherzugriff nach der Freigabe, Nullzeiger-Dereferenzierungen und Pufferüberläufe.

Die speichersichere Handhabung wird in Rust zur Kompilierungszeit durch Referenzprüfung, Verfolgung des Objektbesitzes und der Objektlebensdauer (Umfang) sowie durch die Bewertung der Korrektheit des Speicherzugriffs während der Codeausführung gewährleistet. Rust bietet außerdem Schutz vor Ganzzahlüberläufen, erfordert eine obligatorische Initialisierung von Variablenwerten vor der Verwendung, behandelt Fehler in der Standardbibliothek besser, wendet standardmäßig das Konzept unveränderlicher Referenzen und Variablen an und bietet starke statische Typisierung, um logische Fehler zu minimieren.

Die neue Version der Patches eliminiert weiterhin die Kommentare, die während der Diskussion der ersten, zweiten, dritten, vierten und fünften Edition der Patches gemacht wurden. In der neuen Version:

  • Das Toolkit wurde auf die Veröffentlichung von Rust 1.59.0 aktualisiert. Eine Variante der Alloc-Bibliothek wird auch mit der neuen Version von Rust synchronisiert, wodurch die mögliche Generierung eines „Panik“-Zustands bei Fehlern, wie z. B. nicht genügend Speicher, vermieden wird. Die Möglichkeit, Assembler-Einfügungen („feature(global_asm)“) zu verwenden, wurde stabilisiert.
  • Unterstützung für die Erstellung von Host-Programmen in Rust hinzugefügt, die während der Kernel-Kompilierung verwendet werden.
  • Anstatt vorab generierte Zielplattform-Spezifikationsdateien bereitzustellen, werden diese dynamisch basierend auf der Kernel-Konfiguration generiert.
  • Der Kernel-Parameter HAVE_RUST wurde hinzugefügt, um ihn für Architekturen zu aktivieren, die Rust unterstützen.
  • Es werden Abstraktionen zur Verwendung im Rust-Code für einen Hardware-Pseudozufallszahlengenerator vorgeschlagen.
  • Ermöglicht die Verwendung von Fehlercodes ohne das Präfix „Error::“ (z. B. „return Err(EINVAL)“), um die Behandlung von Fehlercodes in C anzunähern.
  • Typ „CString“ für benutzerdefinierte C-Strings hinzugefügt. Die Typen Formatter und Buffer wurden kombiniert.
  • Bool- und LockInfo-Typen hinzugefügt.
  • Die Implementierung von Spin-Locks wurde vereinfacht.

Source: opennet.ru

Kommentar hinzufügen