< 返回版块

苦瓜小仔 发表于 2025-07-20 16:50

Tags:日报

cargo-auditable:支持原生 SBOM(软件物料清单)功能

cargo-auditable 可将依赖项列表嵌入编译后的二进制文件中,从而使用 cargo audit、osv-scanner 或 trivy 等工具检查二进制文件是否存在已知漏洞。许多 Linux 发行版(包括 Alpine)已经在使用 cargo-auditable 构建所有 Rust 包!

版本 0.7 增加了对 Cargo 原生 SBOM 前置版本的支持,这使得我们可以嵌入更准确的依赖项列表,而不仅仅是使用 cargo 元数据。使用这一数据源代替 cargo 元数据还消除了在 Debian 中采用的技术障碍。目前,这一 Cargo 功能仅在 nightly 版本中可用,具体使用方法可以参考 这里。在 cargo-auditable 中使用它有助于推动其稳定化。

此次发布还引入了格式修订的概念,以便读取 cargo-auditable 嵌入数据的工具能够区分所使用的是哪种数据源(cargo 元数据或原生 SBOM)。格式修订完全向后兼容,不了解它们的工具也可以像往常一样读取数据。

我很高兴看到这个工具已经被广泛采用,希望此次发布能让它更加通用!

仓库:https://github.com/rust-secure-code/cargo-auditable

dep_graph_rs: 可视化 Rust crate 内部依赖关系

它通过解析源代码中的 use crate 语句,生成有向依赖图,输出为 DOT 格式,可使用 Graphviz 等工具进行可视化。该工具支持按文件或模块分组显示依赖关系,还可以通过源、目标或具体项(如函数或结构体)过滤图。

它还支持按根模块聚类节点,使图更易读。使用方法简单,通过 cargo install dep_graph_rs 安装后,从 crate 根目录运行即可生成依赖图。

不过,它目前还不支持处理 glob 依赖(*),且未过滤的大型图可能会对计算机和大脑造成负担。

阅读:https://flexineering.com/posts/dep-graph-rs/

仓库:https://github.com/PSeitz/dep_graph_rs

文章:绕过 specialization,并爱上函数指针

这篇文章讲述了作者在开发 Rust 中的 FAT 驱动程序时,如何绕过 Rust 的 specialization 特性(一种允许更具体实现覆盖通用实现的特性)。由于 specialization 在 Rust 中尚未稳定且存在生命周期相关问题,作者尝试了多种方法来解决这一问题:

  1. 尝试使用 spez crate:该 crate 声称在稳定版 Rust 中实现类似 specialization 的功能,但作者发现它在泛型函数中无效,因此放弃。
  2. 使用泛型枚举和 PhantomData:作者尝试通过泛型枚举来区分只读和读写存储设备,但很快遇到了生命周期问题,最终放弃。
  3. 使用函数指针:最终,作者通过函数指针解决了问题。他为 FileSystem 结构体添加了一个 Option<SyncFn> 字段,其中 SyncFn 是一个函数指针类型。只读文件系统构造函数将该字段设置为 None,而读写文件系统构造函数则设置为一个同步函数的指针。在需要“特化”的函数中,通过匹配该字段来决定是否调用同步函数。

虽然这种方法解决了作者的问题,但它引入了额外的性能和内存开销,并且实现起来较为繁琐。作者建议,一旦 specialization 特性稳定,应优先使用它,因为它会比当前的解决方案更高效、更简洁。

阅读:https://oakchris1955.eu/posts/bypassing_specialization/

Furnace:基于 Burn 框架构建的高性能机器学习推理服务器

Furnace 是一个用 Rust 和 Burn 框架构建的高性能机器学习推理服务器,专为零 Python 依赖的快速推理而设计。

它支持 ONNX 模型,包括 ResNet-18 图像分类模型,具有以下特点:

  • 纯 Rust 实现:2.3MB 的二进制文件,性能卓越,内存占用极小。
  • 快速推理:ResNet-18 模型的推理时间约为 4ms。
  • 生产就绪:支持优雅关闭、全面错误处理和 CORS 支持。
  • 单二进制文件:无外部依赖。
  • HTTP API:提供 RESTful 接口,支持单图和批量图像推理。

Furnace 还支持自定义 ONNX 模型,用户可以轻松扩展支持更多模型架构。

仓库:https://github.com/Gilfeather/furnace

GCCRS 6 月 进展

2025 年 6 月,GCC 的替代 Rust 编译器项目 (GCCRS)合并了 61 个拉取请求,完成了名字解析 2.0 算法的合并,取代了旧版本,这是历时一年半的工作成果,旨在更好地处理 core 中复杂的导入和导出结构。

此外,项目还完成了 Git 流程的重构,改进了更新分支和上游推送的流程。

未来几个月的里程碑包括支持内联汇编、try 块、while-let 循环等特性。

两位 GSoC 学生的进展顺利,分别在代码生成和后端编译方面做出了贡献。项目还计划为 GCC 15.2 发布修复补丁。

阅读:https://rust-gcc.github.io/2025/07/17/2025-06-monthly-report.html

--

From 日报小组 苦瓜小仔

社区学习交流平台订阅:

评论区

写评论

还没有评论

1 共 0 条评论, 1 页