Fish Shell Rewritten in Rust: Progress and Insights
The Fish shell, a user‑friendly command‑line interface for Linux and macOS, is being completely rewritten in Rust after years of C++ development, with the 4.0 beta showing nearly 100 % Rust code, thousands of commits, major line‑count conversions, easier builds, removed ncurses dependency, new features, and only minor remaining CMake challenges.
Fish is a user‑friendly command‑line shell for Linux and macOS, known for its out‑of‑the‑box features.
In early 2023 the project announced a rewrite in Rust to replace the C++ codebase.
Reasons include developer fatigue with C++/CMake, the growing Rust community, Rust’s concurrency support, and the desire to keep fish modern.
The beta of fish 4.0 shows 0 % C++ and almost 100 % pure Rust: 1 155 files changed, 110 247 additions, 88 941 deletions, 2 604 commits from over 200 contributors, 498 issues, a two‑year development cycle, and a conversion of ~57 000 C++ lines to ~75 000 Rust lines (plus 400 C lines).
Benefits observed are the removal of ncurses dependencies, easier builds with Rust crates, and new features previously impossible in C++. Some drawbacks remain, such as the inability to drop CMake completely.
The team reports steady progress and a codebase they are proud of, with more features under development.
Java Tech Enthusiast
Sharing computer programming language knowledge, focusing on Java fundamentals, data structures, related tools, Spring Cloud, IntelliJ IDEA... Book giveaways, red‑packet rewards and other perks await!
How this landed with the community
Was this worth your time?
0 Comments
Thoughtful readers leave field notes, pushback, and hard-won operational detail here.