少し前にOpenBSDがPortable C Compilerをportsに加えたとの発表がありましたが、なぜ今PCCなのか?OpenBSDではこのPCCをLinuxをはじめオープンソースプロジェクトやエンベデッドな世界ではデファクトとなっているgccの替わりにしようとしているようですね。
- More on OpenBSD's new compiler - The Jem Report
- BSD Licensed PCC Compiler Imported
- More on OpenBSD's New Compiler - OSNews.com
いわく
- gccはでかくて複雑すぎ。フロントエンドもバックエンドもとても書けたものではない
- でかくて重い
- 危険なオプティマイズなんかも含まれている
- メンテナンスや開発のほとんどが商業Linuxベンダーによって行われ、商用コンパイラと化している
- OpenBSDとGPLとは方向性がだいぶ異なる
- configureなんかもやりにくい
- OpenBSDがサポートしているアーキテクチャ向けでgccでは開発が終わっているモノもある
などなど、だそうです。かなりきつい調子で書かれています。まあOpenBSD特有の問題もふくまれてはいますが、基本的に設計が古く複雑でデカイというのが最大の欠点として上げられています。
現状のPCCのステータスではOpenBSDのほとんどのプロジェクトをコンパイル可能だが、必要なgcc拡張機能や多種のアーキテクチャへのポーティングが必要とのこと。
コンパイラなんていうのはインフラストラクチャなので、そうそういろんな種類があっても使われるのは一握りのもので、結局信頼性と実績がモノをいう世界ではありますが、確かにgccはデカイくて複雑です。私が使い始めたのは1.xxの頃で(歳がバレますが)当時は結構小さく、ちょっと改造したり、configureを手直ししたりと、ソースをいじるのも不可能ではありませんでしたが、今のgccはちょっと手を出すに荷が重いものがあります。
よりモジュール化を進めた新しい設計でコンパクトで性能がよく多種類のCPUをサポートするgcc互換コンパイラがあったら、非常に価値があるかもしれません。このPCCが*BSDで採用が進んで熟成したらなら、組み込みやLinuxにおいても十分採用の価値が出てくるかも。