Fil-C InvisiCaps:64 位指针的能力安全模型
source: fil-c.org — 2026-07-21
概述
InvisiCaps(Invisible Capabilities)是 Fil-C 项目最新的指针能力模型。经过 PLUT(256 位指针)、SideCaps(128 位原子协议,200 倍慢)、MonoCaps(单增能力,10 倍慢)三代演进,InvisiCaps 实现了 64 位指针、4 倍性能开销、完整的线程安全、有意义的 union 支持以及确定性 use-after-free 检测。其核心思想类似 SoftBound,但消除了其竞态条件逃逸问题,并用 GC 管理能力元数据。
核心要点
- 经过三代能力模型迭代:PLUT to SideCaps to MonoCaps to InvisiCaps,指针从 256 位降至 64 位,性能从 200 倍改善至 4 倍。
- InvisiCaps 类似 SoftBound 的实用化版本,但消除了竞态条件导致的内存安全逃逸。
- 支持 动态类型变更:同一内存位置的类型可在运行时改变,实现了有意义的 union 支持。
- 利用 Fil 的 Unbelievable GC 管理能力元数据,无 GC 无法实现 InvisiCaps。
- 实现了 sizeof(T*) = 8 字节,保持与标准 C/C++ ABI 的完全兼容。
金句
InvisiCaps can be thought of as a practical-to-implement and totally thread-safe variant of SoftBound.
like 0
dislike 0
back to Lobsters