内容提要
文章讨论了Rust中的rand库及其庞大的依赖关系,指出虽然rand库本身表现良好,但其复杂的依赖和安全性问题引发了开发者的关注。作者分析了依赖的代码量和编译时间,质疑生成随机数是否真的需要如此多的依赖。
关键要点
-
文章讨论了Rust中的rand库及其庞大的依赖关系。
-
rand库表现良好,但其复杂的依赖和安全性问题引发了开发者的关注。
-
作者分析了依赖的代码量和编译时间,质疑生成随机数是否真的需要如此多的依赖。
-
rand库的依赖树在过去九个月中变得更加庞大。
-
当前版本的rand库在Linux和Mac上使用libc,而在Windows上使用较重的Microsoft库。
-
存在一个名为fastrand的库,它没有依赖关系,可以从标准库获取种子。
-
对依赖链的审计显示,维护者分为八个不同的组。
-
去除测试后,vendored的代码占用62MB磁盘空间,包含209,150行代码。
-
编译时间在高端M1 Max上为4.3秒,依赖关系之间的阻塞导致编译时间增加。
-
作者质疑是否真的需要如此多的依赖来生成随机数。
延伸解读
依赖关系的复杂性
文章指出,Rust中的rand库依赖关系庞大,尤其是在生成随机数时。这种复杂性可能导致开发者在使用时面临安全性和性能的挑战。开发者在选择库时应考虑其依赖的数量和质量,以避免潜在的安全隐患。
编译时间的影响
rand库的编译时间在高端设备上达到了4.3秒,显著高于之前的2秒。这表明,随着依赖关系的增加,编译效率可能受到影响。开发者在使用此库时需权衡编译时间与功能需求,避免不必要的性能损失。
替代方案的探索
文章提到的fastrand库是一个没有依赖关系的替代方案,能够从标准库获取种子。对于需要生成随机数的项目,开发者可以考虑使用更轻量的库,以减少依赖和提高安全性。
延伸问答
Rust中的rand库有什么问题?
rand库的复杂依赖和安全性问题引发了开发者的关注。
生成随机数的依赖关系有多复杂?
当前rand库的依赖树变得非常庞大,包含多个层级的依赖。
rand库的编译时间是多少?
在高端M1 Max上,rand库的编译时间为4.3秒。
是否有更轻量的随机数生成库?
有一个名为fastrand的库,它没有依赖关系,可以从标准库获取种子。
rand库的代码量有多少?
去除测试后,vendored的代码占用62MB,包含209,150行代码。
rand库的依赖树在过去一年中有什么变化?
rand库的依赖树在过去九个月中变得更加庞大。