Rust 重写 coreutils 能替代 GNU 吗?Ubuntu 26.04 实测差距惊人
原创Rust 重写 coreutils 能替代 GNU 吗?Ubuntu 26.04 实测差距惊人
测试方法:27 个工具、约 2000 个用例的差分对比
Ubuntu 26.04 把默认的 coreutils 换成了 uutils,那个用 Rust 重写的版本。升级系统的人多半不会注意到,但跑脚本的人会。Rust 重写到底能不能替代 GNU?这个问题不是靠嘴硬来回答的。作者用 port-anything 工具,把 Ubuntu 26.04 的 uutils 和 GNU 的 coreutils 放在同一个场子里,逐项对比了 27 个工具。这种对比不看速度,看行为相似度。
port-anything 是个检查重写程序是否还像原版的工具,用法是 npx port-anything compare <reference> <candidate>。这次对比的参照是 GNU coreutils 9.12,也就是当前最新的 GNU 版本,候选是 Ubuntu 26.04 LTS 里默认安装的 uutils 0.10.0。来源:GitHub 仓库
作者还额外跑了 uutils 0.12.0(最新发布版)和 uutils main 分支,作为对照。覆盖的 27 个工具包括 cat、tac、tr、paste、seq、sha256sum、expr 这些日常命令,每个工具约 2000 个生成用例,总共约 5.4 万个测试用例。来源:GitHub 仓库
打分的维度是退出状态、stdout、stderr 和改动的文件,每个工具每个 flag 的组合跑三次取均值,最后得到的是“匹配率”。仓库里放了 Dockerfile、run.sh 和 examples.sh,想自己复现整套流程的人可以直接跑。来源:GitHub 仓库
差距集中在边缘案例,核心功能几乎一致
结果很稳。在 27 个工具里,cat、tac、tr、paste、seq、sha256sum、expr 这几个命令在每一种构建下都达到 99% 到 100% 的匹配率。换句话说,如果你平时只碰这些命令,几乎感觉不到替代品和原版有什么区别。来源:GitHub 仓库
作者自己的评价是差距“真实但狭窄”,而且集中在边缘情况,比如无效 UTF-8、依赖 locale 的排序、超过 2^63 的数字、不常见的 flag 组合。也就是说,这些工具在绝大多数输入上表现一致,只有当你把输入逼到极端时才看得到差别。来源:GitHub 仓库
这些差异并不指向核心功能的缺陷,它们基本是边界条件问题。对日常用户来说影响有限。来源:GitHub 仓库 作者也指出了一个反直觉的发现,uutils main 分支其实已经关闭了 head、cut、comm、fmt 这几个最大的差异,可 Ubuntu LTS 装的是 0.10.0,还没拿到这些修复。换句话说,发行版明显落后于上游开发。来源:GitHub 仓库
版本博弈:Ubuntu 的 GNU 9.7 与上游 GNU 9.12、uutils 0.10.0 三方对比
这里有个容易被忽略的细节。Ubuntu 26.04 并没有把 GNU 完全踢走,它仍然附带 GNU coreutils 9.7,以 gnu* 的形式存在。作者顺手把 GNU 9.7 也拿来和 GNU 9.12 比了一下。作者这样安排,是为了把“Ubuntu 的 GNU 太旧”这个变量从“uutils 与 GNU 的差距”里拆出来。来源:GitHub 仓库
结果有意思。GNU 9.7 和 GNU 9.12 的差距,在 head 和 cut 上已经和 uutils 与 GNU 9.12 的差距相当,在 tail 上甚至更大。作者写下的结论是,“Part of 'uutils differs from GNU' is 'GNU 9.7'”。换句话说,一部分看起来像“uutils 的问题”,其实是 Ubuntu 自带的 GNU 太旧了。来源:GitHub 仓库
HN 上这篇帖子的热度是 1 分、0 条评论。来源:Hacker News 我不确定是不是因为这种对比看起来太技术向,但它确实值得想一下:uutils main 已经修复了那几项最大的差距,Ubuntu 0.10.0 没同步;GNU 9.7 的差异又混进对比里,导致 uutils 背了额外的锅。所以真正该追问的,是发行版多久能跟上上游的进度。来源:GitHub 仓库
这个对比给出的信息是,uutils 与 GNU 的差距真实存在,但很窄,日常用基本感觉不到;如果你写脚本恰好踩到无效 UTF-8、大数、locale 排序这些边界,行为就可能不一样。而比 Rust 重写本身更值得担心的是,Ubuntu 的版本滞后会让这些问题显得比实际更大。来源:GitHub 仓库
原文:
How close are Ubuntu 26.04's Rust coreutils to GNU? I diffed 27 utilities · 来源:Hacker News
作者:itfan123 值班编辑 · 发布于 2026年11月7日
版权声明
所有资源都来源于爬虫采集,如有侵权请联系我们,我们将立即删除
itfan123





