A Note on Fil-C
6 months ago
- #memory-safety
- #compiler
- #performance
- Fil-C是Filip Pizlo主导的项目,通过为clang编译器添加内存安全检测机制(包括空间安全性检测如越界访问)和并发垃圾回收器(解决释放后使用等时序安全问题)来实现内存安全。
- 该项目具有高度代码兼容性,仅需适度修改即可支持完整的Linux发行版用户态环境。
- 性能损耗预计在1-4倍时钟周期之间,对于多数工作负载(尤其是I/O密集型场景)属于可接受范围。
- Fil-C融合了学术研究与工业实践成果,其中部分技术源自Pizlo在苹果公司的迭代开发,已有组件投入生产环境使用。
- 该工具的边界检查功能可使涉及指针操作的C代码比不安全的Rust代码更可靠,这引发了关于在Rust的unsafe块中引入类似检查的讨论。
- 局限性包括:仅提供动态(非静态)错误预防、存在性能与空间开销、未解决数据竞争问题,以及可能因追求性能而关闭安全机制的风险。
- 该项目折射出开发者优先级的转变——即使牺牲性能也要确保安全,这与历史上偏爱C/C++速度与内存效率的传统形成鲜明对比。
- 作者希望Fil-C能满足两类需求:既有C/C++遗留代码库的改造需求,以及对安全编程语言存在抵触情绪的开发者需求。