October 28, 2025
C gets bubble wrap
Fil-C: A memory-safe C implementation
C finally gets seatbelts—fans applaud, purists groan, and the dupe police show up
TLDR: Fil-C tries to make old C code run safely without rewrites, and early use (like Bash) didn’t feel slower. The crowd split between excitement over retrofitting safety and skepticism about speed, new linking rules, and dupe fatigue—yet many agree it’s a bold swing at a long-standing problem.
Fil-C wants to give classic C code the kind of safety net you expect in modern apps—think seatbelts for pointers. It’s a fork of Clang that tries to make old-school C and C++ run without the usual memory landmines, and it even compiled a whole Linux user space. The twist: it’s mostly just one developer’s passion project. Performance? The author says it’s only a few times slower than normal Clang, and a test using Bash felt basically the same in daily use.
The community reaction was pure internet theater. Half the crowd cheered, calling it “finally, safety without rewriting everything in Rust.” The other half rolled their eyes: “a garbage collector in C?” and “show real benchmarks, not Bash.” The dupe police burst in first, with a drive-by “Dupe” and “On the front page last week,” linking prior threads: one and another. Cue a chorus of “we’ve been here before,” plus jokes about “C with bubble wrap” and “pointers on training wheels.”
Fil-C’s pointer trick—InvisiCaps—was compared to CHERI (a hardware idea that splits pointers into a safe capability plus a raw address). Fans love the “fanatically compatible” pitch for retrofitting old code; skeptics hate the new ABI that forces you to recompile everything and currently blocks easy linking with Rust. Verdict from the crowd: exciting, audacious… and maybe slower than anyone wants, depending on what you build.
Key Points
- •Fil-C is a memory-safe fork of Clang aimed at running unmodified C/C++ code safely, including pointer arithmetic and unions.
- •The project can compile a memory-safe Linux user space (based on Linux From Scratch) and includes memory-safe signal handling and a concurrent garbage collector.
- •Fil-C is licensed under Apache v2.0 with LLVM exceptions and is currently based on Clang version 20.1.8 (July 2025).
- •Performance has improved; Fil-C code runs a few times slower than Clang, but in a Bash 5.2.32 test, the difference was not noticeable.
- •Fil-C uses a different internal ABI and does not support inter-language linking (e.g., with Rust); its InvisiCaps pointer model provides concurrency and use-after-free detection.