Linus Torvalds beabsichtigt, Änderungen im Zusammenhang mit Rust an den Maintainers vorbeizuschleusen.

Christoph Hellwig, Maintainer der DMA-, KVM-, Slab Allocator- und PowerPC-Subsysteme im Linux-Kernel, der grundsätzlich abgelehnt hat, Rust-Bindings für das DMA-Subsystem in den Kernel aufzunehmen, hat sich an der Diskussion über die von dem Projekt Rust for Linux veröffentlichten Begleitregeln für Rust im Kernel beteiligt. Christoph ist der Meinung, dass solche Regeln nutzlos sind, solange sie nicht mit der Community abgestimmt und in die Dokumentation zum Kernel aufgenommen werden.

Christoph wies zudem darauf hin, dass die Regeln falsche Informationen enthalten, die besagen, dass die Maintainer eigenständig Entscheidungen über die Aufnahme von Rust-bezogenen Code in ihre Subsysteme treffen können. Laut Christoph erklärte Linus Torvalds in einem persönlichen Gespräch, dass er fest entschlossen ist, Rust-Code in den Kernel aufzunehmen, trotz der Einwände der Maintainer. Somit müssen die Entwickler und Maintainer des Kernels nun mit Rust umgehen, ob sie wollen oder nicht.

Christoph verglich außerdem erneut die Verbreitung von Rust-Bindings mit einem Krebsgeschwür, das sich über alle Subsysteme des Kernels ausbreiten und zu Fragmentierung führen wird. Aus einem einheitlichen Ganzen wird der Kernel zu einem Projekt, das in mehreren Sprachen geschrieben ist, ohne klare Definition, wann welche Sprache verwendet werden soll. Christoph zufolge ist die Arbeit mit solch einer gemischten Codebasis für ihn zum schlimmsten Albtraum geworden, da in solchen Bedingungen ständig Code von einer Sprache in eine andere und dann wieder zurückgeschrieben wird.

Christoph bittet darum, ihm das Ziel der Einführung von Rust in den Kernel zu erläutern. Wenn das Ziel darin besteht, Sicherheitsprobleme zu lösen, die bei der Arbeit auf niedriger Ebene mit dem Speicher auftreten, ist zunächst eine Modernisierung des bestehenden Codes erforderlich. Angesichts der Tatsache, dass die Beteiligten bereits auf triviale Dinge wie Überprüfungen auf Integer-Überläufe schmerzhaft reagieren, bleibt unklar, wie man die Kluft zwischen einem Teil des Kernels, der nicht einmal einfache Regeln zur Gewährleistung der Sicherheit akzeptiert, und einem anderen Teil, der sich an strenge Vorschriften hält, überbrücken kann. Wenn das Ziel jedoch die Vereinfachung der Entwicklung von Treibern ist, wird die Einführung der Unterstützung für eine weitere Sprache nur zusätzliche Arbeit verursachen und die ohnehin bereits überlasteten Personen, die die Infrastruktur des Kernels instand halten, weiter belasten.

Was die Befürworter der Einführung von Rust in den Kernel angeht, so nennen sie folgende Ziele:

  • Die Erstellung neuen Codes in Rust wird das Risiko von Speicherfehlern und Wettlaufbedingungen verringern und einige logische Fehler ausschließen.
  • Es wird für die Maintainer einfacher sein, Änderungen zu überprüfen und Module unter Berücksichtigung der Garantien des Rust-Programmiersprachen zu refaktorisieren.
  • Die Verfügbarkeit von Abstraktionen, die die fortgeschrittenen Möglichkeiten von Rust nutzen, wird die Erstellung neuer Treiber und Module erleichtern.
  • Die Unterstützung einer modernen Sprache wird neue Teilnehmer für die Kernel-Entwicklung anziehen.
  • Die Anwendung der Tools von Rust wird die Erfüllung der Dokumentationsanforderungen für den Code erleichtern. So wurde im Projekt Rust for Linux die Anforderung an die obligatorische Dokumentation öffentlicher APIs, Sicherheitsanforderungen, unsafe-Blöcke und Typinvarianten eingeführt.

Quelle: opennet.ru

60GB SSD 8Gb DDR4