专栏名称: OSC开源社区
OSChina 开源中国 官方微信账号
目录
相关文章推荐
程序员小灰  ·  2025开年,跌爆了! ·  昨天  
OSC开源社区  ·  用Rust重写近6万行C++代码是怎样的体验? ·  3 天前  
程序员小灰  ·  2024年,我做了哪些事? ·  4 天前  
程序猿  ·  华为公布可检测驾驶员行为异常专利 ·  4 天前  
51好读  ›  专栏  ›  OSC开源社区

用Rust重写近6万行C++代码是怎样的体验?

OSC开源社区  · 公众号  · 程序员  · 2025-01-02 15:30

正文

OSCHINA

↑点击蓝字 关注我们


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

2023 年初,fish 作者宣布将采用 Rust 重写 Fish Shell 项目。

重写原因包括:
  • 没有人真正喜欢 C++ 或 CMake,也没有摆脱旧工具链的明确途径。每年的“开发痛苦”都会加重。
  • C++ 正在成为一种“遗留语言”,未来寻找贡献者将变得困难,而 Rust 拥有一个活跃且不断发展的社区。
  • Rust 是实现并发函数执行所需要的语言。
  • 用 Rust 编写将有助于 fish 继续被认为是现代和有价值的。

现在时隔将近两年,fish 4.0 最近发布了首个 beta,开发者称该版本包含 0% 的 C++ 和几乎 100% 的纯 Rust 代码

他表示将 fish shell 的代码库从 C++ 迁移到 Rust 初步取得了成功 ,从相关数据来看这是一项巨大工程:
  • 文件变更数 1155 个,110247 次新增(+)、88941 次删除(-),不包括转译
  • 200 多位贡献者共提交 2604 次
  • 498 issues
  • 近 2 年的开发周期
  • 将 57000 行 C++ 代码重写为 75000 行 Rust(外加 400 行 C)
  • 彻底清理 C++ 代码
Fish Shell 团队还表示,迁移至 Rust 的好处随着时间推移已显现出来。比如之前的 (n) curses 问题——现在已经没了,因为他们不再使用 curses。
取而代之的是他们切换至使用 Rust crate 包,它很好地满足了需求,即访问 terminfo 并扩展其序列。
这消除了一些尴尬的全局状态,也意味着那些从源代码构建的人不再需要确保 curses 已经“正确”安装在他们的系统上 —— 只需下载一个 crate 包并进行构建即可。
开发团队还提到了一些遗憾,比如此次重写 C++ 代码未能实现的一个目标是移除 CMake。这是因为虽然 cargo 在构建方面很出色,但在安装方面却很简陋Cargo 希望把所有东西都放在几个整洁的二进制文件中,然而这并不适用于他们的项目。

Fish 有大约 1200 个.fish 脚本(961 个补全,217 个相关函数),以及大约 130 页的文档(以 html 和 man 页面形式),还有 web-config 工具和 man 页生成器(两者都是用 python 编写的)。

总的来说:

“移植并非一帆风顺,而且并非一切都按计划进行。但总体而言,进展相当顺利。

我们现在有了一个我们非常喜欢的代码库,增加了一些在 C++ 时代难以实现的功能,而且还有更多功能正在开发中。

我们还创建了一个单独的 3.7 版本,其中也包括一些很酷的东西。我们做这件事很开心。


阅读更多

Fish Shell采用Rust重写会导致性能下降

Fish Shell计划采用Rust重写

相关来源

https://fishshell.com/blog/rustport

https://github.com/fish-shell/fish-shell/pull/9512

END


热门文章

操作系统能知道自己是在虚拟机中运行的吗?

Firefox“瘦身”了,但只有Linux用户能体验

Vue.js宣布:我们将成为最快的响应式框架!

字节跳动起诉前实习生篡改代码,索赔800万

红帽RHEL将成为微软官方WSL发行版






分享在看点赞~Orz