首页 时政热点 科技头条 智能AI 安全攻防 数码硬件 开发者生态 汽车 游戏 社会热点 开源推荐 医疗健康 归档 标签 关于

我想要外部“fil-C”

2026-08-14 1 阅读 约4分钟阅读 ingve
分享:
字号:
Rust 的 C FFI 使我们能够访问数十年有用的软件,但讨价还价是倒退的。我们使用 Rust 来证明编译时的内存安全。然后,我们跨越了不安全的边界,并信任 C 库会遵守两种语言都无法强制执行的约定。遗留代码仍然是廉价的路径,而重写它是昂贵的路径。 Fil-C 提供更有趣的优惠。它使用功能、运行时检查和并发垃圾收集器重新编译 C 和 C++。内存安全违规会引起恐慌,而不是成为漏洞。现有软件通常需要很少或根本不需要更改源代码,但它可以保证运行时的安全性。我想要一个使用 Fil-C ABI 的 Rust FFI。第一个版本可以故意缩小:标量值、复制的字符串和切片以及不透明的句柄。它将生成安全的 Rust 包装器,使用 Fil-C 编译完整的 C 依赖关系图,并且不提供返回到普通不安全 C 的逃逸舱口。一旦桥可以为 Fil-C 提供 Rust 可以可靠撤销的功能,共享内存可能会在稍后出现。这不是 bindgen 的新选项。 Fil-C 与 C 源代码兼容,但故意不与 ABI 兼容,普通 Rust extern“C” 讲 ABI Fil-C 称为 Yolo-C。构建桥梁意味着教 Rust、Fil-C 或一对生成的存根如何在不失去 Fil-C 保证的情况下交换值。如果这很容易,它就已经存在了。该堆栈的一个重要部分已经初具规模。 filnix 将 Fil-C 封装为 Nix 交叉编译平台,并具有超过 100 个 nixpkgs 软件包的端口。将 Fil-C 视为一个平台意味着 Nix 会为 Fil-C ABI 重建传递依赖闭包,而不是意外地将普通 C 链接到其中。 filnix 还不是 Rust 桥梁,但它提供了可复制的工具链、包宇宙和可以构建的测试平台。 Zig 正在从另一个方向解决同样的问题。 Andrew Kelley 受 Fil-C 启发,提出了可选的 fil ABI。它将是 Zig 编译器和标准库中的独立实现,旨在编译具有运行时内存安全性的 Zig 程序及其整个 C 和 C++ 依赖树。这距离 Rust 桥需要进入的世界非常近。但结果会给我们带来完全正确的激励。我们可以使用 Rust 来实现编译时安全,然后为使用 C 付出性能损失。保留遗留库,它仍然是内存安全的,但每个指针操作都会被检查,并且它的内存会参与垃圾回收。用 Rust 重写热路径,这些检查就变成静态的,所以税收就消失了。 C 成为安全的兼容路径,而不是永久的快速路径。这里的“100% 安全”意味着在整个受支持的边界上内存安全,不存在逻辑错误、死锁或不良 API。这个边界是最困难的部分。 Fil-C 目前要求整个程序及其依赖项使用其 ABI 。该项目还将与普通 C 的互操作性视为非目标。 Rust 桥必须保留整个世界的保证,而不是悄悄地在它上面打一个 Yolo 形的洞。我想要 extern "fil-c" :Rust 在快速路径上,旧 C 在安全路径上,以及完成迁移的性能原因。我还希望看到跨生态系统的协作,而不是几个几乎兼容的孤岛。 Fil-C具有能力模型和工作运行时间。 Rust 具有编译时安全性。 Zig 正在探索受 Fil-C 启发的 ABI。 Nix 和 filnix 可以重建和测试完整的依赖关系图。这个问题值得所有四个社区在同一个房间里集中讨论。因此,邀请函如下:加入我们明年在兰萨罗特岛举行的 OceanSprint 大会,共同建设它。建造 filnix 的 Mikael Brockman 已经接受了。还有谁加入我们?查看讨论主题。
这篇文章对您有帮助吗?

订阅66必读

每日精选科技资讯,直达你的邮箱