《Rust 生态系统有多安全?使用 cargo-deny 分析 crates.io》
本文旨在利用强大的工具 cargo-deny 对 crates.io 包进行全面审核,从而分析 Rust 生态系统的整体质量 。
该分析基于一个生成自 crates.io-index 在 e12a7dd 提交上的快照 数据集 ,日期为 2025 年 12 月 8 日 。文章集中于最关键的指标: a:vulnerability 、 a:unsound 、 a:notice 、 a:unmaintained 和 a:yanked。
这里列举 vulnerability 的统计结果:
- 含义: 在依赖项或 crate 本身中已发现特定的安全漏洞 (CVE)。
- 背景: 这是最关键的检查。它表明该 crate 版本包含可能被利用的代码(例如,通过内存损坏或拒绝服务攻击)。用户通常需要立即升级到已修复的版本。
| 类别 | 百分比 | Count |
|---|---|---|
| Total | — | 186 287 |
| 🟢 Passed | 76.271% |
142 083 |
| 🔴 Failed | 23.729% |
44 204 |
注:Failed count 表示
vulnerability至少出现过一次的 crate。
按既定受欢迎程度群体划分的失败率分布。

注:Failure rate 表示特定组内未通过检查的箱子所占的百分比。
各个受欢迎程度群体的平均失败次数:

注:Average failure number 表示特定组
vulnerability故障的平均值。
除了原始数字之外,文章进行了统计上的因果推断检验,计算了 Pearson 、Spearman 、Kendall 系数,所有检验的 P 值均为 0.0 ,这证实了这种关系具有显著的统计学意义,表明这种模式并非随机巧合,从而揭示了项目安全方面清晰的因果链:依赖关系越多 → 复杂性越高 → 脆弱性风险越大。
阅读:https://mr-leshiy-blog.web.app/blog/crates_io_analysis/
Rust 新特性:编译时反射 std::mem::type_info
最近 Rust 标准库添加了 type_info 模块,用于编译时反射。示例:
#![feature(type_info)]
use std::mem::type_info::{Type, TypeKind};
fn assert_tuple_arity<T: 'static, const N: usize>() {
const {
match &Type::of::<T>().kind {
TypeKind::Tuple(tup) => {
assert!(tup.fields.len() == N);
}
_ => unreachable!(),
}
}
}
fn main() {
assert_tuple_arity::<(), 0>();
assert_tuple_arity::<(u8,), 1>();
assert_tuple_arity::<(u8, u8), 2>();
const {
match &Type::of::<(u8, u8)>().kind {
TypeKind::Tuple(tup) => {
let [a, b] = tup.fields else { unreachable!() };
assert!(a.offset == 0);
assert!(b.offset == 1);
match (&a.ty.info().kind, &b.ty.info().kind) {
(TypeKind::Leaf, TypeKind::Leaf) => {}
_ => unreachable!(),
}
}
_ => unreachable!(),
}
}
}
讨论:https://www.reddit.com/r/rust/comments/1q9o6jm/brandnew_nightly_experimental_feature_compiletime/
Rapier 物理引擎年度回顾
2025 年的工作重点是性能优化,特别是在 Web 端(WASM/JS):
- 性能提升:最新的 NPM 包比 2024 年的版本快 2x 到 5x,原生版本也有显著提升。
- 技术改进:
- 引入了**新的 BVH(层次包围盒)**实现,支持高效的自动重平衡和 SIMD 加速。
- 新增了稀疏体素碰撞体(Sparse Voxel Collider),Rapier 是首个显式支持体素的通用刚体引擎。
- 实现了持久岛屿(Persistent Islands)和流形简化(Manifold Reduction),减少了每帧的计算开销。
- 优化了 3D 摩擦力模型,使高接触场景(如方块堆叠)提速 25%。
重大架构变动:迁移至 glam
- 线性代数库切换:Rapier 和 Parry 的 API 及内部实现从
nalgebra迁移到了glam。 - 动机:
glam的 API 更简单,学习曲线更低,且与rust-gpu编译器后端有更好的兼容性。 - 影响:Release 模式性能基本持平,但 Debug 模式提速约 20%。
- 新库
glamx:Dimforge 推出了glamx库,补齐了glam缺失的位姿(Pose)、2D 旋转等几何运算功能,并提供与nalgebra的转换接口。
深入探索了多种跨平台 GPU 计算方案(WGSL, Slang, CubeCL, rust-gpu):
- wgrapier:基于 WGSL 实现了可在浏览器运行的 GPU 物理引擎。
- wgsparkl:基于 WGSL 的 MPM(物质点法)模拟库。
- 最终选择:团队决定未来定位于
rust-gpu,因为它允许直接编写no-std的 Rust 代码并在 GPU 上运行,能最大程度实现 CPU 和 GPU 版本的代码复用。
2026 年目标:
- 机器人学(Robotics)支持:提升多体关节(Multibody joints)的稳定性,引入更精确的约束求解器(参考 Mujoco),并改进 URDF 导入。
- 基于
rust-gpu的 GPU 物理:利用rust-gpu开发高性能、跨平台的刚体物理模拟。 - 复兴
kiss3d:重启对kiss3d图形引擎的维护,使其成为一个简单易用的 2D/3D 渲染工具。
2025 年是 Dimforge 夯实基础、全面转向 glam 并向 GPU 物理迈进的关键一年。2026 年,他们将重点攻克机器人仿真和高性能 GPU 计算。
阅读:https://dimforge.com/blog/2025/01/09/the-year-2025-in-dimforge/
--
From 日报小组 苦瓜小仔
社区学习交流平台订阅:
评论区
写评论还没有评论