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

Miguel Ojeda, der Autor des Rust-for-Linux-Projekts, hat den Entwicklern des Linux-Kernels die Veröffentlichung von v5 Komponenten zur Entwicklung von Gerätetreibern in Rust zur Prüfung vorgeschlagen. Dies ist die sechste Überarbeitung der Patches unter Berücksichtigung der ersten Version, die ohne Versionsnummer veröffentlicht wurde. Die Unterstützung von Rust wird als experimentell angesehen, ist jedoch bereits in den linux-next Branch integriert und ausreichend entwickelt, um mit der Erstellung von Abstraktionsschichten über die Kernsubsysteme sowie mit dem Schreiben von Treibern und Modulen zu beginnen. Die Entwicklung wird von Google und der ISRG (Internet Security Research Group), die das Projekt Let’s Encrypt gegründet hat und die Förderung von HTTPS sowie die Entwicklung von Technologien zur Verbesserung der Internetsicherheit unterstützt, finanziert.

Wir erinnern daran, dass die vorgeschlagenen Änderungen die Möglichkeit bieten, Rust als zweite Sprache für die Entwicklung von Treibern und Kernelmodulen zu verwenden. Die Unterstützung von Rust wird als Option vorgestellt, die nicht standardmäßig aktiviert ist und nicht dazu führt, dass Rust zu den obligatorischen Build-Abhängigkeiten des Kernels gehört. Die Verwendung von Rust zur Treiberentwicklung ermöglicht es, mit minimalem Aufwand sichere und qualitativ hochwertige Treiber zu erstellen, die von Problemen wie dem Zugriff auf freigegebenen Speicher, Dereferenzierung von Nullzeigern und Bufferüberläufen befreit 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.

In der neuen Version der Patches wurden die Hinweise, die während der Diskussion der ersten, zweiten, dritten, vierten und fünften Überarbeitungen geäußert wurden, weiter bearbeitet. In der neuen Version:

  • Das Werkzeug wurde auf die Version Rust 1.59.0 aktualisiert. Mit der neuen Version von Rust wurde auch die Version der Bibliothek alloc synchronisiert, die mögliche Generierungen des Zustands 'panic' bei Fehlern wie Speichermangel vermeidet. Die Möglichkeit zur Verwendung von Assembler-Insertionen ('feature(global_asm)') wurde stabilisiert.
  • Die Unterstützung zur Erstellung von Host-Programmen in Rust, die im Kompilierungsprozess des Kernels verwendet werden, wurde hinzugefügt.
  • Anstelle von vorgefertigten Dateien mit Spezifikationen für Zielplattformen erfolgt nun eine dynamische Erstellung basierend auf der Kernel-Konfiguration.
  • Ein Kernel-Parameter HAVE_RUST wurde hinzugefügt, der für Architekturen aktiviert werden kann, die Rust unterstützen.
  • Abstraktionen zur Verwendung in Rust-Code für Hardware-Pseudozufallszahlengeneratoren wurden vorgeschlagen.
  • Die Verwendung von Fehlercodes ohne das Präfix 'Error::' (z.B. 'return Err(EINVAL)') wurde erlaubt, um die Fehlerbehandlung an C-Anpassungen näher zu bringen.
  • Der Typ 'CString' für native C-Strings wurde hinzugefügt. Die Typen Formatter und Buffer wurden zusammengeführt.
  • Die Typen Bool und LockInfo wurden hinzugefügt.
  • Die Implementierung von Spin-Locks wurde vereinfacht.

Quelle: opennet.ru

Erwerben Sie zuverlässiges Hosting für Websites mit DDoS-Schutz, VPS VDS-Server 🔥 Kaufen Sie zuverlässiges Hosting für Websites mit DDoS-Schutz, VPS VDS-Server | ProHoster