基於 GNU Coreutils 套件的 Rust 開發專案 uutils coreutils 0.11.0 (Rust Coreutils) 已正式發布。 coreutils 包含超過 100 個實用工具,例如 sort、cat、chmod、chown、chroot、cp、date、dd、echo、hostname、id、ln 和 ls。該專案的目標是創建一個跨平台的 Coreutils 替代方案,使其能夠在包括以下平台在內的多個平台上運行: Windows氧化還原和紫紅色。
此版本預設啟用 Rust Coreutils。 Ubuntu 25.10,部分在 Ubuntu 4月26日。 Rust Coreutils 也被用於 AerynOS(Serpent OS)和 Apertis(由 Collabora 開發)發行版。與 GNU Coreutils 不同,Rust 實作採用的是寬鬆的 MIT 許可證,而非版權自由的 GPL 授權。此外,同一開發團隊也正在開發 util-linux、diffutils、findutils、procps 和 acl 工具套件以及 sed 和 login 程式的 Rust 版本。
在新版的 Rust Coreutils 中:
- 與 GNU Coreutils 基準測試套件的相容率為 95.33%(低於先前的 94.44%)。成功通過 653 項測試,比上一版本(645 項)多 8 項。失敗的測試有 22 項(低於之前的 29 項),跳過的測試有 15 項(低於之前的 15 項)。
- 我們整合了一個基於 ariadne 函式庫的全新診斷引擎。它會在終端機運行實用程式時顯示視覺化錯誤報告,並高亮顯示導致問題的命令列參數。以下實用程式已啟用錯誤視覺化功能:chmod、mkdir、mkfifo、mknod、install、tr、expr、sort、numfmt、cut、env、head、tail、truncate、split、shred、stdbuf、od、seq、dd、stat、join、csplit、ls、df 和 du。建議使用 UUTILS_DIAG 環境變數來停用診斷報告。

- 在發布版本建置期間啟用效能分析引導優化 (PGO),該功能會根據程式執行行為的分析結果產生更優化的程式碼。開發人員估計,對於某些操作,效能提升最高可達 31%。
- 我們對 cp(速度提升 32.93%)、join(速度比 GNU 快 2.5 倍,透過停用不必要的區域設定比較實現)、od、ptx(速度提升 4%)、nl、tail、expand、unexpand、numfmt 和 sort 工具進行了效能最佳化。之前明顯慢於 GNU Coreutils 的操作現在被視為 bug。
- 修正了與 GNU Coreutils 在 pr、numfmt、join、id、mkdir、fold、sort、stat、od 和 date 工具的行為上的一些差異。
- 實作了 GNU Coreutils 特有的選項:「uname -A」、「uname --all-labeled」、「cut -F」、「cut --whitespace-delimited」、「pr --columns」、「pr --join-lines」、「pr -f」。
- mv、cp、rm、chmod 和 stdbuf 工具已加強,以防止因競爭條件而導致的漏洞。此類漏洞可能允許在資訊驗證完畢後、操作執行前修改資料。例如,在驗證完成和操作開始之間,檔案可能被替換為符號連結。當在以 root 權限執行的系統腳本中使用 cp、chmod 和 mv 工具時,此類漏洞可能允許複製或覆寫任意檔案。
- 已開展工作以消除 split、yes、sort、stat、csplit、ls、od、nl、pr、csplit、dd、touch、tail、tac 和 who 等實用程式中的崩潰問題。
- 實作了 kill 和 uptime 實用程式的各種變體 Windows.
- 棄用了 byteorder、same-file、filetime、winapi-util、file_diff、mockstream、binary-heap-plus、compare、arrayref(最近遭到破壞)、exacl 和 dns-lookup 套件,轉而使用 std、rustix 和 windows-sys 庫中的函數。
- ls 和 comm 實用程式現在支援「排序規則」區域設定屬性,該屬性允許進行比較時考慮字元的含義(例如,比較期間可以忽略重音符號)。
- 改進了 nl 和 cut 工具對多字節字元的處理。
此外,Canonical 還發布了兩個符合 Dev Container 規範的 Rust 開發實驗性容器鏡像。第一個鏡像包含 Rust 1.93、Cargo、rust-analyzer、Clippy、Rustfmt、Miri(用於偵測未定義行為的解釋器)、cargo-auditable(建置稽核工具)、GCC、Clang、LLD、pkg-config、Just、Git、Vim、Helix、Ripgrep、Hyperx、Ripgre、Just、Git、Vim、Helix、Ripgrep、Hyperfine。第二個鏡像還包含一些開發包。 Ubuntu:git-buildpackage,sbuild, ubuntu-dev-tools、devscripts、dh-make、dh-cargo、autopkgtest、cargo-vendor-filterer。
來源: opennet.ru

