从成功的 Rust 重写中吸取的教训

主要观点:作者分享了将工作代码从 C/C++ 重写为 Rust 的经历,包括哪些方面工作良好,哪些方面存在问题以及结论。
关键信息:

  • 重写以增量方式进行,在持续重写时添加新功能很顺利,新代码更简单易理解,重写带来性能提升,删除大量死代码。
  • 存在的问题如仍在追逐未定义行为(使用unsafe块易引入)、Miri 并非总能工作需用 Valgrind、仍在追踪内存泄漏、交叉编译不总是有效、Cbindgen 不总是工作、不稳定的 ABI、不支持自定义内存分配器、复杂性增加等。
  • 结论是对 Rust 重写总体满意但某些方面失望,语言和工具在处理大量 C FFI 时感觉不成熟,若未来改进可能体验更好,建议首次项目用纯 Rust 远离 FFI 话题,若下次类似工作可能考虑 Zig 。
    重要细节:
  • 代码示例展示了在 Rust 中使用unsafe可能导致的未定义行为及 Miri 的检测。
  • 提及不同语言工具如 Zig 具有的优势,如内置 C 头生成工具等。
  • 强调 Rust 重写比预期花费更多精力,以及对 Rust 开发者社区的感谢等。
阅读 37
0 条评论