Android: Google unterstützt Rust im Linux-Kernel
Das Software-Unternehmen Google unterstützt nun offiziell die Initiative, die als sicher geltende Programmiersprache neben C im Linux-Kernel zu nutzen. Das schreiben die Beteiligten in ihrem Security-Blog(öffnet im neuen Fenster). Die Arbeiten für Rust im Kernel seien dabei Teil der Anstrengungen, Rust auch für das Basis-Betriebssystem in Android einzusetzen, was nun also auch explizit den Linux-Kernel einschließt.
Dazu heißt es in der Ankündigung: "Wir glauben, dass Rust jetzt bereit ist, C als praktische Sprache für die Implementierung des Kernels beizutreten. Es kann uns helfen, die Anzahl potenzieller Fehler und Sicherheitslücken in privilegiertem Code zu reduzieren, während wir gut mit dem Kernel zusammenarbeiten und seine Leistungsmerkmale beibehalten".
Erster Prototyp in Rust
Um die Ernsthaftigkeit seiner Anstrengungen zu unterstreichen, hat Google den für Android zentralen Binder-Treiber als Prototyp neu in Rust(öffnet im neuen Fenster) umgesetzt. Binder dient der Interprozesskommunikation (IPC). Der nun verfügbare Prototyp soll vor allem dabei helfen, die Leistung und Sicherheit des Rust-Codes überprüfen zu können. Darüber hinaus sei klar, dass nun nicht der gesamte Kernel-Code auf Rust portiert werde. Vielmehr werde eine schrittweise Umsetzung angestrebt. Auch das soll der Binder-Treiber nun wohl demonstrieren.
Für die vorgestellte Arbeit an Binder baut Google auf der bereits seit längerem existierenden Initiative Rust for Linux auf, deren Code bereits zum Testen in Linux-Next aufgenommen wurde. Google sei jetzt Teil dieser Initiative und wird diese wohl weiter unterstützen.
Zusätzlich zu den mit Rust verbundenen Sicherheitsversprechen sieht Google mit der Einführung der Sprache im Linux-Kernel auch die Möglichkeit, neue Richtlinien etwa in Bezug auf die Dokumentation und Kommentare im Code umzusetzen. Geht es nach Google, soll etwa künftig jede Verwendung der Rust-Anweisung unsafe im Linux-Kernel zwingend begründet und dokumentiert werden.
Torvalds prüft Rust im Linux-Kernel
Um die Rust-Arbeiten auch möglichst bald in den Linux-Kernel einpflegen zu können, haben die Beteiligten der Initiative den Rust-Support-Code nun auch erstmals offiziell als sogenannte RFC zur Diskussion in der Linux-Community eingereicht(öffnet im neuen Fenster). Darin werden die bisherigen Arbeiten und vor allem auch die Ziele und Wege dahin erneut ausführlich beschrieben.
Demnach ist Rust zunächst nur für Treiber und die sogenannte Linux-Kernel-Module gedacht, nicht jedoch für Kernkomponenten des Kernels selbst, wie etwa die Speicherverwaltung. Aufgezählt werden neben den Sicherheitsvorteilen von Rust auch einige mögliche Nachteile. So ist das Kompilieren bisher lediglich stabil per LLVM möglich, auch wenn an einem GCC-Frontend bereits gearbeitet werde.
Aufgrund der komplexeren Sprachfunktionen von Rust dauere das Kompilieren selbst zudem länger als bei C. Und der Rust-Code nutze derzeit noch Funktionen aus dem Nightly-Compiler, diese sind also noch nicht stabil verfügbar. Das soll künftig aber nicht mehr nötig sein.
Ziel der Beteiligten sei es außerdem, den nun verfügbaren Code so früh wie möglich in den Hauptzweig einzupflegen, dabei möglicherweise auftretende Fehler zu beheben und den Code dann künftig im Gleichtakt mit dem Hauptzweig weiterzuentwickeln. Das ist die übliche und auch erwartete Vorgehensweise für den Linux-Kernel.
Torvalds interessiert
Der letztliche Erfolg hängt jedoch deutlich von der Zustimmung und Diskussion der Linux-Kernel-Betreuer ab sowie letztlich von Linux-Chefentwickler Linus Torvalds. Dieser hat sich bisher eher zurückhaltend zu dem Projekt geäußert. Auf Grundlage der nun erstmals offiziell vorgeschlagenen Patches beteiligt sich aber auch Torvalds selbst an der Begutachtung des Codes.
Torvalds stellt zunächst einfache Nachfragen zur Funktion und für sein Verständnis des Rust-Codes und zu dessen Fehlerverhalten. Darüber hinaus erhofft sich der Linux-Chefentwickler mehr echten Rust-Code(öffnet im neuen Fenster), der Treiber implementiert, was künftig aber noch folgen soll. Hauptkritik an dem Binder-Port ist vor allem, dass dieser größtenteils eigenständig agiert. Besser wären Hardwaretreiber etwa für NVMe, GPIO oder auch HID- oder ACPI-Parser, die für Rust gut geeignet seien, um die Sicherheit zu demonstrieren, wie etwa Greg Kroah-Hartman schreibt(öffnet im neuen Fenster), der als Nummer 2 der Linux-Entwicklung nach Torvalds gilt. Wann und ob der Rust-Code in Linux aufgenommen wird, ist derzeit nicht absehbar.
- Anzeige Hier geht es zu Programmierung sicherer Systeme mit Rust bei Amazon Wenn Sie auf diesen Link klicken und darüber einkaufen, erhält Golem eine kleine Provision. Dies ändert nichts am Preis der Artikel.