Rust uutils 项目于 8 月 31 日(当地时间)发布了“Rust Coreutils 0.11.0”。
Rust Coreutils 是一个开源项目,它用 Rust 重新实现了 GNU Coreutils 中包含的基本命令。它在保持与 GNU Coreutils 兼容性的同时,提高了跨平台兼容性、安全性和性能。
Rust Coreutils 0.11.0 引入了一项诊断功能,可以像编译器一样指出错误位置。它还包含基于性能分析的优化、改进的 GNU 兼容性,以及针对符号链接和 TOCTOU 竞争条件的增强安全性。
Rust Coreutils 0.11.0 的主要更新如下:
○ 新增诊断功能,使用光标指示错误位置
○ 支持 28 个命令,包括 test、chmod、tr、sort、cut 等
○ 根据错误类型显示正确的语法和建议的修复方案
○ 现在可以使用环境变量“UUTILS_DIAG”控制诊断信息的显示
○ Linux、macOS 和 Windows 的发布版本中已启用 PGO 功能
○ PGO 功能使处理性能提升高达 31%
○ GNU 测试套件中 653 个测试成功通过
○ 测试执行期间未出现任何错误
○ 添加了多个 GNU 兼容性选项和行为
○ 增强了文件操作(例如 cp、mv、rm 和 chmod)的安全性
○ 修复了多个 panic、挂起和整数溢出问题
○ 改进了对 Windows 和 WASI等的支持
传统的 Unix 命令在发生错误时会在标准错误输出中显示一条简短的错误信息。Rust Coreutils 现在引入了一项诊断功能,它会重新显示输入参数,并用插入符高亮显示有问题的字符或字符范围。此外,还会显示可用的语法和建议的更正。该功能使用 Rust 诊断显示库“ariadne”进行渲染。默认情况下,仅当标准错误输出连接到终端时才会启用此功能。在脚本、管道和测试环境中,仍然会像以前一样输出单行错误信息,退出代码保持不变。因此,该功能与现有处理错误信息的脚本保持兼容。
未来,uutils 的 findutils 和 sed 也计划引入新的诊断功能。
环境变量“UUTILS_DIAG”可以设置为“always”、“never”或“auto”。“always”即使在输出到文件或管道时也会显示详细的诊断信息,而“never”即使在终端上也会使用传统的消息格式。
“Rust Coreutils 0.11.0”可从GitHub获取。
本篇文章为 @ 场长 创作并授权 21CTO 发布,未经许可,请勿转载。
内容授权事宜请您联系 webmaster@21cto.com或关注 21CTO 微信公众号。
该文观点仅代表作者本人,21CTO 平台仅提供信息存储空间服务。
请扫描二维码,使用微信支付哦。