Fish Shell 4.0: Rust im Anmarsch
2
Jahre, 57k
Zeilen C++, jetzt 75k
Zeilen Rust. Fish Shell 4.0 beta wurde komplett in der Programmiersprache Rust umgeschrieben..
Eine Übersetzung von 🇬🇧 Linuxiac.com
In einer bemerkenswerten zweijährigen Anstrengung haben die Betreuer der beliebten Fish-Shell offiziell eine Beta-Version von Fish 4.0 veröffentlicht - dieses Mal fast vollständig in Rust statt in C++ geschrieben. Was Anfang 2023 als spielerische Anfrage mit dem scherzhaften Titel Rewrite it in Rust begann, hat nun zu einer vollwertigen Umstellung geführt.
Ob Sie es glauben oder nicht, anfangs hat niemand wirklich erwartet, dass sich diese Idee zu einem gewaltigen Unterfangen auswachsen würde, zumal Fish in seinen früheren Tagen bereits von reinem C nach C++ portiert worden war.
Im Laufe der Zeit veranlassten jedoch praktische Erwägungen wie verbesserte Werkzeuge, einfachere Wartung, sicherere Gleichzeitigkeit und der Reiz, eine "coole" Sprache zu lernen oder zu verwenden, die Betreuer dazu, diesen augenzwinkernden Vorschlag in ein ernsthaftes Unterfangen zu verwandeln. Und hier sind wir nun, mit der ersten Beta von Fish Shell 4.0, die vollständig auf Rust basiert.
Die Beta-Version funktioniert sehr gut. Die Leistung ist in der Regel etwas besser, was die benötigte Zeit angeht, der Speicherverbrauch ist etwas höher, aber nicht so hoch - im Ruhezustand werden 8M statt 7M verbraucht, aber wenn man z.B. ein großes Verzeichnis globalisiert, steigt der Wert nicht so stark an. All diese Dinge können natürlich noch verbessert werden, aber für ein erstes Ergebnis ist es ermutigend.
Während der Entwicklung verfolgte das Team einen schrittweisen Ansatz und portierte ein Teilsystem nach dem anderen von C++ nach Rust. Sie verließen sich auf ein Überbrückungstool namens autocxx, das es ihnen ermöglichte, Rust-Komponenten aus der alten C++-Codebasis heraus aufzurufen (und umgekehrt).
Im Wesentlichen behielt Fish eine partielle Rust- und eine partielle C++-Codebasis bei, bis der letzte Teil von C++ Anfang 2024 endgültig verschwand. Diese Strategie sorgte dafür, dass Fish während des gesamten Umschreibens testbar und funktional blieb, und ermöglichte so regelmäßige Veröffentlichungen - wie das auf C++ basierende Fish 3.7.0 - während die allgemeine Rust-Migration fortgesetzt wurde.
Viele fragen sich jetzt wahrscheinlich: Warum Rust? Laut den Entwicklern war einer der wichtigsten Gründe für diesen Wechsel das C++-Tooling und das Community-Ökosystem, das vor allem für Hobbyisten oder ehrenamtlich betriebene Projekte eine Herausforderung darstellen kann.
Die Autosuggestions
und die Syntaxhervorhebung
von Fish sind seit langem für ihre fortschrittliche Thread-Nutzung bekannt, aber die Implementierung von weiterem Multithreading in C++ erwies sich als schwierig. Rusts Versprechen der furchtlosen Gleichzeitigkeit, unterstützt durch die Send- und Sync-Traits
, bot einen saubereren und sichereren Weg nach vorne.
Darüber hinaus verfügt Rust über ein überlegenes Abhängigkeitsmanagement und intuitive Compiler-Fehlermeldungen. Anstatt sich mit Compiler-Mismatch-Problemen herumzuschlagen - bei denen die Mitwirkenden die richtige C++-Version finden oder installieren mussten - können Rust-Entwickler einfach rustup
ausführen und erhalten sofort eine konsistente Umgebung.
Ein bedauerlicher Verlust aufgrund des Rust-Wechsels ist jedoch die Unterstützung von Cygwin
(einer Kompatibilitätsschicht, mit der Linux-Tools und -Anwendungen unter Windows ausgeführt werden können), aber die Entwickler sind zuversichtlich, dass die Hauptnutzerbasis von Rust (in erster Linie Linux-, BSD- und macOS-Nutzer) gut abgedeckt bleibt.
Zum Schluss noch ein paar interessante Fakten für alle, die Statistiken und genaue Zahlen lieben. In rund 14
Monaten Entwicklungszeit haben die Fish-Maintainer über 2.600
Commits von mehr als 200
Autoren erstellt und dabei über 57.000
Zeilen C++ in rund 75.000
Zeilen Rust übersetzt.
Für die Zukunft planen die Entwickler, Rust-basierte Funktionen zu verfeinern, möglicherweise alte Macken von Fish wie die Behandlung von UTF-32-Strings zu überarbeiten und den Build-Prozess weiter zu optimieren. Weitere Informationen finden Sie in der offiziellen Ankündigung.
Spendieren Sie Bobby einen ❤️ Ko-fi
Ein Service von s3n🧩net
Comments