Free Pascal
| cygwinのコマンドラインでFPCを操作 | |
| 開発元 | 有志 |
|---|---|
| 最新版 | 2.6.2 / 2013年02月23日 |
| 対応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の内蔵アセンブラは、複数のアーキテクチャと表記法をサポートしている。
[編集] 言語仕様
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向けの移植が再度行われ、多くの68kUNIXやAmiga用の安定なコードを生成するようになった。
[編集] 新時代
後に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)
- Win64
- Mac OS X (on Intel)
- PowerPC 64-bit
- WinCE
- ゲームボーイアドバンス (standard ARM only)
[編集] Version 2.0.x
現在の安定なバージョンは2.0.2(翻訳時点では2.0.4)で、次のシステムをサポートする
[編集] Version 1.0.x
以前の安定なリリース 1.0.x は次のシステムをサポートしている
- CPU
- Intel 80386 及び互換チップ
- Motorola 680x0
- OS
ベータ版
[編集] 関連項目
- Lazarus - RAD環境
- Turbo Pascal
- Delphi
[編集] 外部リンク
- 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プロジェクト。