Rustに書き直さなくてもCをメモリ安全にできる「Fil-C」を試す
C言語のコードをRustに書き直さずメモリ安全にするコンパイラFil-Cの検証記事。Rustが解く問題の本質を別角度から学べる。
#なぜ今日これを選んだか
いま学んでいるRustの最大の売りは「メモリ安全」。それを「Cのまま」実現するFil-Cという逆張りのアプローチを知ると、Rustが何を・どうやって守っているのかが立体的に見えてくる。HN側でも作者の講演動画が話題になっており、今まさに熱いテーマ。
#要点
- Fil-Cは既存のC/C++コードをほぼ書き換えずにコンパイルし直すだけで、ポインタの不正アクセスやuse-after-freeを実行時に検出・防止する処理系
- Rustの「コンパイル時に所有権で防ぐ」方式と対照的に、Fil-Cは「実行時チェック+GC」で守るため、実行速度のオーバーヘッドと引き換えに移行コストがほぼゼロ
- 「メモリ安全=Rustに書き直す」一択ではなく、既存資産の性質に応じて手段を選ぶ発想が広がりつつある
#自分にとっての示唆
The BookでRustの所有権・借用を学んでいる自分にとって、Fil-Cは最高の「比較対象」になる。同じ「メモリ安全」というゴールに対して、Rustはコンパイル時・Fil-Cは実行時と、解き方がまるで違う。この対比を意識すると「なぜRustはライフタイムをコンパイル時に強制するのか(=実行時コストを払わないため)」という設計思想が腹落ちする。今日のRust学習30分では、所有権の章を「Fil-Cならどう守るか」と比べながら読んでみる。組み込み(Pico)ではGCが使えないからこそRustが強い、という接続も見えてきた。