Rust war nicht von der Kritik an Linus Torvalds befreit

Ein paar Wochen zuvor die Nachrichten von über Einige Implementierungen, die in gemacht wurden Der Linux-Next-Zweig, der einen ersten Satz von Komponenten enthält Gerätetreiber zu entwickeln in der Sprache Rust.

Diese Dokumentation wurde separat zur Verwendung von Rust im Linux-Kernel und als Beispiel für ein Kernelmodul mit einem Zeichengerätetreiber in der Sprache Rust veröffentlicht. Der Code wurde von Stephen Rothwell, dem Betreuer der Niederlassung, hinzugefügt.

Danach ging Linus Torvalds die Implementierungsüberprüfung durch Patch mit Möglichkeiten zum Festlegen von Rust-Sprachtreibern im Linux-Kernel und äußerte einige Kritik.

Die größten Beschwerden wurden verursacht durch Fluchtpotential "Laufzeitfehler Panik" in falschen Situationen, Beispiel: In einer Situation mit zu wenig Speicher können dynamische Speicherzuweisungsoperationen, einschließlich Kerneloperationen, fehlschlagen.

Torvalds erklärte, dass eine solche Fokussierung auf den Kernel grundsätzlich inakzeptabel ist, Und wenn Sie diesen Punkt nicht verstehen, können Sie jeden Code, der versucht, einen solchen Ansatz zu verwenden, vollständig ablehnen. Andererseits stimmte der Entwickler des Patches dem Problem zu und hielt es für lösbar.

Ein weiteres Problem waren Versuche, Gleitkomma- oder 128-Bit-Typen zu verwenden. die nicht für Umgebungen wie den Linux-Kernel gültig sind.

Möglicherweise verstehen Sie nicht, welche Auswirkungen dies haben kann, also vielleicht
ist weniger ein Problem als ich denke, aber im Grunde
Ich denke, wenn ein Rust-Mapping Panik auslösen kann, ist dies einfach
_ grundsätzlich_ nicht akzeptabel.

Zuordnungsfehler in einem Nicht-Core-Controller oder -Code, d. H.
Definition, alle neuen Rust-Code, kann niemals verursachen
Panik gültig. Das gleiche gilt für «oh, in einigen Fällen habe ich nicht versucht, die Verwendung von
128-Bit-Ganzzahlen oder Gleitkomma '.

Wenn der Rust-Compiler also versteckte Zuweisungen verursacht, die nicht möglich sind
Erkennen und als Fehler zurückgeben, dann glaube ich ernsthaft, dass all dies
Ansatz sollte vollständig NAK'ed sein, und die Rust-Infrastruktur,
Entweder auf Compilerebene oder in Kernel-Wrappern benötigen Sie mehr
Job.

Dies stellte sich als ernsthafteres Problem heraus., da in diesem Moment Die Zentralbibliothek von Rust ist unteilbar und stellt einen großen Fleck dar;; Es gibt keine Möglichkeit, nur einige der Funktionen anzufordern, wodurch die Verwendung der einen oder anderen problematischen Funktionalität vermieden wird.

Die Lösung des Problems erfordert möglicherweise Änderungen am Rost-Compiler und an der Bibliothek, obwohl das Team noch keine Strategie zur Implementierung der Modularität für Sprachbibliotheken hat.

Zusätzlich Torvalds wies darauf hin, dass der bereitgestellte Beispielcontroller unbrauchbar ist und empfohlen, als Beispiel einen Treiber beizufügen, der eines der wirklichen Probleme löst.

Vor dem Google gab seine Teilnahme an einer Initiative zur Förderung der Rust-Unterstützung im Linux-Kernel bekannt y technische Aspekte zur Verfügung gestellt der Machbarkeit der Implementierung von Rust zur Bekämpfung von Problemen, die sich aus Fehlern bei der Arbeit mit dem Speicher ergeben.

Google glaubt, dass Rust bereit ist, C als Entwicklungssprache beizutreten Linux-Kernel-Komponenten. Der Artikel enthält auch Beispiele für die Verwendung der Rust-Sprache zur Entwicklung von Kerneltreibern im Zusammenhang mit ihrer Verwendung auf der Android-Plattform (Rust wird als offiziell unterstützte Sprache für die Android-Entwicklung anerkannt).

Beachten Sie, dass Google hat einen ersten Prototyp eines in Rust geschriebenen Controllers vorbereitet für den prozessübergreifenden Kommunikationsmechanismus von Binder, der einen detaillierten Leistungs- und Sicherheitsvergleich von Binder-Implementierungen in C und Rust ermöglicht.

In der aktuellen Form ist die Arbeit noch nicht abgeschlossen, aber für fast alle grundlegenden Abstraktionen der Kernelfunktionalität, die für die Arbeit von Binder erforderlich sind, wurden Ebenen vorbereitet, um diese Abstraktionen im Rust-Code zu verwenden.

Wenn Sie mehr darüber erfahren möchten, können Sie die Details überprüfen im folgenden Link.


Hinterlasse einen Kommentar

Ihre E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert mit *

*

*

  1. Verantwortlich für die Daten: AB Internet Networks 2008 SL
  2. Zweck der Daten: Kontrolle von SPAM, Kommentarverwaltung.
  3. Legitimation: Ihre Zustimmung
  4. Übermittlung der Daten: Die Daten werden nur durch gesetzliche Verpflichtung an Dritte weitergegeben.
  5. Datenspeicherung: Von Occentus Networks (EU) gehostete Datenbank
  6. Rechte: Sie können Ihre Informationen jederzeit einschränken, wiederherstellen und löschen.

  1.   Miguel Rodriguez sagte

    Alle ihre Kritikpunkte sind gültig, da Rust eine neue Sprache ist, die mit einem anderen Paradigma als C arbeitet. Es ist verständlich, dass Bedenken in Bezug auf Details in den Bibliotheken oder im Compiler selbst bestehen, obwohl der Code zwar gültig ist, dies jedoch verursacht Der Kernel soll ebenfalls kaputt gehen. Wie er implementiert und erstellt wird. Aus diesem Grund funktionieren Vorschläge wie die Möglichkeit, die Bibliothek so zu modularisieren, dass nur die Funktionen aufgerufen und aktiv bleiben, die für das Programm (oder in diesem Fall für einen Controller) erforderlich sind, ordnungsgemäß. Es ist auch nicht unangemessen, dass Sie einen echten Prototyp-Controller erhalten, der bei einem aktuellen Problem gute Arbeit leistet (oder zumindest den gleichen Job wie ein im Kernel vorhandener macht und ohne Panik funktioniert).

  2.   Sete sagte

    Von Zeit zu Zeit lese ich noch einmal Artikel von Linux Adictos Aber es dauert nicht lange, bis ich verzweifle, wenn ich sehe, dass trotz sehr guter Inhalte das Endergebnis durch schreckliche Rechtschreibung zerstört wird.
    Werden Rechtschreibung und Grammatik so schwierig sein?
    Eine Schande!
    Aufheitern!