fish Shell,the friendly interactive shell

Feb. 1, 2023

fish 是适用于 Linux、macOS 的命令行 Shell,其名字取于 "the friendly interactive shell" 的简称,最大特点就是方便易用、功能强大、智能并且用户友好。很多其他 Shell 需要配置才有的功能,fish 默认提供,不需要任何配置。

fish 作者近日提交 PR 称要用 Rust 重写 Fish Shell 项目。他认为应该将 Fish Shell 的开发语言从 C++ 过渡到 Rust,重写原因包括:

没有人真正喜欢 C++ 或 CMake,也没有摆脱旧工具链的明确途径。每年的 “开发痛苦” 都会加重。 C++ 正在成为一种 “遗留语言”,未来寻找贡献者将变得困难,而 Rust 拥有一个活跃且不断发展的社区。 Rust 是实现并发函数执行所需要的语言。 用 Rust 编写将有助于 fish 继续被认为是现代和有价值的。 因此,fish 作者表示这应该称作 “移植” 而不是 “重写”,因为他们不会从头开始;相反,他们会在一个版本的跨度内,逐步地将逐个模块从 C++ 转换为 Rust。他们将使用 FFI,以便 Rust 和 C++ 位可以相互通信,直到 C++ 消失,并且测试和 CI 在每次提交时会继续保持通过。

为了证明 “Rust 重写计划” 可以执行,在这个 PR 中,作者将 FLOG、主题监视器、wgetopt、builtin_wait 和其他一些功能移植到了 Rust。Rust 位存在于 C++ 内部并与之链接的 crate 中。开发者可以按照常见的方式进行构建:

安装 Rust 1.67 或更高版本 像往常一样 cmake,可以通过 corrosion 来运行 关于使用 Rust 重写 Fish Shell 的详细描述,访问此文档。