用 Rust 重写的 GNU Coreutils 更新

发布了 uutils coreutils 0.0.12 工具包,其中正在开发用 Rust 语言重写的 GNU Coreutils 包的模拟。 Coreutils 附带了一百多个实用程序,包括 sort、cat、chmod、chown、chroot、cp、date、dd、echo、hostname、id、ln 和 ls。 与此同时,uutils findutils 0.3.0 软件包发布了,其中包含 GNU Findutils 套件(find、locate、updatedb 和 xargs)实用程序的 Rust 实现。

创建项目并使用 Rust 语言的原因是希望创建 Coreutils 和 Findutils 的跨平台替代实现,它也可以在 Windows、Redox 和 Fuchsia 平台上工作。 与 uutils 的另一个重要区别是它是根据 MIT 许可而不是 GPL copyleft 许可分发的。

目前,88 个实用程序的实现完全与 GNU Coreutils 相当。 在 18 个实用程序中发现了个别缺陷,包括 cp、dd、date、df、install、ls、more、sort、split、tail 和 test。 只有 stty 实用程序未实现。 通过 GNU Coreutils 项目的测试套件时,成功完成了 214 项测试,但 Rust 类比尚未通过 313 项测试。 与此同时,项目开发的强度显着增加——每月从 400-470 个开发人员添加 20-50 个补丁,而不是一年前从 30-60 个开发人员添加 3-8 个。

用 Rust 重写的 GNU Coreutils 更新

在最近的成就中,性能优化是值得注意的——在当前状态下,许多实用程序,如 head 和 cut,在性能方面明显优于 GNU Coreutils 的选项。 测试套件覆盖率从所有代码的 55% 增加到 75%(80% 是一个足够的目标)。 重构了代码以简化维护,例如,统一了不同程序中的错误处理,将处理访问权限的代码合并到 chgrp 和 chown 中。 添加了许多更改以提高与 GNU Coreutils 的兼容性。

未来的计划包括实施 stty 实用程序,继续努力提高与 GNU Coreutils 的兼容性,添加优化以减小可执行文件的大小,并继续尝试使用 uutils 代替 GNU Coreutils 和 GNU Findutils(主要应用程序之一) uutils 的开发人员)在 Debian 和 Ubuntu 中。之前在一个项目上工作,使用 Clang 编译器提供 Debian GNU/Linux 构建)。 此外,为 macOS 准备 uutils-coreutils 包,在 NixOS 上用 uutils coreutils 替换 GNU Coreutils 的实验,在 Apertis 发行版中默认使用 uutils coreutils 的意图,以及为 Redox OS 调整 uutils 集.

来源: opennet.ru

添加评论