正在打开每日关注
正在打开每日关注
Bun 因 Zig 与 GC/手动内存交织带来的稳定性风险,决定借 Rust 所有权系统降低崩溃与泄漏。
Rewriting Bun in Rust https://t.co/Rl8bcaxBFc
是什么 这不是 Rust 教程,而是 Bun 对底层实现路线的一次重新评估。文章从 Bun 的超大职责范围和 Zig 带来的早期开发效率讲起,再以大量 v1.3.14 的 use-after-free、越界、双重释放和泄漏案例,说明问题已经从偶发缺陷上升为所有权与生命周期管理的系统性成本。
核心论点 关键矛盾在于 JavaScriptCore/V8 的垃圾回收、异常约束,与 Zig/C 风格的显式释放、defer 及手动内存交织;回调重入、线程池并发和 ArrayBuffer 变化会放大失误。ASAN、24/7 Fuzzilli、ReleaseSafe 和泄漏测试能尽早发现问题,却不能替团队持续正确地推理每个指针。
迁移价值 Rust 的所有权、借用、Drop 和类型化生命周期,把部分规范从代码审查和风格指南前移到编译器;对同时承担运行时、打包器、包管理器和 Node 兼容层的 Bun 而言,目标是减少重复性内存事故,提升长期维护的可预测性。
边界与风险 这并非证明 Rust 自动消除 bug,也不是否定 Zig;迁移会带来重写成本、FFI 与 GC 边界复杂度,以及性能和兼容性回归风险。最值得借鉴的是按缺陷类型反推语言约束,并把 sanitizer、模糊测试和端到端测试纳入持续反馈闭环。