Movatterモバイル変換


[0]ホーム

URL:


コンテンツにスキップ
Wikipedia
検索

Free Pascal

出典: フリー百科事典『ウィキペディア(Wikipedia)』
この記事は検証可能参考文献や出典が全く示されていないか、不十分です。出典を追加して記事の信頼性向上にご協力ください。このテンプレートの使い方
出典検索?"Free Pascal" – ニュース ·書籍 ·スカラー ·CiNii ·J-STAGE ·NDL ·dlib.jp ·ジャパンサーチ ·TWL
(2025年10月)
Free Pascal Compiler
CygwinのコマンドラインでFPCを操作
開発元Florian Klämpfl と 有志
最新版
3.2.2 /2021年5月20日 (4年前) (2021-05-20)
最新評価版
3.3.1 /2018年8月18日 (7年前) (2018-08-18)
リポジトリウィキデータを編集
対応OSクロスプラットホーム
種別コンパイラ
ライセンスGPL
公式サイトwww.freepascal.org
テンプレートを表示
Linux用FPC IDE。2002年のNational Olympiad in Informatics, Chinaのための準備をしている
Windows版Lazarus 1.2.6 (Free Pascal 2.6.4)

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

概説

[編集]

Free Pascalは、複数のCPUアーキテクチャ(32ビット/64ビット)、複数のオペレーティングシステム (OS) をサポートするコンパイラであり、広く用いられる各種システム向けに移植されている。言語仕様はObject Pascalに加えて、Turbo PascalDelphi、そして過去に存在したMacintoshコンパイラの方言に対応している。

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

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

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

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

ライブラリは、基本プログラムに必要な「Run-Time Library (RTL)」と、多種多様なクラスや(データベースなどの)非ビジュアルコンポーネントで構成された「Free Component Library (FCL)」がある。

Free Pascal コンパイラを採用したオープンソースのIDEであるLazarusには、Delphi のVisual Component Library (VCL) と高い互換性を持つLazarus Component Library (LCL) があり、Free PascalのRTLとFCLを組み合わせてGUIアプリケーションを開発できる。

言語仕様

[編集]

FPCはPascalの方言のうちで、デファクトスタンダードとなっているBorland PascalとDelphiを採用している。バージョン2.0以降、Delphi7互換性は継続的に実施または改善された。

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

コンパイラには複数の「コンパイル互換モード」を持っており、Default(ANSI/ISO標準)モード、Delphi互換モード、Turbo Pascal互換モード、FPCモード、Object Pascalモード、Mac Pascalモードがある。

歴史

[編集]

はじまり

[編集]

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

拡大

[編集]

最初の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向けの移植が再度行われ、多くの68k用UNIXや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月に公開された。

2012年1月に公開された 2.6.0 は、ネストした型、クラス変数、クラス/型ヘルパー、レコードのfor..inなどが実装され、Delphi互換性が向上した。さらにMac OS XとiOSを対象としたObjective Pascalの方言もサポートした。2013年2月に公開された 2.6.2 は、ARMアーキテクチャコンパイラの改良およびNetBSDOpenBSDに関する多数の不具合修正が行われた。最新安定版の2.6.4(2014年3月公開)ではデータベース接続パッケージfcl-dbに対して多くの改良と修正が行われた。

バージョン 3.0の新機能

[編集]
言語
  • 名前空間ユニット(ドットを含むユニット名をサポート, Delphi互換)
  • 動的配列コンストラクタ(クラスのCreate関数のような生成関数をサポート, Delphi互換)
  • Default関数(指定した型の初期値を返す関数, Delphi互換)
  • 型ヘルパー(文字列リテラルや数値リテラルのような基本型のヘルパー, Delphi互換)
  • コードページ情報を含むANSI文字列(Delphi互換)
コード生成
  • Class field reordering
  • Removing the calculation of dead values
  • Shortcuts to speed up floating point calculations
  • Constant propagation
  • Dead store elimination
  • Node dfa for liveness analysis
ユニットとパッケージ
  • TDBF - Visual FoxProファイルをサポート
  • Bufdataset - ftAutoIncフィールドをサポート
  • TDBF, bufdataset (and descendents such as TSQLQuery) allow escaped delimiters in string expression filter
  • TODBCConnection(odbcconn) - 64ビットODBCをサポート
  • TZipper - zip64フォーマットをサポート
  • より多くのファイル関連RTLルーティンでマルチコードページとUnicodeをサポート
  • SQL parser/generatorの改良
