用 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

添加評論