Neue Version von Patches fĂŒr den Linux-Kernel mit UnterstĂŒtzung fĂŒr die Programmiersprache Rust.

Miguel Ojeda, der Autor des Projekts Rust-for-Linux, 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 Version der Patches, die auf der ersten Version basiert, die ohne Versionsnummer veröffentlicht wurde. Die UnterstĂŒtzung von Rust wird als experimentell betrachtet, ist jedoch bereits im linux-next-Branch enthalten und ausreichend entwickelt, um mit der Erstellung von Abstraktionsschichten ĂŒber die Kernel-Subsysteme 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 Sicherheit im Internet unterstĂŒtzt.

Wir möchten daran erinnern, dass die vorgeschlagenen Änderungen die Möglichkeit bieten, Rust als zweite Sprache zur Entwicklung von Treibern und Modulen im Kernel zu verwenden. Die Rust-UnterstĂŒtzung wird als Option prĂ€sentiert, die standardmĂ€ĂŸig nicht aktiviert ist und nicht dazu fĂŒhrt, dass Rust zu den obligatorischen Build-AbhĂ€ngigkeiten im Kernel hinzugefĂŒgt wird. Der Einsatz von Rust zur Treiberentwicklung ermöglicht es, mit minimalem Aufwand sichere und qualitativ hochwertige Treiber zu erstellen, die von Problemen wie dem Zugriff auf Speicherbereiche nach deren Freigabe, der Dereferenzierung von Nullzeigern und PufferĂŒberlĂ€ufen befreit sind.

Die sichere Arbeit mit Speicher wird in Rust wĂ€hrend der Kompilierung durch ÜberprĂŒfung von Referenzen, Verfolgung des Eigentums an Objekten und BerĂŒcksichtigung der Lebensdauer von Objekten (Sichtbarkeitsbereich) sowie durch die Beurteilung der Korrektheit des Zugriffs auf den Speicher zur Laufzeit des Codes gewĂ€hrleistet. Rust bietet auch Mittel zum Schutz vor ganzzahligen ÜberlĂ€ufen, erfordert die zwingende Initialisierung von Variablen vor deren Verwendung, behandelt Fehler in der Standardbibliothek besser, wendet das Konzept der ImmutabilitĂ€t (unverĂ€nderlich) auf Referenzen und Variablen standardmĂ€ĂŸig an und bietet eine starke statische Typisierung zur Minimierung logischer Fehler.

Im neuen Patch-Update wurden die Anmerkungen, die wĂ€hrend der Diskussion der ersten, zweiten, dritten, vierten und fĂŒnften Version geĂ€ußert wurden, weiter bearbeitet. In der neuen Version:

  • Das Toolkit wurde auf die Rust-Version 1.59.0 aktualisiert. Mit der neuen Rust-Version wurde auch die alloc-Bibliothek synchronisiert, die potenzielle Panic-ZustĂ€nde bei Fehlern wie Speichermangel beseitigt. Die Nutzung von Assembler-EinfĂŒgungen („feature(global_asm)“) wurde stabilisiert.
  • Die UnterstĂŒtzung fĂŒr die Erstellung von Host-Programmen in Rust, die wĂ€hrend der Kernel-Kompilation verwendet werden, wurde hinzugefĂŒgt.
  • Anstelle der Bereitstellung vorgefertigter Dateien mit Spezifikationen fĂŒr Zielplattformen wird deren dynamische Generierung basierend auf der Kernel-Konfiguration sichergestellt.
  • Ein Kernel-Parameter namens HAVE_RUST wurde hinzugefĂŒgt, der fĂŒr Architekturen aktiviert wird, die Rust unterstĂŒtzen.
  • Abstraktionen zur Nutzung in Rust-Code fĂŒr Hardware-Pseudorandom-Number-Generatoren wurden vorgeschlagen.
  • Die Verwendung von Fehlermeldungen ohne den PrĂ€fix „Error::“ (z. B. „return Err(EINVAL)“) wurde erlaubt, um der Behandlung von Fehlercodes in C nĂ€herzukommen.
  • Ein neuer 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 Spinlocks wurde vereinfacht.

Quelle: opennet.ru

60GB SSD 8Gb DDR4