toshiki

Rustに書き直さなくてもCをメモリ安全にできる「Fil-C」を試す

· Zenn #130

C言語のコードをRustに書き直さずメモリ安全にするコンパイラFil-Cの検証記事。Rustが解く問題の本質を別角度から学べる。

  • #rust
  • #c
  • #memory-safety
  • #compiler

#なぜ今日これを選んだか

いま学んでいる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が強い、という接続も見えてきた。