Plus tôt ce mois-ci, Fish Shell 4.0 est entré en version bêta avec le code C++ porté sur Rust. Maintenant que la majeure partie du code Fish Shell est transférée vers Rust, le projet a publié ce week-end un article de blog décrivant les succès et les défis rencontrés lors du portage de sa grande base de code C++ vers Rust.
Les développeurs de Fish Shell ont noté que certaines des difficultés rencontrées en C++, les conduisant à explorer davantage d’autres langages, concernaient les différences entre les outils et les compilateurs/plateformes, l’ergonomie et la sécurité des threads, ainsi que la communauté de développement. Un exemple était que Fish avait prototypé une véritable exécution multithread en C++ et cela était pénible pour ce shell open source.
Quant à l’utilisation du langage de programmation Rust, ils admettent : « La rouille, c’est cool. C’est amusant. » Ils sont également fiers de Rust pour ses outils, sa configuration facile, sa grande ergonomie, sa meilleure gestion des dépendances et les capacités d’envoi et de synchronisation de Rust le rendent très agréable pour le threading.
Les développeurs reconnaissent certains défis liés à Rust, tels que la manière dont il gère la portabilité, les outils qui ne parviennent parfois pas à prendre en compte d’autres cibles et certains problèmes de localisation. Certains reproches à Cargo ont également été soulignés : même s’il est idéal pour construire des choses, il est plutôt simpliste pour les installer et Fish s’appuie donc toujours sur CMake.
Le Article de blog sur le poisson se termine par :
« Le portage n’a pas été sans difficultés, et tout ne s’est pas déroulé comme prévu. Mais dans l’ensemble, tout s’est plutôt bien passé. Nous nous retrouvons maintenant avec une base de code que nous aimons beaucoup plus, qui a déjà acquis certaines fonctionnalités qui aurait été beaucoup plus ennuyeux à ajouter avec C++, avec d’autres choses à venir, et nous l’avons fait en créant une version 3.7 distincte qui comprenait également des éléments sympas.
Et nous avons eu du plaisir à le faire. »