Rennen gegen Rust: GNU Coreutils werden schneller

Zuletzt verzeichnete die Rust-Implementierung der Coreutils einen spĂĽrbaren Performance-Zuwachs. Jetzt legen die GNU-Entwickler nach.

vorlesen Druckansicht 20 Kommentare lesen
Ein Emblem mit den Worten "Open Source", Bergen, einem Fluss und einem Netzwerk-Symbol auf einem lila Hintergrund mit Sternen und einem Gitter.

(Bild: heise medien)

Lesezeit: 3 Min.
Inhaltsverzeichnis
close notice

This article is also available in English. It was translated with technical assistance and editorially reviewed before publication.

Die Entwickler der GNU Coreutils haben mit Version 9.11 eine höhere Performance ihrer Anwendungen über verschiedene Prozessorarchitekturen hinweg gemeldet. Einige der elementaren Systemprogramme für Linux und Unix erreichen 15-fache Geschwindigkeit im Vergleich zur Vorversion. Neben einigen Bugfixes und Verbesserungen haben die Entwickler die Kompatibilität von cat mit Unix-Implementierungen überarbeitet.

Den höchsten Leistungsgewinn erzielt yes, dessen Datendurchsatz auf Power10-Systemen von 11,6 GByte/s auf 175 GByte/s ansteigt. Dazu nutzen die Entwickler eine Zero-Copy-I/O-Implementierung unter Linux. Statt Daten zwischen Kernel- und User-Space hin und her zu kopieren, nutzt die neue Variante moderne Funktionen des Kernels wie sendfile(), um Kopiervorgänge zu vermeiden. Auf diese Weise erhöht sich bei Power10-Prozessoren die Performance von cat auf das Sechsfache, bei AMD64-Prozessoren auf das Fünffache.

Neben den Performance-Verbesserungen erweitern die Entwickler mehrere Programme für den Umgang mit Multi-Byte-Zeichen. Die Werkzeuge cut, nl, unexpand und expand können jetzt Unicode-Texte mit Emojis oder nicht lateinischen Schriften korrekt verarbeiten. Bisher arbeiteten diese Tools rein bytebasiert, was bei Mehrbyte-Kodierungen zu fehlerhaften Ergebnissen führen konnte.

Darüber hinaus enthält cut drei neue Optionen: cut -w trennt Felder nun mit einem beliebigen Whitespace wie Leerzeichen oder Tab anstelle eines festgelegten Trennzeichens. Dies soll gleichzeitig die Kompatibilität mit FreeBSD und macOS erhöhen. cut -O legt das Zeichen fest, das zwischen ausgegebenen Feldern stehen soll, und cut -F ist ein Alias für die Kombination dieser beiden Optionen. Dieses Verhalten entspricht der cut-Implementierung in BusyBox und Toybox.

Weiterhin erweitern die Entwickler date, das jetzt Datumsangaben im Format dd.mm.yy mit Punkten als Trennzeichen verarbeiten kann. Außerdem behandelt cksum --check jetzt Dateinamen mit ungewöhnlichen Zeichen sicherer durch robusteres Quoting. Das verhindert potenzielle Probleme bei der Integritätsprüfung von Dateien, deren Namen Sonder- oder Leerzeichen enthalten.

Videos by heise

Die in C geschriebenen GNU Coreutils bilden das Fundament jedes GNU/Linux-Systems. Standardprogramme wie ls, cp, cat, mv oder wc gehören zu den am häufigsten genutzten Werkzeugen auf der Kommandozeile. Eine Alternative dazu ist die Rust-Neuimplementierung uutils coreutils, die zuletzt ebenfalls Leistungssprünge aufweisen konnte und inzwischen zu 96 Prozent mit der GNU-Werkzeugsammlung kompatibel ist. Einige Linux-Distributionen enthalten bereits standardmäßig das Rust-Pendant, etwa Ubuntu.

Insgesamt bringt das Update knapp 30 Veränderungen und Bugfixes. Alle Änderungen der GNU Coreutils 9.11 finden sich im Changelog.

(sfe)