ツールなど
  • 新しいPas2jniユーティリティ
macOS / iOS
  • 新しいiosxlocaleユニット
新しいコンパイラターゲット
  • Java Virtual MachineとDalvik(Android)のJavaコード生成をサポート
  • AIX(5.3以降)をサポート
  • 16ビットリアルモードMS-DOSをサポート
  • Android(ARM、x86、MIPS)をサポート
  • armhf EABIをサポート
  • AROS(i386-ABIv0、i386-ABIv0-on-trunk)をサポート

ターゲットとなるシステム

[編集]
アーキテクチャOS / デバイスバージョン
3.0.02.6.22.6.02.4.42.4.22.4.02.2.42.0.x1.0.x
i386DOS Extender (GO32V2)YesYesYesYesYesYesYesYesYes
FreeBSDYesYesYesYesYesYesYesYesYes
OpenBSDYesYes???????
NetBSDYesYes??????Yes
LinuxYesYesYesYesYesYesYesYesYes
macOSYesYesYesYesYesYesYesNoNo
OS/2YesYesYesYesYesYesYesYesYes
WindowsYesYesYesYesYesYesYesYesYes
Windows CEYesYesYesYesYesYesNoNoNo
HaikuYesYesYesYesYesYesNoNoYes[注 1]
NetWare???????YesNo
SolarisYesYesYesYesYesNoNoNoYes
iPhoneSimYesYesYesNoNoNoNoNoNo
QNXNoNoNoNoNoNoNoNoYes
x86-64FreeBSDYesYesYesYesYesNoNoNoNo
OpenBSDYesYes???????
NetBSDYesYes???????
LinuxYesYesYesYesYesYesYes?No
macOSYesYesYesYesYesYesNoNoNo
WindowsYesYesYesYesYesYesNoNoNo
SolarisYesYesYesYesYesNoNoNoNo
ARMiOSYesYesYesYesYesYesNoNoNo
Game Boy AdvanceYes (GBA)YesYesYesYesYesNoNoNo
Nintendo DSYesYesYesYesYesYesNoNoNo
LinuxYesYesYesYesYesYesYes?No
Windows CEYesYesYesYesYesYesYes?No
AndroidYesNoNoNoNoNoNoNoNo
組み込みシステムYesNoNoNoNoNoNoNoNo
PowerPCLinuxYesYesYesYesYesYesYesYesNo
macOSYesYesYesYesYesYesYesYesNo
Mac OS Classic????NoNoYesYesNo
MorphOSYesYesYesYes???YesNo
AIXYesYesYesNoNoNoNoNoNo
PowerPC 64-bitLinuxYesYesYesYesYesYesYesNoNo
macOSYesYesYesYesYesYesNoNoNo
AIXYesYesYesNoNoNoNoNoNo
SPARCSolarisYesYesYesYesYes[注 2]NoNoNoNo
LinuxYesYesYesYesYesYesYes?No
JVMJavaYesNoNoNoNoNoNoNoNo
AndroidYesNoNoNoNoNoNoNoNo
MIPS (BE and LE)LinuxYesNoNoNoNoNoNoNoNo
組み込みシステムYesNoNoNoNoNoNoNoNo
8086 (16ビット)DOSYesNoNoNoNoNoNoNoNo
M68000ファミリLinuxYesNoNoNoNoNoNoNoYes
NetBSD?NoNoNoNoNoNoNoYes
AmigaOSYesNoNoNoNoNoNoNoYes
Atari TOS英語版NoNoNoNoNoNoNoNoYes[注 3]
  1. ^BeOSのみ
  2. ^32bitのみ
  3. ^制限されたクロスコンパイラのみ

関連項目

[編集]

外部リンク

[編集]
  • Free Pascal
  • Lazarus - FPC用RAD
  • FPC on Mac - Classic Mac OSへの移植状況(macOSへの移植は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プロジェクト。
典拠管理データベース: 国立図書館ウィキデータを編集
https://ja.wikipedia.org/w/index.php?title=Free_Pascal&oldid=106923223」から取得
カテゴリ:
隠しカテゴリ:

[8]ページ先頭

©2009-2026 Movatter.jp