October 28, 2025
Pointer drama, now with seatbelts
Fil-C: A memory-safe C implementation
Bubble-wrapping C: fans cheer, skeptics cry ‘x86-only’ while builders ship
TLDR: Fil‑C aims to run old C code safely with runtime checks; Bash felt normal, but you must recompile everything and it’s x86-centric. Comments split between “essential to preserve C,” “meh, repeated/x86-only,” and “it’s working—Nix packages build,” highlighting a real push toward safer legacy software.
The internet is buzzing over Fil‑C, a bold “memory‑safe” remix of the C language that promises to run gnarly old C code—pointer tricks and all—without turning your PC into Swiss cheese. LWN says it’s surprisingly usable: they built Bash with Fil‑C and it felt normal. Cue the drama. One camp is romantically protective of C’s decades of software history; as one commenter put it, Fil‑C (or something like it) is essential to keep that legacy alive. Another camp rolls its eyes: “posted multiple times, x86‑only”—translation: cool idea, but wake me when it’s cross‑platform. Meanwhile, the builders are already flexing: a Nix maintainer says “it’s working,” with tmux, coreutils, Perl, Tcl, Lua, and SQLite compiling under Fil‑C, and a binary cache on the way.
Fil‑C is a fork of Clang with safety checks, a clever pointer scheme called “InvisiCaps,” and a garbage collector (think: a tidy housekeeper cleaning memory messes). There’s a catch: you have to recompile everything with Fil‑C, and linking with other compilers—or Rust—doesn’t work yet. Hot takes flew, memes sprouted (“YOLO C is canceled”), and someone noted the “safe C++” proposal fizzled, making Fil‑C look like the last best hope for bubble‑wrapping the world’s C code.
Key Points
- •Fil-C is a memory-safe C/C++ implementation designed to run existing code unmodified, including pointer-heavy features.
- •It is a fork of Clang, licensed under Apache v2.0 with LLVM exceptions, and currently based on Clang 20.1.8 (July 2025).
- •Fil-C can compile a memory-safe Linux user space (based on Linux From Scratch) and includes memory-safe signal handling and a concurrent garbage collector.
- •Performance has improved from an initially slow implementation; Fil-C code is now only a few times slower than Clang, with a Bash 5.2.32 test showing no noticeable slowdown.
- •Fil-C uses a different internal ABI, requiring projects to be fully recompiled with Fil-C; inter-language linking (e.g., with Rust) is not supported. Its InvisiCaps pointer design enables concurrency and use-after-free detection.