Fish Shell 4.0 drops C++ for Rust to simplify development and enhance performance
Fish, the command line shell known for its user-friendly interface on Linux and macOS, has undergone a significant transformation with the release of version 4.0. The shell has been completely rewritten in Rust, moving away from its previous C++ codebase. This change, initially a humorous suggestion among developers, quickly gained traction as a popular request within the community.
The transition to Rust marks a substantial shift for Fish, which had previously been ported from C to C++ earlier in its development history. The decision to adopt Rust was driven by challenges the developers faced with C++, including issues with tools, compiler and platform differences, ergonomics, and thread safety.
Rust's features, particularly Send and Sync, offer Fish enhanced multithreading capabilities, ensuring thread safety and performance improvements. This has enabled Fish to enhance its autosuggestion and syntax highlighting features, introducing asynchronous prompts and non-blocking completions. The Rust-based Fish also facilitates the provision of updated packages for systems with older software, such as LTS Linux distributions and older versions of macOS. However, the new version no longer supports Cygwin at the moment.
Version 4.0 represents a milestone for Fish, embracing modern programming paradigms to enhance user experience and maintainability.
