Rust に書き直さなくても C 言語をメモリ安全にできる Fil-C を試した
ARANK
はじめに最近「どの言語で書くか」を巡る話題が続いています。今年 5 月、Zig で書かれていた JavaScript ランタイム Bun が Rust に移植されました。 万行超の Zig コードを大量の Claude エージェントに書かせるという力技で、理由の一つにメモリ安全性由来のバグが挙げられていました。これには Zig の作者 Andrew Kelley 氏が「My Thoughts on the Bun Rust Rewrite」という反論記事を書いています。 言語のコンパイラは Rust から Zig に移植されました。 3.4 秒から 35ms になり、意外な事にメモリ破壊バグは Zig 版の方が少なかったそうです。ちなみに僕は Zig の素直な仕様が好きです。つまり「メモリ安全のために言語を乗り換えるべきか」という議論には決着が付いておらず、どちら向きに移植するにしても莫大なコストが掛かります。そんな中、当の Kelley 氏がつい先日「借用チェックとは違う、本当にメモリ安全なコンパイルモードを Fil-C にインスパイアされて導入する」という提案を Zig の issue に投稿し、承認されました。言語を書き直すのではなく、コンパイラと ABI だけでメモリ安全を実現しようという話です。この議論には Fil-C の作者本人も参加して…
2 comments
Fil-C、InvisiCapだけしか追ってないからあんまり深くまで突っ込めない
> 実際のメモリ回収は GC が行う。これにより use-after-free が原理的に攻撃に使えなくなる
ん?そうなるの?GC走ったあとにuseすればuse-after-freeにならない?
Rust に書き直さなくても C 言語をメモリ安全にできる Fil-C を試した
zenn.dev/mattn/articles…