Fish Shell 计划采用 Rust 重写


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 中。开发者可以按照常见的方式进行构建:

  1. 安装 Rust 1.67 或更高版本
  2. 像往常一样 cmake,可以通过 corrosion 来运行

关于使用 Rust 重写 Fish Shell 的详细描述,访问此文档。


相關推薦

2023-11-28

问题和误解。他们表示不会删除所有的 C++ 代码,也没有计划移植到 Windows 平台。他们还表示不会更改 Fish Shell 的名称或吉祥物,并且对于最终移植的性能,他们表示早期结果是令人鼓舞的,但可能在某些情况下会比现有版本慢

2023-03-03

“去 Nginx” Mesa Vulkan 驱动探索采用 Rust 重写 Fish Shell 计划采用 Rust 重写    

2023-01-10

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

2022-06-21

Fish Shell 近日发布了重要版本 3.5.0。 fish 是适用于 Linux、macOS 的命令行 Shell,其名字取于 "the friendly interactive shell" 的简称,最大特点就是方便易用、功能强大、智能并且用户友好。很多其他 Shell 需要配置才有的功能

2023-02-05

是探索可能性。他目前的工作仅仅是触及了皮毛,接下来计划将进一步探索实验并发布博文反馈。 “我希望当有人确实选择用 Rust 编写 Vulkan 驱动程序时,我们已经做好准备。这种探索也可能有助于向 Rust 社区提供一些可推进

2023-10-09

下所示: fn main() { assert_eq!("🦀", "🐟", "ferris is not a fish"); } Output before Rust 1.73: thread 'main' panicked at 'assertion failed: `(left == right)` left: `"🦀"`, right: `"🐟"`: ferris is not a fish', src/main.rs:2:5 Output starting in Rust 1.73: thread 'main'

2023-05-05

://github.com/memorysafety/sudo-rs 这项工作从去年 12 月开始,计划于 2023 年 9 月结束。具体开发计划查看:Work Plan。

2023-04-24

适合性, 认知深刻和持续维护的软件对用户才有价值, 重写完一个软件, 证明 rust 比别的语言快和自己厉害, 马上就弃坑的软件没有价值。 3. Rust社区推崇内存的细腻控制, 有时候就和C++的开发人员一样讨厌, 把指针或者

2023-04-29

用。 且 Weston 透露,Windows 内核中现在有一个 SysCall,是采用 Rust 实现的。但他也表示,用 Rust 重写 Windows 可能不会很快发生。“所以虽然我们喜欢 Rust,但我们需要一种策略,同时保护更多的 native code。” 事实上,早在几年

2023-03-21

较小的组件,让项目的编程语言相对统一化。目前最新的计划是用 Rust 重写 两个组件:Linux 来宾工具(目前在 Go 中)和指标守护程序(目前在 OCaml 中)。 感兴趣的人可以在 XCP-ng 博客上了解更多详细信息。

2023-03-01

去年曾报道过,Cloudflare 将 Nginx 替换为内部采用 Rust 编写的 Pingora,目标是构建一个更快、更高效、更通用的内部代理,用作 Cloudflare 当前和未来产品的平台。不过 Cloudflare 的基础设施非常庞大,并且包含许多不同的服务。 近

2022-03-24

Css 渲染组件如 整合到 Firefox 浏览器中。 Mozilla 最初的计划是用 Rust 来完全重写 Firefox 的 C++ 代码,以安全性较高的 Rust 取代 C++ 。但由于疫情原因,Mozilla 在 2020 年的裁员中把 Rust 团队和大部分 Rust 核心开发者给裁员了。而后 R

2023-08-31

根据项目主页的信息,亚马逊 AWS 为此次“Rust 重写 sudo”计划提供了资金支持。

2022-04-04

而 GNOME 开发者  在博客中提及 GNOME 43 及更高版本的开发计划,新版本主要聚焦于以下变更: 强调色和 Libadwaita 重新着色 API 库有助于定义 GNOME 应用程序的视觉语言和用户体验,使实现一个重要的个性化功能变得简单:可定制