胖兰德:生成一个随机数需要多少行代码?

主要观点:

  • 近期写了关于 Rust 中依赖的文章,Rust 社区内外反馈不同,社区在 Reddit 和 Lobsters 上不屑一顾,而一些人表示支持。
  • 以 rand crate 为例,其值与依赖比不合理,使用广泛但依赖较多,如升级到 0.9 版本后依赖树变大。
  • 探讨了 rand crate 的各种依赖,包括平台依赖(如 Linux、Mac 用 libc,Windows 用 Microsoft crate 等)、依赖链(涉及多个维护者群体)、代码大小(约 62MB,含多个 crate )、编译时间(在 M1 Max 上 4.3 秒,依赖间相互阻塞)。
  • Rust 社区对 rand 的现状不太关心,认为使用 less unsafe 就足够,也有人认为这反映 Rust 标准库不够大,应将一些功能纳入标准库,或让外部 crate 更注重依赖和可审计性。
  • 后续 rand 有改进计划,如在核心库中移除 zerocopy ,用 stripped down 版本的 chacha20 替换 ppv-lite86 ,在 Rust 1.71 及以后编译时 windows-target 可变为 no-op 。

关键信息:

  • 关于 Rust 依赖的文章链接
  • rand crate 相关信息,如不同版本的变化、依赖情况等
  • 各依赖的维护者群体
  • 代码大小、编译时间等具体数据
  • rand 的改进计划

重要细节:

  • 0.9 版本的 rand crate 打破了与 0.8 版本的向后兼容性。
  • 不同平台获取系统 RNG 的方式及相关 crate 。
  • 审计依赖链时涉及的 8 个维护者群体。
  • 各 crate 的代码行数,如 ppv-lite86 3587 行、proc-macro2 等组合 49114 行等。
  • 编译时间增长及依赖阻塞情况。
  • rand 在 Reddit 上的主要反馈及后续改进动作等。
阅读 4
0 条评论