不牺牲兼容性的指针能力模型(Fil-C InvisiCaps)
来源:fil-c.org — 2026-07-21
📋 概述
Fil-C 是一个确保 C/C++ 内存安全的编译器项目,其核心难点在于指针安全。文章介绍了最新一代能力模型 InvisiCaps(Invisible Capabilities),它动态追踪每个指针应访问的内存对象,禁止越界访问、释放后使用、写入只读数据以及破坏能力元数据本身等行为。InvisiCaps 经历了 PLUT 和 SideCaps 两代前身的演进:PLUT 需要 256 位指针且不支持联合体;SideCaps 解决了线程安全问题但性能极差(慢 200 倍)。InvisiCaps 在保持 sizeof(T*) 为 8 字节的前提下,兼顾了兼容性和可接受的性能开销。
🔑 核心要点
Fil-C 通过能力模型确保 C/C++ 的内存安全,最难的部分是指针安全
InvisiCaps 动态追踪每个指针的 合法内存范围 ,禁止越界和释放后使用
前代 PLUT 模型需要 256 位指针 (4 个 64 位),不支持联合体且非线程安全
SideCaps 用巧妙的 128 位原子操作 编码 256 位数据解决线程安全,但慢 200 倍
InvisiCaps 保持 sizeof(T*) 为 8 字节 ,同时追求狂热的兼容性和合理的性能
💡 金句
Fil-C has now gone through multiple capability systems; InvisiCaps are just the latest. Achieving memory safety means prohibiting accesses that are out of bounds, to freed objects, or to readonly data.
👍 0
❤️ 点赞
👎 0
沉底
← 返回 Lobsters 首页