Free Pascal

出典: フリー百科事典『ウィキペディア(Wikipedia)』
移動: 案内検索
Free Pascal Compiler
FPC Command Line.PNG
cygwinのコマンドラインでFPCを操作
開発元 有志
最新版 2.6.4 / 2014年03月11日(5か月前) (2014-03-11
対応OS クロスプラットホーム
種別 コンパイラ
ライセンス GPL
公式サイト www.freepascal.org
テンプレートを表示

Free Pascal (以前は FPK Pascal)はオープンソースPascalコンパイラである。

概説[編集]

Free Pascal は、32または64ビットの複数のCPUアーキテクチャ、複数のOSをサポートするコンパイラである。広く用いられる各種システム向けに移植されている。言語仕様はボーランドの Pascal (Turbo Pascal及びDelphi)に準拠しており、いくつか MacPascal の仕様も採用している。

Free Pascal は以前 FPK Pascal の名で知られていた。これは"Free Pascal Kompiler"の略ではなく、実際は作者のイニシャルから名をとったものである (Florian Paul Klämpfl)。その後、プロジェクトの参加者が増えたため、誤解を避ける目的から1997年の終わりに、Free Pascal Compiler (FPC) と改名した。

FPCのドキュメントは詳細で、マニュアルは合計1800頁に及ぶ。

Delphiライブラリの目に見える部分 (VCL)、統合開発環境 (IDE)、RADの移植はLazarusと呼ばれる別のプロジェクトに含まれる。

Free Pascal にはTurbo Pascal風のテキストモードIDEがあるが、メインテナンス要員が足りないために、時として使い物にならなくなっていた。2005年の後半から改善の努力が続けられ、2006年に入ってからは、大きなバグは修正済みとなり、リリースしてもよい程度の品質になった。Mac OS X用のFPCはコマンドラインからはもちろん、Xcodeの一部として動作させることもできる。

Turbo Pascal や Delphi 同様、FPCは Pascal コードの中にアセンブリ言語コードを記述できるような優れた仕組みをもっている。FPCの内蔵アセンブラは、複数のアーキテクチャと表記法をサポートしている。

Linux用FPC IDE。2002年のNational Olympiad in Informatics, Chinaのための準備をしている

言語仕様[編集]

FPC は Pascal の方言のうちで、デファクトスタンダードとなっているボーランドのものを採用している(1.0.xのFPCではBorland Pascal 7とDelphi 2、2.0.xでは Delphi 6または7)。

しかしながら、コンパイラは「コンパイルモード」を持っており、開発チームはANSI/ISO標準Pascalにも対応する標準Pascalモードを導入する予定があることを明言している。

また、Mac OS(Mac OS Xを含む)とのインターフェースを容易にするため、若干ながら Apple Pascal 文法をサポートするための努力も行われてきた。

以下に、Delphi の機能で FPC が未だにサポートしていないものを挙げる

  • Delegation using the "implements" keyword
  • Automatic COM IDispatch dual interfaces (dispinterfaces)
  • dispid in normal interfaces
  • packages: compiler supported import/export of classes from/to shared libraries (useful for e.g. Lazarus, which implements packages of components)
  • set types can have different size.

歴史[編集]

はじまり[編集]

FPC は ボーランド が「Borland Pascal 8は出さない、次の版はWindows専用になる(それがDelphi)」と明らかにしたときに出現した。学生であった Florian Paul Klämpfl は自分でコンパイラを作成しようと着手したのである。コンパイラは最初から Turbo Pascal 方言を用い、同時期にDJGPPプロジェクトが作成したgo32v1DOSエクステンダ向けの32ビットコードを生成した。当初のコンパイラ自身は Turbo Pascal でコンパイルされた 16bit DOSアプリケーションであった。二年後に、コンパイラは自分自身をコンパイルできるようになり(ブートストラップ)、32bitアプリケーションになった。

拡大[編集]

最初の32ビットコンパイラがネットに投稿されると、協力者が現れるようになった。数年後には、Michael van Canneyt の手で Linuxに移植された(Kylixより5年早い)。DOS版からは、OS/2 + EMX(OS/2にUNIX類似の環境を提供するライブラリ)に移植された。DOS版の改良はその後も進み、go32v2を用いるようになった。これらの成果はリリース0.99.5としてまとめられ、それまでの版より広い範囲で用いられるようになった。これが Turbo Pascal 互換性にとどまっていた最後の版で、後のものは Delphi 互換モードを追加していくことになる。リリース0.99.5はモトローラ680x0 (68k) 用にも移植された。

リリース0.99.8で、Win32がターゲットとして加えられ、Delphiの仕様と協調する作業が始められた。1.0版の安定化が進められ、2000年6月に記念すべき公開にこぎ着けた。1.0.xシリーズ(後にもバグ取りと安定化が加えられ、1.0.10は2003年6月に公開された)は企業にも教育機関にも広く用いられた。1.0.xでは、68k向けの移植が再度行われ、多くの68kUNIXAmiga用の安定なコードを生成するようになった。

新時代[編集]

後に1.0.xとなる安定化作業及び68k向け移植の際に、コード生成部分にの設計上の限界がはっきりした。二つの基本的な問題があり、一つは、新しいプロセッサをサポートしようと思うと、コードジェネレータを根本的に書き直す必要があったこと、レジスタ割当の原則(ブロックをビルドする際、常にレジスタを3つ開けておく)が管理しにくく、自由度を欠いていたことである。

これらの理由から、1999年12月に1.0.xシリーズから枝分かれする形で1.1.xシリーズが作られた。最初はコンパイラの各部分のクリーンアップ及び再設計と書き直し、次いでコードジェネレータとレジスタアロケータの書き直しが行われた。余得として、不足していたDelphi互換性が向上した。

1.1.xの改良は遅かったが、着実であった。2003年遅くには PowerPC (PPC) への移植が着手され、ARM 及び SPARC への移植も2004年の夏から秋にかけて行われた。AMD64 への移植は2004年早くに行われた。AMD64への移植によって、64ビットコンパイラとしての機能が加わった。

2003年11月に、1.1.xの最初のベータ版が公開され、版名を1.9.0とすることにした。その後すぐに1.9.2、1.9.4が公開された。1.9.4はMac OS Xをサポートした記念すべき最初の版であった。

その後、1.9.6が2005年1月、1.9.8が2005年2月、2.0.0が2005年5月、2.0.2が2005年12月に公開された(現行翻訳時点 — 2006年8月 — ではMac OS X他用の2.1.1のスナップショットが、正式な版としては2.0.4が公開されている)。

将来[編集]

短期的なロードマップ (2.1.x)

  • COM/OLEサポートの実現/改良。これには複数の局面がある
    • COM互換インターフェース/vmt
    • OLEに必要なVariants
    • implements スタイルの delegation
  • リンク/デバッグファイルフォーマット関連
    • スマートリンカの改善(.aファイルの廃止、メモリ要求の削減)
    • "packages" 及びダイナミックライブラリ (PIC!) の一般的なサポート
    • クロスリンキングの改良
    • stabs->dwarf クロスオーヴァ
    • Kylix 互換リソースのいくつか(論議中)
  • Apple Pascal 関連
    • subprocedureを別の手続に procvar として渡せるようにする

これらの目標のいくつか(特にリンカ)のためには、プログラムの再構成が必要となるかもしれない。

  • 中核的なプラットフォームには内蔵リンカを導入し、外部リンカ(LD)を不要にする。
  • モジュール (unit) ハンドリングの書き直し。

ターゲットとなるシステム[編集]

版によって異なる。

Version 2.1.x (development version)[編集]

Version 2.0.x[編集]

現在の安定なバージョンは2.0.2(翻訳時点では2.0.4)で、次のシステムをサポートする

Version 1.0.x[編集]

以前の安定なリリース 1.0.x は次のシステムをサポートしている

ベータ版

関連項目[編集]

外部リンク[編集]

  • Free Pascal
  • Lazarus - FPC用RAD
  • FPC on Mac - Classic Mac OSへの移植状況(Mac OS Xへの移植はUNIXチームが行った)
  • Introduction to Free Pascal 2.0 - Daniël Mantione による新版の詳しい紹介。開発史も。
  • CrossFPC - さまざまな環境向けに、FPCをDelphi IDE風に統合する無料ツールキット。
  • FPS - FPC用Win32ベースのIDE。デバッガ(トレース、ブレークポイント、ウォッチウィンドウ)を含む。
  • Pixel image editor - FPCで記述したPhotoshop風画像エディタ。
  • FPC 4 GBA Initiative - ゲームボーイアドバンス向けFPCプロジェクト。