Fish (command line shell) переписали с C++ на Rust. В этом комментарии к PR несколько деталей и подробностей, почему они устали от C++: https://github.com/fish-shell/fish-shell/pull/9512#issuecomment-1410820102
Позволю себе сделать краткую выжимку с помощью GPT:
1. Fish shell - достаточно старый проект, начатый в 2005 году Акселем Лильенкранцем на языке C с использованием wchar_t для поддержки Unicode (что впоследствии оказалось неудачным выбором).
2. После периода неактивности проект был подхвачен Питером (@ridiculousfish), который портировал его на C++ и создал версию 2.0.
3. Основные проблемы с текущим стеком технологий (C++):
• Медленное внедрение новых стандартов
• Сложности с поддержкой разных компиляторов
• Неудовлетворительная работа со строками
• Проблемы с многопоточностью
• Сложности с управлением памятью и undefined behavior
• Проблемы с системой сборки cmake
4. Ключевые требования к проекту:
• Доступность на старых серверных дистрибутивах
• Простота сборки и запуска
• Возможность легкого внесения патчей
5.Почему выбран именно Rust:
• Соответствует техническим требованиям
• В команде есть люди, знающие язык
• Хорошая поддержка многопоточности
• Активное сообщество и momentum
• Уже существует начальная реализация
6. Команда осознанно не рассматривала другие языки (Go, Python, Java, D, Zig, Nim), так как это потребовало бы обучения всей команды.
Post #1384
2.78K