Rust Coreutils 0.7: Turbo für die Kommandozeile
Die Rust-Neuimplementierung klassischer Unix-Tools erreicht Version 0.7 mit zahlreichen Performance-Verbesserungen und Build-Fixes für NetBSD und PowerPC.
(Bild: heise medien)
Die Entwickler der Rust Coreutils haben Version 0.7 veröffentlicht. Der Fokus der Aktualisierung liegt auf Performance-Optimierungen, die sich über Dutzende Utilities erstrecken. Zu den Verbesserungen gehören schnellere Hash Maps, neue ASCII-Schnellpfade und reduzierte malloc-Aufrufe bei verschiedenen Befehlen. Zusätzlich haben die Entwickler Build-Fixes für NetBSD und PowerPC integriert.
Ein weiterer Schwerpunkt der Version liegt auf der Reduzierung von unsicherem Code. Konkret haben die Entwickler unsicheren libc-Code durch sichere Rust-Abstraktionen ersetzt, was die Sicherheit der Implementierung weiter erhöht. Dies knüpft an die Arbeit der Vorgängerversion 0.6 an, die bereits Buffer Overflows und Use-After-Free-Fehler durch Rusts Ownership-System eliminiert hatte. Version 0.7 eliminiert zudem Panics beim Schreiben nach /dev/full in über 20 Utilities wie echo, date und sort, was die Produktionsreife weiter erhöht.
GNU-Kompatibilität sinkt prozentual
Bei der Kompatibilität zur GNU Test Suite verzeichnet Version 0.7 einen scheinbaren Rückschritt: Die Quote sank von 96,3 Prozent in Version 0.6 auf 94,6 Prozent. Dieser Rückgang erklärt sich jedoch durch die Integration von 19 neuen Tests aus GNU Coreutils 9.10. Die absolute Anzahl bestandener Tests ist trotz der gesunkenen Prozentquote gestiegen. Zudem sind sechs weitere Tests übersprungen worden und sieben zusätzliche Tests fehlgeschlagen.
Videos by heise
Der prozentuale Rückgang ist normal angesichts der sich entwickelnden Referenz-Test-Suite. Die neuen Tests aus GNU Coreutils 9.10 sind schwieriger zu bestehen als die bisherigen, weshalb die Quote sinkt, während die Implementierung gleichzeitig absolut gesehen mehr Tests besteht. Trotzdem strebt das Rust-Coreutils-Projekt weiterhin eine vollständige GNU-Kompatibilität von 100 Prozent an. Dabei arbeiten die Entwickler eng mit dem GNU-Projekt zusammen und haben zahlreiche Patches zu den GNU Coreutils beigesteuert, was beide Projekte stärkt.
Performance-Verbesserungen im Detail
Die Performance-Optimierungen in Version 0.7 sollten für Systemadministratoren und Endnutzer besonders bei Batch-Operationen mit vielen Dateien, der Verarbeitung großer Datenmengen und wiederholten Aufrufen von Utilities in Skripten messbar sein. Konkret bringen zum Beispiel unexpand 14 Prozent Geschwindigkeitsgewinn, du zwischen drei und sechs Prozent und shuf rund vier Prozent. Die schnelleren Hash Maps beschleunigen Operationen, die auf Schlüssel-Wert-Zuordnungen angewiesen sind. Die neuen ASCII-Schnellpfade optimieren die Verarbeitung von ASCII-Zeichen, die in vielen Anwendungsfällen den Großteil der verarbeiteten Daten ausmachen.
Reduzierte malloc-Aufrufe führen zu weniger Speicher-Fragmentierung und potenziell kürzeren CPU-Aktivitätszeiten, was sich positiv auf die Gesamtperformance auswirkt. Diese Optimierungen reihen sich in eine kontinuierliche Entwicklung ein: Bereits in Version 0.6 wurden die Base-Encoding-Utilities wie base32 und base64 beschleunigt, und Version 0.4 brachte spezifische Optimierungen für factor, cksum, tsort und mkdir.
Die Release Notes zu Version 0.7 stehen auf GitHub zur Verfügung.
(fo)