「crustc」爆誕:Rustコンパイラ(rustc)をすべてC言語に翻訳してみた
crustc: entirety of `rustc`, translated to C
crustc: entirety of `rustc`, translated to C
驚きのプロジェクトが公開されました。なんと、あのRustコンパイラである「rustc」の全ソースコードを、そっくりそのままC言語に変換してしまったという「crustc」が登場しました。Rustの堅牢性とCの移植性がどのように組み合わさっているのか、興味が尽きない挑戦的な試みです。
パフォーマンスがどうなるか気になる。移植以外の目的でも面白そうだしね ;)
ミキサーに左手を突っ込んでしまった。ミキサーの勝ち。(指は全部残ってるけど、数針縫った)。これ以上は語らないでおく。
それは残念。記事になったら読んだのに。
主な目的は、LLVMやGCCがサポートしていない、古かったりマイナーなハードウェアへの対応。Rustは動かないけどCなら動くっていうシステムはまだあるからね。
ランディングページでPlan 9がそのシステムの一つとして言及されてるね。
この3年間、RustをCにコンパイルする作業に取り組んできた……。数えてみたらこれで14回目の挑戦になる:cilly
ニッチな分野への献身には敬意を表するよ。
主な目的は、LLVMやGCCがサポートしていない、古かったりマイナーなハードウェアへの対応。
ブートストラップの問題については読んだことがある。普通、RustのコンパイラをソースからビルドするにはRustコンパイラが必要になるんだよね。https://bootstrapping.miraheze.org/wiki/Bootstrapping_Specif... (https://bootstrapping.miraheze.org/wiki/Bootstrapping_Specific_Languages)
おっと、RustコンパイラのC++実装があるのは知ってるよ。https://github.com/thepowersgang/mrustc (https://github.com/thepowersgang/mrustc)
とにかく、crustcがネットワークやデバイス越しにコンパイルできるっていうこの機能も役に立ちそうだな。
自分のBlorbo OS上で小さなCのサーバーをビルドして、Linuxみたいな普通のプラットフォームでrustcを動かして、cillyに通信させる感じか。
公式のRustコンパイラにバックドアがないか調べるために、Diverse Double-Compiling (DDC) は試した?
crustcを使ってRustのソースコードをコンパイルして新しいコンパイラを作る。次に、この新しいコンパイラと公式のrustcバイナリの両方を使って(どちらも決定論的フラグ付きで)、もう一度Rustのソースコードをコンパイルするんだ。2つの出力がビット単位で一致すればOK。
これは https://bootstrappable.org/projects.html (https://bootstrappable.org/projects.html) の中で使えるかも。OCamlとか他の方法を使うよりも、Rustのブートストラップがずっと簡単になりそうだ。
ブートストラップ可能なOSプロジェクトのコミュニティにいる何人かがHackernewsを見てると知ってるから、彼らにもチェックしてほしいな。このプロジェクトがあれば、ブートストラップ可能な方法で動作するRustコンパイラを手に入れるための労力を大幅に減らせる気がする。
すごくいいじゃん。最初はまたLLMが生成したデモかと思ったけど、違った。オリジナルのアートワークだ。最高にかっこいい。LLVM IRよりもCにトランスパイルする方が簡単そうだし、最適化をGCCに任せれば実際にうまくいくかもしれない。
コンパイラの実装が公開されるのを楽しみに待ってる。学ぶべきことが多そう。
あれ、LLVMにはRustをCにトランスパイルするためのCバックエンドがあると思ってたんだけど違うの?ずっと使えない状態だったけど、最近また復活したのかもしれない:https://discourse.llvm.org/t/re-ann-llvm-c-backend-still-abl... (https://discourse.llvm.org/t/re-ann-llvm-c-backend-still-able-to-generate-c-code-from-c/90055)