Ubuntu-Logo auf Holz

Ubuntu 25.10 soll GNU Core Utils in Rust ausliefern

Canonical plant, einige GNU-Systemtools künftig in der Programmiersprache Rust auszuliefern. Den Anfang sollen mit Ubuntu 25.10 die GNU Core Utils machen. Das Paket, das um 1970 in der Sprache C entwickelt wurde, stellt einen grundlegenden Satz von Befehlszeilenprogrammen bereit, die für die Interaktion mit und die Verwaltung von Unix-ähnlichen Betriebssystemen unerlässlich sind. Sie bieten grundlegende Datei-, Shell- und Textmanipulationsfunktionen und werden mit fast allen Linux-Distributionen ausgeliefert. Ausnahmen sind etwa Alpine Linux, das das reduzierte Paket Busybox als ausreichend ansieht und Chimera Linux, das anstatt auf GNU-Tools lieber auf Tools aus FreeBSD setzt.

Essenzielles Paket

Zu den über Hundert Kommandozeilen-Tools im Paket coreutils zählen Befehle wie ls, cp, dd, df, mv und rm. Eine komplette Liste ist im Debian Wiki zu finden.

Verantwortlich für die nicht gerade triviale Migration bei Ubuntu ist Julian Andres Klode, der unter anderem Maintainer von APT ist. Vor wenigen Tagen hat Klode die geplante Migration auf Ubuntu Discourse detailliert beschrieben.

Der Paketname ändert sich dabei nicht sehr einprägsam von coreutils zu coreutils-from-uutils. Eine Rückkehr zu coreutils ist möglich, falls nötig. Der Paketname dafür lautet dann coreutils-from-gnu. Coreutils ist ein essenzielles Paket, was die Migration erschwert, da bestimmte Anforderungen erfüllt sein müssen.

Motivation für eine Migration

Die wichtigste Motivation für den Wechsel auf Rust-Coreutils ist die deutlich höhere Sicherheit. Rust bietet eine moderne Speicherverwaltung, die viele typische Fehlerquellen wie Pufferüberläufe und Use-after-free-Probleme, die bei C-basierten Programmen häufig auftreten, von vornherein verhindert. Dadurch sinkt die Anfälligkeit der Systemtools für Angriffe. Ein weiterer Vorteil ist die besser wartbare Codebasis bei vollständiger Kompatibilität zu den GNU-Tools.

Test bereits jetzt möglich

Wer experimentierfreudig ist, kann mit Ubuntu verschiedene Tools-Pakete bereits jetzt in Rust testen. Dafür hat John Seager, Vizepräsident Engineering bei Canonical, das Tool oxidizr geschrieben, das Coreutils, Findutils, Diffutils und Sudo in Rust-Versionen bereitstellt und den Wechsel mit den GNU-Pendants ermöglicht. Eine Anleitung gibt es ebenfalls auf Discourse.

Teilt den Beitrag, falls ihr mögt

8 Kommentare

    1. Danke für den Link.
      Wenn ich das Interview richtig interpretiere dann ist ein Sicherheitsgewinn kaum zu erwarten. Im Vordergrund der Rust Implementierung dürfte eher folgendes stehen:

      • Bessere Wartbarkeit weil C anscheinend aus der Mode kommt.
      • Wechsel von der GPL zur MIT Lizenz.

      Was ich nicht verstehe ist dieser eine Punkt den Daniel Hofstetter bei den Vorteil aufführt:

      “Sie ist wirklich plattformübergreifend. Wir unterstützen Linux, macOS, Windows, Android und FreeBSD. Wir wissen, dass unsere Implementierung auch auf anderen Betriebssystemen gut funktioniert. Sie ist auch architekturübergreifend: Sie läuft dort, wo der Rust-Compiler läuft.”

      Der C-Compiler dürfte doch auch überall laufen. Inwieweit macht sich das wirklich bei “wirklich plattformübergreifend” denn bemerkbar.

      6
    1. Naja, zum Glück kann man als mündiger Linuxer Ubuntu durchaus divers betrachten. Im hier zur Debatte stehenden Fall produzieren sie mal keine Einbahnstraße, sodass auch Debian und andere Distributionen davon profitieren könnten, so sie denn wollen.

      2
      1. Bin ich voll bei dir.

        Genau das ist in meinen Augen der goldene Weg. Offen sein für neues und es dennoch kritisch bzw. sachlich kritisch betrachten. Nur so ist ein Wachstum möglich der nicht außer Kontrolle gerät.

        Denn Stillstand ist der Tot. Nur weil etwas funktioniert, ist es nicht gleich gut. Und nur weil etwas neu ist, ist es nicht gleich sicher usw. 🙂

        Ich persönlich bin ein Fan davon die Tools neu in Rust zu implementieren. Mein Gedanken dabei sind “Keine Abhängigkeit mehr von nur einem Dev, moderne Codebasis, schneller…” usw. wir haben zu oft in der Vergangenheit gesehen, dass nur ein Dev für den Zusammenbruch ganzer Konstrukte sorgen kann weil es EIGENTLICH ein Hobby-Projekt war 😀

        Gab ja immer mal ansätze kleinerer Natur. exa/eza für ls zb. oder bat für cat. Nutze ich beides sehr gerne. Ein konsistentes Paket bevorzuge ich da aber sehr 😀

        5

Kommentar hinterlassen