posixutils-rs 0.2.1 项目已经发布,旨在用 Rust 语言开发 POSIX 标准中提到的命令行实用程序集合并满足其要求(cp、mv、awk、make、vi、find、排序、wc、xargs、sh、m4、sed 等)。在开发过程中,只要有可能,就会使用现有的 crate 包。 posixutils-rs 代码是根据 MIT 许可证分发的。
该项目主要致力于实现 POSIX.2024 规范的要求,并不打算提供与 GNU 实用程序的兼容性,作者认为 GNU 实用程序的功能过于臃肿。然而,posixutils-rs 计划实现现有脚本中最流行的高级 GNU 实用程序选项。
与 uutils 项目(在 Rust 中开发 GNU Coreutils 实现)的区别包括更广泛的实用程序范围,其中包括创建 vi、awk、bc、m4、cron 和 c99 编译器等 POSIX 系统组件,以及简约的方法,这意味着仅提供 POSIX 规范中定义的最低要求的选项集,或者如果不提供这些选项就会出现问题。 posixutils-rs 套件中的程序最初作为可在其他项目中使用的独立代码提供。
目前,该项目开发的 55 个实用程序符合 POSIX 并处于测试覆盖阶段,22 个实用程序提供了必要的功能(但测试覆盖尚未实现),20 个处于草案阶段,44 个实用程序尚未实施。尚未开始。已实现功能的实用程序包括:awk、basename、bc、cp、cut、chown、date、diff、file、find、grep、ls、nice、ps、sort、strings、tail、tr、tty、wc、uniq。在实用程序中,尚未开始的工作: crontab、c17、cflow、ctags、gettext、ed、ex、inov、lex、locale、mailx、make、patch、pax、sed、sh、sccs、yacc、uucp、vi 。
新版本中的更改包括添加了 awk、m4、ps、realpath、join、time、fuser 和 gencat 实用程序的实现,以及对在基于 musl C 库的环境中工作的初步支持以及提供了 ftw用于受状态保护的目录树遍历竞赛的库。
此外,我们还可以注意到 rav1d 项目的公告,该项目正在开发一个用 Rust 语言编写的 AV1 视频编码格式的高性能解码器。将高性能特点的dav1d库的解码器代码移植到Rust上进行开发。准备好的端口与 dav1d 库 API 完全兼容。选择移植现有库而不是编写我们自己的版本是因为希望使用已经经过验证和测试的解码器作为基础,以避免可能的兼容性问题并考虑使用 AV1 格式的所有复杂性。
在目前的形式下,rav1d的准备实现在性能上落后于dav6d 1%,但在未来,在优化代码后,计划在性能上实现对等。为了实现高性能,使用了一种方法,其中解码原始值的基本功能以不安全块的形式在汇编程序中实现(使用来自 dav1d 的汇编代码),在使用流解析检查后接收数据。 Rust编写的函数(过去识别视频解码器漏洞的经验表明问题主要出现在高级格式解析代码中,而不是低级数据操作中)。
来源: opennet.ru
