テクノロジー

Rust に書き直さなくても C 言語をメモリ安全にできる Fil-C を試した

1: mattn 2026/07/22 09:54

書いた

2: yarumato 2026/07/22 11:52

“Zigまでもが目を付けた「RustやZigで全部書き直すのではなく、Cコードそのままメモリ安全にする」試みの本家がFil-C。既存の C/C++ソースをほとんど変更なくコンパイル可能、かつメモリ安全になる。実行速度は遅くなる”

3: simplememofast 2026/07/22 12:25

魅力は再コンパイルだけで安全になる点だが、依存を全てFil-Cで固める前提と表裏。外部入力を扱うパーサ等、自己完結した信頼境界から適用するのが現実解に見える

4: nguyen-oi 2026/07/22 12:33

C/C++資産をそのままメモリ安全にできるなら理想的だな GC載るから低レイヤ用途で速度影響がどこまで許容されるか

5: sgo2 2026/07/22 12:42

メモリマップ等にも対応出来るのかやや疑問が。

6: pure_luca 2026/07/22 12:52

“Fil-C の特徴は「fanatically compatible(狂信的に互換)」を謳っている点です。”

7: hiroomi 2026/07/22 13:13

”つまり「メモリ安全のために言語を乗り換えるべきか」という議論には決着が付いておらず、どちら向きに移植するにしても莫大なコストが掛かります。”

8: mojimojikun 2026/07/22 13:20

『最後のメッセージ「thwarted a futile attempt to violate memory safety(メモリ安全性を侵害しようとする無駄な試みを阻止した)」が良い味を出しています』

9: mohno 2026/07/22 13:52

それはC言語なのか?と思うけど、「まずは古典的なスタックバッファオーバーフローです」←メモリーオーバーランなのでは。

10: mrmt 2026/07/22 14:03

名前はfilthyのだじゃれかなぁ

11: aox 2026/07/22 14:33

“Pizlix”

12: nWY2RhxQPXKQloX3z 2026/07/22 14:50

「標準C言語に統合される未来を持ちえないC言語の方言」を選ぶ人はいるのだろうか?C言語の歴史はコンパイラ独自拡張を標準規格に収束させてきた歴史だ

13: suka6411144 2026/07/22 15:55

あくまでユーザーランドだけでカーネルは流石に無理かな

14: UhoNiceGuy 2026/07/22 17:44

速度が必要でなくてもCで書かれているのにはいいね//速度もマンデルブロはCと互角、ペナルティが一番効きそうなエラトステネスの篩が高々2倍(半分?)、一番驚くのはB-TreeがCと互角ということ//Go速ぇぇぇ

15: restroom 2026/07/22 18:11

面白いコンセプト。ある意味、言語翻訳みたいなものですかね。Wrapperというか。ちょっと違うかな。

16: hkdn 2026/07/22 18:13

抜け道だらけというか、抜け道しか使ってないようなC/C++実装だと移行に苦労しそう。そんなには見かけないけど。

17: taguch1 2026/07/22 18:55

どんなにAIが優秀でも巨大な遺産を書き直すのは大変すぎる。

18: urtz 2026/07/22 19:26

そんなこと可能なんだ

19: atsushieno 2026/07/22 20:17

いわゆるリアルタイムセーフなコードを書いていると「リアルタイムだから速いはず」と勘違いされることがよくあるけど(実際にはアトミック操作などを伴うので遅い)、GC任せにできるほうが高速なのもよくある話

20: knok 2026/07/22 21:42

https://cr.yp.to/2025/fil-c.html djb先生がライブラリをfil-cビルドしたものに差し替えて動かす実験やってたりする

21: nakag0711 2026/07/22 22:11

今時のC++だとmallocもnewも配列もあまり使わないと思うけど幾らか有利になるんだろうか

22: kazuau 2026/07/23 00:14

メモリ関連の違反でランタイムエラーは安全とは言えないのでは?メモリ周りの脆弱性の防止には役立つかもしれないが、コンパイル時に弾く設計とは比べられない。

23: atico 2026/07/23 06:04

丁寧で分かりやすかった。ただコンパイラでメモリ安全じゃないコードを弾くのではなく、実行時にオーバーランを検知してそのまま動作させるのを防ぐというものだから、Rustとの対比はミスリーディングを誘うのでは?

24: ihirokyx 2026/07/23 06:26

コンパイラと ABI だけでメモリ安全を実現 InvisiCaps FUGC

25: uehaj 2026/07/23 08:07

GCつきのPurify/Zigのポインタ文法を全部ゴミ箱に叩き捨てる存在なのでは、という気もしたが、Zig文法には手を付けないでZigから呼び出すCコードの話か