Die Meinung von Greg Kroah-Hartman und Kasey Cook über die Förderung von Rust im Linux-Kernel

Greg Kroah-Hartman, der für die Unterstützung des stabilen Linux-Kernel-Zweigs verantwortlich ist, sprach sich für die Entwicklung neuer Kernel-Komponenten in der Programmiersprache Rust aus. Als Person, durch die in den letzten 15 Jahren alle Informationen über Fehler und Sicherheitsanfälligkeiten im Linux-Kernel liefen, behauptet er, dass die meisten Fehler im Kernel durch nicht berücksichtigte Eigenschaften der Programmiersprache C (corner cases) verursacht werden, die im Code in Rust gänzlich ausgeschlossen sind.

Mit Rust wird es möglich sein, solche Probleme wie den Zugriff auf Speicher nach dessen Freigabe, Buffer-Overflows (teilweise), fehlerhafte Freigabe von Ressourcen bei der Fehlerbehandlung und vergessene Überprüfungen von Rückgabewerten zu überwinden, was den Maintainers ermöglichen wird, sich auf echte Fehler zu konzentrieren, wie etwa Race Conditions und logische Probleme, anstatt ihre Aufmerksamkeit bei Überprüfungen auf Kleinigkeiten zu zerstreuen.

Bereits bestehender alter Code in C wird nicht verschwinden, aber für neuen Code und neue Treiber wird die Einführung von Rust die Qualität erheblich verbessern. Die Einführung von Rust ermöglicht es auch, die internen Programmierschnittstellen des Kernels so zu strukturieren, dass Fehler in der Nutzung der internen APIs praktisch ausgeschlossen werden — im Kernel hat sich zu viele komplexe und verworrene APIs angesammelt, die eine große Belastung für die Maintainers darstellen, wenn sie sicherstellen müssen, dass diese APIs korrekt genutzt werden. Im Zuge der Entwicklung von Rust-Bindings haben die Maintainers die Möglichkeit, die APIs neu zu überdenken und in Ordnung zu bringen, was allen zugutekommt, einschließlich der Nutzer der Sprache C.

Greg betrachtet Rust nicht als „silberne Kugel“, die alle Probleme im Kernel löst, aber diese Sprache wird in einer Vielzahl von Situationen definitiv helfen. Die Unterstützung von Rust wird auch den Bedürfnissen der Treiberentwickler entsprechen, die hoffen, ein Werkzeug zu erhalten, das es ihnen ermöglicht, Code für ihre Hardware zu schreiben und viele Fehlerarten auszuschließen. Was das Mischen mehrerer Sprachen betrifft, sieht Greg darin kein großes Problem; seiner Meinung nach haben die Kernel-Entwickler in der Vergangenheit auch ernstere Herausforderungen bewältigt, und es gibt keinen Grund, von der Förderung neuer, guter Ideen im Kernel abzusehen, die dazu beitragen, den Erfolg des Projekts in den nächsten 20+ Jahren zu sichern.

An der Diskussion nahm auch Kees Cook, ehemaliger Hauptsystemadministrator von kernel.org und Leiter des Ubuntu Security Teams, teil. Kees stellte klar, dass es nicht um die Neufassung bestehenden Codes im Kernel geht, sondern um die Möglichkeit, Rust zur Erstellung neuer Treiber und Subsysteme zu verwenden. Der Einsatz von Rust für neuen Code wird nicht nur die Anzahl der Fehler im Umgang mit dem Speicher verringern, sondern auch die Entwicklungszeit verkürzen. Die Geschwindigkeit der Entwicklung steigt aufgrund der reduzierten Aufwände für das Debugging und der strengen Garantien der Sprache, die es ermöglichen, Fehler bereits in der frühen Phase des Codierens zu erkennen, noch bevor das Produkt getestet wird.

Die Effektivität der Taktik, Rust zur Erhöhung der Qualität neuen Codes zu verwenden, wurde bereits von Google auf der Android-Plattform demonstriert. Es wurde gezeigt, dass der Hauptquellen für Sicherheitsprobleme neuer Code ist und die Qualität desselben besondere Aufmerksamkeit erfordert. Bei altem Code zeigt sich eine exponentielle Abhängigkeit der Sicherheit von der Zeit (zum Beispiel hat fünf Jahre alter Code im Durchschnitt eine um 3,4 Mal geringere Dichte von Schwachstellen als neuer Code).

Quelle: opennet.ru

60GB SSD 8Gb DDR4