Fil-C 中的内存安全上下文切换(longjmp、setjmp)Fil-C 编译器实现了内存安全的 setjmp/longjmp 和 ucontext API。通过拦截编译器优化和运行时栈帧检查,防止了悬空栈恢复导致的内存破坏。 文章深入分析了传统实现中编译器重排溢出槽带来的安全隐患,并展示了 Fil-C 如何通过 opaque 对象和 GC 根追踪机制确保跳转安全性。 评论点赞收藏47 天前
Fil-C 如何实现内存安全的上下文切换Fil-C 编译器实现了内存安全的 setjmp/longjmp 和 ucontext API。通过拦截编译器优化和运行时栈帧检查,防止了悬空栈恢复导致的内存破坏。 文章深入分析了传统实现中编译器重排溢出槽带来的安全隐患,并展示了 Fil-C 如何通过 opaque 对象和 GC 根追踪机制确保跳转安全性。 评论点赞收藏48 天前
Fil-C 优化调用约定:兼顾内存安全与极致性能Fil-C 编译器通过算术编码函数签名和寄存器传递参数,实现了内存安全且高性能的调用约定。在常见情况下,代码效率接近无检查的 C 语言;当发生类型不匹配或参数错误时,则通过 Thunk 机制进行转换或直接 Panic。文章详细解析了从通用调用到寄存器优化的底层实现细节。 评论点赞收藏91 天前
Pizlix:基于 Fil-C 从零构建的内存安全 Linux 发行版作者基于 LFS 12.2 构建了名为 Pizlix 的系统,核心创新是使用 Fil-C 编译器替代传统 GCC/Clang,实现用户态内存安全。文章详细记录了构建过程中的关键挑战与解决方案:1. 内核仍需使用 Yolo-C 编译;2. 设计了复杂的构建阶段(Pre-LC, LC, Post-LC),通过在 glibc 构建节点切换编译器,解决 ABI 兼容性问题;3. 采用二进制注入和符号链接技巧处理混合编译环境。这是一个极具工程价值的内存安全操作系统实践案例,适合关注系统底层、Rust/C++ 替代方案及 LFS 的高级开发者阅读。 评论点赞收藏245 天前
Linux 沙箱与 Fil-C 的内存安全实践文章深入探讨了内存安全与沙箱技术的正交关系,指出两者结合才是防御的最佳实践。作者详细记录了将 OpenSSH 基于 seccomp 的 Linux 沙箱移植到 Fil-C(一种内存安全的 C/C++ 实现)的具体技术过程。文中分析了 Fil-C 运行时后台线程对传统沙箱限制(如禁止新建进程/线程)的挑战,并提出通过锁定运行时线程和修改 prctl 系统调用来确保所有线程都受沙箱保护的技术方案。这是一篇针对底层系统安全和编译器运行时机制的高质量工程实践文档。 评论点赞收藏245 天前
Fil-C:一种内存安全的 C 和 C++ 语言实现Fil-C 是一个基于 Clang 20.1.8 修改的编译器分支,旨在为 C 和 C++ 提供内存安全保证。其核心是一个新的 LLVM Pass(FilPizlonator),强制执行“垃圾进,安全出”的语义,通过插入边界检查和类型验证来防止内存错误。文章详细描述了其对 Clang 前端、Driver 以及 LLVM 后端的修改,包括处理原子操作、C++ 虚函数表、自定义运行时库链接以及多种分发模式(如 pizfix, /opt/fil)。这是一个面向底层系统开发者和编译器工程师的技术实现文档。 评论点赞收藏287 天前
InvisiCaps:通过实例解析 Fil-C 中的指针机制Fil-C 是一种内存安全的 C 语言变体,通过“隐形能力(InvisiCaps)”模型实现。与 CHERI 不同,Fil-C 的指针大小不变,但携带不可见的边界和能力信息。文章通过大量代码示例展示了其核心机制:1. 自动拦截越界读写和整数溢出攻击;2. 在系统调用层面强制检查指针合法性;3. 处理指针存储到内存时的能力传递(Aux 分配);4. 严格防止类型混淆(如将整数误读为指针、函数指针与数据指针混淆),即使底层内存被破坏,能力信息依然独立保存且不可篡改。相比 Address Sanitizer 等传统工具,Fil-C 能从根源上阻止利用无效索引进行的堆写入攻击。 评论点赞收藏291 天前
Fil-C:一个狂热兼容的 C/C++ 内存安全实现Fil-C 是一个旨在提供完全内存安全的 C/C++ 编译器实现。它声称具有极高的兼容性,许多现有的开源项目(如 CPython、OpenSSH、GNU Emacs)无需修改即可编译运行。其核心技术方案结合了并发垃圾回收和一种名为 InvisiCaps 的隐形能力模型,对所有潜在的不安全操作进行运行时检查,且不提供类似 Rust 的 unsafe 代码块作为逃逸出口。该项目基于较新的 Clang 版本构建,支持主流构建系统,并拥有活跃的社区和明确的许可证协议。 评论点赞收藏298 天前
通过/opt/fil二进制包安装Fil-C指南作者介绍了一种将Fil-C编译器及相关工具安装到/opt/fil目录下的方法。这种方式旨在与Linux常规环境隔离共存。步骤包括下载二进制包、运行脚本,并将bin目录加入PATH。文章展示了如何用filcc编译C程序和fil++编译C++程序,并指出该发行版还预编译了sudo、OpenSSH、tmux等内存安全版本的应用,用户可以直接尝试使用这些工具。 评论点赞收藏301 天前
在 Fil-C 中实现常量时间加密的工程实践作者详细记录了在 Fil-C 语言中实现常量时间加密库的工程实践。核心难点在于编译器优化可能破坏常量时间属性,因此必须调用汇编代码。由于 Fil-C 缺乏安全的汇编内存交互机制,作者通过引入非标准的 FFI 接口(如 zunsafe_call)和手动内存安全检查,成功将 OpenSSL 的汇编模块链接进 Fil-C 编译的代码中。这是一篇极具深度的底层系统编程一手经验总结,展示了如何在内存安全语言和传统高性能汇编之间进行艰难且严谨的互操作。 评论点赞收藏308 天前
深入解析虚拟机底层技术:Safepoint与Fil-C的实现细节文章深入解析了现代多线程虚拟机和垃圾回收器中一个关键但常被忽视的技术:Safepoint(安全点)。作者以Fil-C语言为例,详细阐述了Safepoint如何保证在多线程并发访问堆内存时,垃圾回收器能准确扫描栈和寄存器中的指针,从而维持内存安全。文中不仅讨论了编译器如何在控制流图中插入轮询检查点,还介绍了Fil-C特有的Pizderson帧用于跟踪指针,以及软握手机制实现非全局停止世界的GC同步。此外,文章还涵盖了原生代码交互、存储屏障、弱加载屏障、线程本地缓存清理以及信号处理和fork的安全处理。对于理解JVM或其他高级语言虚拟机的底层并发与内存管理原理具有极高的参考价值。 评论点赞收藏334 天前
Fil-C 的 FUGC 垃圾回收器深度解析Fil-C 语言介绍了一种名为 FUGC 的并行并发垃圾回收器。它采用非移动、Dijkstra 屏障和灰栈技术,实现了无全局停顿的垃圾回收。文章详细解释了其核心机制,包括软握手、轮询检查和安全点,以及如何处理对象释放、终结器和弱引用。作者强调该设计在简化实现的同时,提供了类似 Java 和 C 风格的内存管理保证,特别是能防止因悬垂指针导致的内存泄漏。 评论点赞收藏345 天前
InvisiCaps:Fil-C 的能力模型解析Fil-C 项目介绍了一种名为 InvisiCaps 的指针能力模型,旨在解决 C/C++ 的内存安全问题。与传统的软边界或硬件辅助方案不同,InvisiCaps 的核心突破在于保持 64 位指针大小的同时,实现了线程安全和极低的性能开销(约 4 倍)。作者详细回顾了从 PLUT 到 MonoCaps 的技术演进,解释了如何通过隐藏元数据(aux word)和惰性分配机制,在不改变程序可见指针值的前提下,动态追踪指针权限。该模型支持原子操作、函数指针保护及精确的释放后使用检测,展示了在兼容性与安全性之间取得平衡的工程细节。 评论点赞收藏346 天前