Free Pascal
出典: フリー百科事典『ウィキペディア(Wikipedia)』
cygwinのコマンドラインでFPCを操作 |
|
開発元: | 有志 |
最新版: | 2.0.4 / 2006年8月28日 |
対応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)。兎も角、ドイツ語で Comiler を Kompiler と綴ることは一般的ではない。プロジェクトの参加者が増えたため、誤解を避ける目的から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)で、次のシステムをサポートする
CPUによる分類:
OSによる分類:
- Linux: 全てのCPU
- FreeBSD
- Mac OS Classic(2.0.0まで)
- DOS: エクステンダとして Go32V2 を用いる。組込用には PMode が用いられることがある。
- Win32
- OS/2: EMX 及びネイティブ
- Novell NetWare
[編集] Version 1.0.x
以前の安定なリリース 1.0.x は次のシステムをサポートしている
CPUによる分類:
- Intel 80386 及び互換チップ
- Motorola 680x0
OSによる分類:
- Linux: x86/m68k
- FreeBSD
- NetBSD: x86/m68k
- DOS: エクステンダとして Go32V2 を用いる。組込用には PMode が用いられることがある。
- Win32
- OS/2: EMX
- Amiga Classic, m68k
ベータ版は
[編集] 関連項目
- 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 , by Daniël Mantione による新版の詳しい紹介。開発史も。
- CrossFPC - さまざまな環境向けに、FPCをDelphi IDE風に統合する無料ツールキット。詳細はメーリングリスト this mailing list discussion にて。
- FPS FPC用Win32ベースのIDE。デバガ(トレース、ブレークポイント、ウォッチウィンドウ)を含む。
- Pixel image editor - FPCで記述したPhotoshop風画像エディタ。
- FPC 4 GBA Initiative ゲームボーイアドバンス向けFPCプロジェクト。
カテゴリ: コンパイラ | ソフトウェア開発ツール | フリーソフトウェア | Pascal