Josh Triplett, der bei Intel arbeitet und im Komitee ist, das die Entwicklung von Crates.io ĂŒberwacht, Ă€uĂerte in seiner PrĂ€sentation auf dem Open Source Technology Summit. eine Arbeitsgruppe, die darauf abzielt, die Programmiersprache Rust auf ParitĂ€t mit der Programmiersprache C im Bereich der Systemprogrammierung zu bringen.
In der sich im Aufbau befindenden Arbeitsgruppe werden Rust-Entwickler gemeinsam mit Ingenieuren von Intel Spezifikationen erstellen, die die Funktionen definieren, die in Rust fĂŒr die Systemprogrammierung umgesetzt werden mĂŒssen. Systemprogrammierung erfordert oft einen niedrigen Zugang, wie z.B. die AusfĂŒhrung von privilegierten Prozessoranweisungen und das Abrufen detaillierter Informationen ĂŒber den Zustand des Prozessors. Zu den bereist entwickelten Möglichkeiten fĂŒr Rust zĂ€hlt die UnterstĂŒtzung von anonymen Strukturen, Unionen, Assembler-Insertierungen (Makro âasm!â) und das BFLOAT16 Gleitkommaformat.
Josh glaubt, dass die Zukunft der Systemprogrammierung in Rust liegt, wĂ€hrend C in der heutigen RealitĂ€t einen Platz beansprucht, der frĂŒher Assembly zusteckte. Rust
befreit Entwickler nicht nur von den typischen Problemen der Sprache C, die durch die niedrige Zugriffsebene auf den Speicher entstehen, sondern bietet auch die Möglichkeit, moderne Programmierparadigmen zu verwenden.
Im Verlauf von Vortrags
wurden von Josh Ideen geĂ€uĂert, die Entwicklung von Treibern in den Linux-Kernel mithilfe der Sprache Rust zu ermöglichen, was es ermöglichen wĂŒrde, mit minimalem Aufwand sichere und qualitativ hochwertigere Treiber zu erstellen, die Probleme wie den Zugriff auf Speicherbereiche nach deren Freigabe, Dereferenzierung von Nullzeigern und PufferĂŒberlauf vermeiden.
Greg Kroah-Hartman, der fĂŒr die UnterstĂŒtzung der stabilen Kernel-Version von Linux zustĂ€ndig ist, erklĂ€rte seine Bereitschaft, ein Framework fĂŒr die Treiberentwicklung in Rust zum Kernel hinzu zu fĂŒgen, sofern es echte Vorteile gegenĂŒber C bietet, zum Beispiel wenn es sichere Bindungen ĂŒber die Kernel-API bereitstellt. AuĂerdem betrachtet Greg dieses Framework nur als Option, die standardmĂ€Ăig nicht aktiv ist, um Rust nicht zu einer der AbhĂ€ngigkeiten des Kernels zu machen.
Es stellte sich heraus, dass mehrere Teams bereits in diese Richtung arbeiten. Zum Beispiel die Entwickler von 'Fish in a Barrel' ein Werkzeug zur Erstellung von Ladbaren Modulen fĂŒr den Linux-Kernel in Rust, indem ein Satz abstrakter Schichten ĂŒber den Schnittstellen und Strukturen des Kernels verwendet wird, um die Sicherheit zu erhöhen. Die Schichten werden automatisch auf der Grundlage vorhandener Kernel-Header-Dateien mit dem Tool generiert. FĂŒr den Bau der Schichten wird Clang verwendet. Die gebauten Module nutzen neben den Schichten das Paket staticlib.
Gleichzeitig Ein weiteres Projekt, das sich auf die Entwicklung von Treibern fĂŒr eingebettete Systeme und das Internet der Dinge konzentriert, das ebenfalls bindgen verwendet, um Schichten basierend auf den Header-Dateien des Kernels zu generieren. Das Framework ermöglicht eine Erhöhung der Sicherheit der Treiber, ohne Ănderungen am Kernel vorzunehmen â anstatt zusĂ€tzliche Isolationsebenen fĂŒr Treiber im Kernel zu schaffen, wird vorgeschlagen, Probleme bereits wĂ€hrend des Kompilierungsprozesses zu blockieren, indem eine sicherere Sprache wie Rust angewendet wird. Es wird angenommen, dass dieser Ansatz von Hardwareherstellern nachgefragt werden könnte, die proprietĂ€re Treiber hastig ohne angemessenen Audit entwickeln.
Nicht alle geplanten Funktionen sind bisher umgesetzt, aber das Framework ist bereits vollstĂ€ndig einsatzbereit und wurde zur Erstellung eines funktionierenden Treibers fĂŒr den Ethernet-Controller LAN9512 USB, der auf der Raspberry Pi 3-Platine verbaut ist, verwendet. Bei der Entwicklung des Rust-Treibers wurde der vorhandene Treiber smsc95xx, der in C geschrieben ist, als Referenzimplementierung verwendet. Es wird festgestellt, dass die ModulgröĂe und die Overheadkosten der Runtime-Komponenten bei der Entwicklung eines Treibers in Rust gering sind, was es ermöglicht, das Framework fĂŒr ressourcenbeschrĂ€nkte GerĂ€te zu verwenden.
Quelle: opennet.ru
