[Phoronix] Talk Of GCC 5.0 To Be Modular, More Like LLVM
David Malcolm - GCC 5? (was Re: GCC 4.7.0RC: Mangled names in cc1)
聞説、今のGCCのコードは、やや悲惨な部類に入るらしい。十分な実績があり正しく動くのは確かだが、コードはほとんどCで書かれており、名前空間もなく、グローバルな状態が多く、スレッドもない。これはつまり、GCCは他のソフトウェアに組み込むのが難しい。
一方、LLVMは、設計段階からモジュール化を念頭に置いており、GCCよりはるかに後発なのにもかかわらず、他のソフトウェアに組み込む用途で広く使われている。たとえば、 MesaのGallium3Dとか、OpenCLとか、Monoとかで、JITコンパイルを実現するために、すでに使われている。他にもLLVMを利用して、CやC++をJavascriptに変換するようなプロジェクトも生まれている。
GCCは歴史や実績こそ十分だが、このような組込用途には、現在のコードベースでは圧倒的に向いていない。そこで、GCCをLLVMのようにモジュール化して使いやすくしようという議論がある。
問題は、長年の歴史あるGCCのコードをモジュール化するための変更は相当にでかい。したがって、現実的な方法でモジュール化を進めると、GCCは短期的に、機能が少なくなり、最適化も悪くなり、あらゆる点で現行のGCCより劣ることになる。もしすべての現行機能をそのまま保とうとしたら、作業が莫大すぎて現実的に行えない。多くのGCCのコントリビューターは、すでにGCCを自社で使っている会社に雇われて働いている。そのような会社が、GCCの機能を、短期的に劣化させる作業に金を出したいと思うだろうか。
もうひとつの問題は、ライセンスだ。GCCはGPLv3で提供されているが、LLVMはより柔軟でpermissiveなライセンスで提供されている。たとえモジュール化をやり遂げて、組込用途でLLVMに対抗できるようになったとしても、GPLでは使えない企業も出てくるだろう。現時点で、GCCがいまさらライセンスを変更できるはずもない。一体どうするのか。
なんにせよ、今のLLVMの開発速度は驚異的だ。GCCは今の地位を保てるだろうか。明らかに今のGCCのケツには、やがて発火する煙がくすぶっているように思われる。
一次情報が見付けられなかったので本当かどうかわかりませんが GCC は商用コードと混ざらないように意図的にモジュール化されなかったという話があります。
ReplyDeletehttp://tabesugi.net/memo/2008/62.html#192038
フリーであることを護ろうとする RMS の思想がここでも発揮されているわけです。