2008-06-05

LLVMというBSDライセンスなコンパイラ

llvm.org

まあ、実際にはUniversity of Illinois/NCSA Open Source Licenseなわけなのだけれど、たぶんBSDライセンスとも互換性はあるだろう。非常に緩いライセンスだ。

llvmは、いわゆるコンパイラとしての機能を提供するもので、コンパイル時、リンク時の最適化はもちろんのこと、実行時の最適化もある。処理系に依存しない仮想命令セットも用意されている。実際のコンパイラのバックエンドとしては、"X86, X86-64, PowerPC 32/64, ARM, Thumb, IA-64, Alpha, SPARC, MIPS and CellSPU" をサポートしているほか、ポータブルなCコードへのバックエンドもある(Bjarne Stroustrupの書いていたCFrontみたいな形)、また、X86, X86-64, PowerPC 32/64へは、JITコンパイルも可能だ。そうそう、MSILへのバックエンドなんてのも有る。これらのバックエンドは、フロントエンドさえ用意されていれば、どのような高級言語からでも変換可能だ。

フロントエンドとしては、GCCを利用した、gccとの互換性の高いC/C++フロントエンド(ただし、実際にgccのフロントエンドを利用しているので、GPLライセンスになる)のほか、llvm独自のC/C++フロントエンドも有る。こっちはGCCのような過去の遺産に引きずられていないため、パースや最適化にかかる時間が早いとのこと。

もちろん、llvmを利用して、俺様言語からのフロントエンドを作ることもできる。llvmの多彩なバックエンドを自由に使えるわけだ(CやMSILのバックエンドまである) ライセンスが緩いので、ソースコード公開の義務は無い。

で、私個人の意見はまた別に有る。処理系に依存しないといっても、コンパイラ自身のビルド、また実行は、*unix限定だ。Windows信者としては、まあ、gccの好敵手となるのかどうかを見守るぐらいしかできない。

しかし、WindowsのC++コンパイラにも、何かVC以外の手段は無いのだろうか。iccはいいとして、bcc is so 90sだし、minGWとかcygwinは、そもそもWindows環境のコンパイラじゃなくて、posixをそのままWindowsに移植したといったほうが適切だし、ウォルター・ブライトさんのdmcは、誰も知らないし。

No comments: