Fil - C 与 Rust 谁更能保障内存安全?对比权衡各有优劣

发布时间:2026/7/26 17:29:53

Fil - C 与 Rust 谁更能保障内存安全?对比权衡各有优劣 一切皆关乎内存安全看到文章标题很多人会联想到“Rust 开发者”因为他们热衷于追求内存安全。部分原因可能是“语言之争”心态但希望多数人是真心想让软件更安全。不过这篇文章并非关于 Rust 开发者。过去的内存安全状况此前非垃圾回收GC的系统编程语言如 C、C、Zig 和 Rust 中内存安全相关讨论基础较简单。Rust 禁止编译可能引发内存安全问题的程序设有 unsafe 机制C 等语言将确保内存安全的任务交给程序员。不同语言提供的帮助程度有别C 有资源获取即初始化RAII和智能指针Zig 有 defer 机制但大多无法阻止违反内存访问规则的行为。Fil - C 带来新变化如今有了让 C、C 及未来可能的 Zig 代码实现内存安全的新方法Fil - C。用 Fil - C 编译的 C 和 C 代码出现无效内存访问时会崩溃它通过结合 GC 和 InvisiCaps 实现这一点。Zig 的作者宣布了受 Fil - C 启发的新编译模式。Fil - C 是个有趣的项目希望有流行的 C 和 C 项目能提供 Fil - C 编译版本。两种语言的争议理想情况下关心内存安全的 Rust 与 C/C/Zig 程序员都会为有更多减少内存安全漏洞的方法而高兴。但近期很多对 Rust 的批评不真诚Fil - C 作者不喜欢 Rust称其内存不安全Zig 作者 Andrew Kelley 似乎也持类似立场。在相关讨论中常出现“如果 Rust 开发者真的关心内存安全就会推广 Fil - C 并放弃 Rust”的说法。这类观点无视现实像狂热和类似邪教的行为。Fil - C 的权衡之处若 Fil - C 是无代价的替代方案或许会部分认同上述观点但它存在权衡与非 Fil - C 编译的程序有应用二进制接口ABI不兼容问题某些情况下可能慢几倍还引入了 GC。对一些程序而言这些并非致命问题但很多流行项目中GC 和 ABI 不兼容是大问题它们不会采用 Fil - C 技术无法使用 Fil - C 的程序往往适合用 Rust。Rust 的安全性有人认为 Rust 不安全因为有 unsafe。但目前关于 Rust 在实践中安全性的数据不多据了解Rust 软件中可利用的内存安全漏洞不多。如安卓系统中有超过 500 万行的 Rust 代码只发现一个潜在内存安全漏洞估计 Rust 的漏洞密度为每百万行代码MLOC0.2 个漏洞而 C 和 C 每 MLOC 约有 1000 个内存安全漏洞Rust 代码漏洞密度低几个数量级。技术选择与建议若能选择一种技术能在 100% 的程序中预防 99.9% 的问题另一种能在 90% 的程序中预防 100% 的问题虽不清楚实际数据但不必二选一。希望能用 C/C/Zig 编写、能接受权衡的项目提供 Fil - C 编译的二进制文件无法接受的软件可用能完全或大部分消除内存安全问题风险的语言编写。即便能用 Go 或 Fil - C 这样的 GC 语言使用 Rust 也没问题。内存安全绝对主义者的观点令人费解不狂热解决问题的人会考虑权衡因素。最后如果有人连 Rust 每百万行代码 0.2 个漏洞都无法接受希望他们更严厉地批评随意编译 C/C 和非 Fil 版 Zig 代码的人。

相关新闻