Fünfte Überarbeitung der Patches für den Linux-Kernel mit Unterstützung für die Programmiersprache Rust

Miguel Ojeda, Autor des Projekts Rust-for-Linux, hat Entwicklern des Linux-Kernels einen fünften Vorschlag für Komponenten zur Entwicklung von Gerätetreibern in Rust zur Prüfung vorgelegt. Die Unterstützung von Rust wird als experimentell betrachtet, ist jedoch bereits in den linux-next-Zweig integriert und ausreichend entwickelt, um mit der Schaffung von Abstraktionsschichten über den Kernsubsystemen sowie der Erstellung von Treibern und Modulen zu beginnen. 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 von Technologien zur Verbesserung der Internetsicherheit unterstützt.

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 Patch-Variante wurden die Rückmeldungen aus der Diskussion der ersten, zweiten, dritten und vierten Patch-Revisionen weiter bearbeitet. In der neuen Version:

  • In das von Intel unterstützte Continuous-Integration-System für den Bot 0DAY/LKP wurde eine Überprüfung der Komponenten zur Unterstützung von Rust aufgenommen, und es wurden Berichte über die Tests veröffentlicht. Die Integration der Rust-Unterstützung in das automatisierte Testsystem KernelCI wird vorbereitet. Die Tests auf Basis von GitHub CI wurden auf die Verwendung von Containern umgestellt.
  • Rust-Kernelmodule benötigen keine Definition der crate-Attribute „#![no_std]“ und „#![feature(…)]“.
  • Unterstützung für einzelne Build-Ziele (.o, .s, .ll und .i) wurde hinzugefügt.
  • Die Codierungsrichtlinien definieren Regeln zur Trennung von Kommentaren („//“) und zur Dokumentation von Code („///“).
  • Das Skript is_rust_module.sh wurde überarbeitet.
  • Unterstützung für statische (globale gemeinsame Variablen) Synchronisationsprimitive, die auf der Implementierung von „CONFIG_CONSTRUCTORS“ basieren, wurde hinzugefügt.
  • Das Management von Locks wurde vereinfacht: Guard und GuardMut wurden zusammengeführt und es gibt jetzt einen parametrisierten Typ.
  • Es wurde die Möglichkeit hinzugefügt, zusätzliche Parameter bei der Registrierung von Geräten zu definieren.
  • Die Abstraktion „RwSemaphore“ wurde hinzugefügt, die als Wrapper über die C-Struktur rw_semaphore fungiert.
  • Ein neues Modul mm und die Abstraktion VMA (Wrapper über der Struktur vm_area_struct) wurden für die Verwendung von mmap hinzugefügt.
  • Der PL061 GPIO-Treiber wurde auf die Verwendung des Makros „dev_*!“ umgestellt.
  • Eine umfassende Bereinigung des Codes wurde durchgeführt.

Quelle: opennet.ru

Kaufen 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