Portable C Compiler (略して pcc) はベル研究所スティーヴン・カーティス・ジョンソンが1970年代に書いたC言語コンパイラである[1]。異なるアーキテクチャ用のコードを出力することが容易なコンパイラの先駆けであり、1980年代初期には多くのCコンパイラがpccをもとにしていた[2]Version 7 Unixにおいて、デニス・リッチーのコンパイラであるccと並行して添付され、ccとpccが同時に使えるようになったのがpccの初出である。その後、1990年の4.3BSD-Renoに含まれるなど、4.4BSDGNU Cコンパイラに取って代わられるまで、長く標準コンパイラとして君臨していた。

pccの成功の鍵は移植性と診断能力にある。

  • ソースファイルの大部分がマシン非依存である。
  • 文法違反に強く、不正なプログラムを受け付けない。lintはもともとpccの一部だった。
  • pass1の時点でも最適化する。

こうした特徴を持つコンパイラは当時としては斬新で、たとえばデニス・リッチーによる最初のCコンパイラはPDP-11に強く依存していた。

なお、pccAlan Snyderによる別のportable C compilerからアイディアを取り入れているが、Snyderのものは遅く複雑で、実装上の問題もあった。

現在(2014年12月10日) 編集

近年ではAnders MagnussonがC99対応を目指して開発を続けており、2007年9月にはNetBSDpkgsrcOpenBSDのソースツリーに導入された[3]。どちらもまだ標準コンパイラとして利用しているわけではないが、GCCより軽量でメンテナンスしやすく、BSDライセンスであることから、関心が高まっている[4]

利用者の観点からGCCと比較すると、以下の大きな違いがある。これは両者の目標とするものが異なるためである。

  • pcc自体が小さく、ビルドしやすい。移植も容易である。
  • pcc自体の動作が高速である。
  • 出力されるコードが大きく、遅い。GCCは各種最適化に優れている。

2011年4月1日、PCC version 1.0がついにリリースされた。BSD FundのプログラムマネジャーであるMichael Dexterは、プロジェクトへの寄付者に向けて、こう語っている。

I am pleased to announce that the Portable C Compiler version 1.0 was released on April 1st, 2011 and is not an April Fools joke! (Portable C Compiler version 1.0が2011年4月1日にリリースされたことをアナウンスいたします。これはエイプリルフールではありません!)

2014年12月10日、PCC version 1.1.0がリリースされた。

関連項目 編集

参考文献 編集

脚注 編集

  1. ^ A portable compiler: theory and practice
  2. ^ The Development of the C Language
  3. ^ 'CVS: cvs.openbsd.org: src' - MARC
  4. ^ Slashdot | GCC Compiler Finally Supplanted by PCC?

外部リンク 編集