Miguel Ojeda, der Autor des Projekts Rust-for-Linux, hat den Entwicklern des Linux-Kernels die Veröffentlichung von v10-Komponenten zur Entwicklung von GerĂ€tetreibern in der Programmiersprache Rust zur PrĂŒfung vorgeschlagen. Dies ist die elfte Version der Patches unter BerĂŒcksichtigung der ersten, die ohne Versionsnummer veröffentlicht wurde. Die UnterstĂŒtzung fĂŒr 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 MitbegrĂŒnder des Projekts Let's Encrypt ist und sich fĂŒr die Förderung von HTTPS und die Entwicklung von Technologien zur Erhöhung der Internetsicherheit einsetzt.
Wie die vorherige Version der Patches wurde v10 auf das unbedingt Notwendige beschrĂ€nkt, um den Aufbau eines einfachen Kernelmoduls, das in Rust geschrieben ist, zu ermöglichen. Die Unterschiede zur vorherigen Version beschrĂ€nken sich auf kleinere Korrekturen, den Austausch von sizeof durch ARRAY_SIZE in kallsyms.c und die Anpassung der Patches an den Kernel v6.0-rc7. Es wird erwartet, dass das minimierte Patch, dessen GröĂe von 40 auf 13 Tausend Codezeilen reduziert wurde, die Annahme der Rust-UnterstĂŒtzung im Hauptkern erleichtert. Nach der Sicherstellung der minimalen UnterstĂŒtzung ist geplant, die vorhandene FunktionalitĂ€t schrittweise zu erweitern, indem auch andere Ănderungen aus dem Rust-for-Linux-Zweig ĂŒbertragen werden.
Die vorgeschlagenen Ănderungen ermöglichen es, Rust als zweite Sprache fĂŒr die Entwicklung von Treibern und Kernelmodulen zu verwenden. Die UnterstĂŒtzung fĂŒr Rust wird als Option prĂ€sentiert, die standardmĂ€Ăig nicht aktiv ist und nicht dazu fĂŒhrt, dass Rust zu den obligatorischen Build-AbhĂ€ngigkeiten des Kernels zĂ€hlt. Die Verwendung von Rust zur Entwicklung von Treibern ermöglicht es, mit minimalem Aufwand sichere und qualitativ hochwertigere Treiber zu erstellen, die von Problemen wie dem Zugriff auf den Speicher nach dessen Freigabe, der Dereferenzierung von Nullzeigern und BufferĂŒ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.
Quelle: opennet.ru
