まあ、実際には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:
Post a Comment
You can use some HTML elements, such as <b>, <i>, <a>, also, some characters need to be entity referenced such as <, > and & Your comment may need to be confirmed by blog author. Your comment will be published under GFDL 1.3 or later license with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.