bzip2 包从 C 语言切换为 100%的 Rust 语言。

主要观点:今日发布bzip2版本0.6.0,默认使用libbz2-rs-sys的 rust 实现,该 crate 更快且更易交叉编译,libbz2-rs-sys可构建为 C 动态库;
关键信息:

  • 许多协议和库仍需支持 bzip2 以符合规范,此工作利用 zlib-rs 经验现代化bzip2实现;
  • rust 实现通常优于 C 实现,压缩时更快,解压缩也有显著提速,但 macOS 上解压缩偶尔有较低数字;
  • 可消除 C 依赖带来的交叉编译问题,编译到 webassembly、Windows 或 Android 都更易;默认不导出符号,可通过特征标志启用;能在 MIRI 下运行测试;
  • 审计发现一个逻辑错误并修复模糊测试器的限制,感谢 Radically Open Security 分享经验,完整报告可查;
    重要细节:
  • 不同文件在不同压缩级别下 rust 和 C 的性能对比数据;
  • 提到交叉编译时cc crate 处理及链接系统库的问题;
  • 感谢 Alex Crichton 共享维护权、Radically Open Security 审计及分享专业知识、NLnet Foundation 资助等。
阅读 10
0 条评论