Go(http://code.google.com/p/go/)用の現在の公式コンパイラは、手作りの、間違いなく秘密のコードジェネレータを使用しています。これには、カスタムセクションをELFバイナリに挿入することが含まれます。Goは独自のコードジェネレータを使用するのはなぜですか?
このアプローチは、ldd
,またはstrip
のように、ELF情報を直接読み書きするユーティリティに関する多くのバグを引き起こしています。
LLVMなどのよくテストされたクロスプラットフォームのコードジェネレータを使用し、Unix/Linuxのld
(またはWindowsの場合はld.exe
)など、OSに付属のリンク機能を使用することで、 )、またはlink.exe
(Visual Studioを使用しているWindows)。
なぜGoは独自のコードジェネレータを使用していますか?それは本当にホイールを改革しているだけですか?それとももっと重要な理由がありますか?
あなたはそのプロジェクトの誰かになぜその選択をしたのか尋ねる必要があります。 – dmckee
彼らが何をするのかを完全に制御する。 – OscarRyz
@dmckee:あるいは、あなたはこの質問に対する答えを読むことができます。 – peterSO