| フリーパスカル | |
|---|---|
Free Pascal 3.2.2 ヘルプ画面 | |
| 開発者 | フロリアン・クランプフルとボランティア |
| 初回リリース | 1997 (1997年) |
| 安定版リリース | 3.2.2 / 2021年5月20日 ( 2021-05-20 ) |
| プレビューリリース | 3.3.1 |
| リポジトリ | |
| 書かれた | オブジェクトパスカル |
| オペレーティング·システム | クロスプラットフォーム、組み込み |
| タイプ | コンパイラ、組み込みオペレーティングシステム |
| ライセンス | コンパイラおよびユーティリティ実行ファイルにはGNU一般公衆利用許諾書が適用されます。コンパイラで作成された実行ファイルの一部となるランタイム、パッケージ、コンポーネント、その他のライブラリには、静的リンクの例外が適用されるGNU劣等一般公衆利用許諾書が適用されます。 |
| Webサイト | フリーパスカル |
Free Pascal コンパイラ( FPC ) は、密接に関連するプログラミング言語方言であるPascalおよびObject Pascal用のコンパイラです。GNU General Public Licenseに基づいてリリースされたフリーソフトウェアですが、例外条項により、他のソフトウェアライセンスと組み合わせて、あらゆる目的でランタイムライブラリおよびパッケージへの静的リンクが許可されています。
独自のObject Pascal方言に加え、Borland Pascal(1990年のバージョン6までは「Turbo Pascal」という名称でした)、Borland(後にEmbarcadero)Delphi、そして一部の歴史的なMacintoshコンパイラなど、他のPascalファミリコンパイラの方言もある程度サポートしています。方言はユニット(モジュール)ごとに選択され、プログラムごとに複数の方言を使用できます。
「一度書けばどこでもコンパイルできる」という理念に基づき、多くのCPUアーキテクチャとオペレーティングシステムで利用可能です(ターゲットを参照)。インラインアセンブリ言語をサポートし、AT&TやIntelスタイルなど、複数の方言を解析できる内部アセンブラを搭載しています。
クロスプラットフォームのグラフィカルユーザー インターフェイス(GUI) アプリケーションの開発を容易にする個別のプロジェクトがあり、その中で最も有名なのはLazarus統合開発環境(IDE) です。
Free Pascalは当初、 Pascalプログラマの事実上の標準方言であるBorland Pascalを採用していましたが、後にDelphiのObject Pascalを採用しました。バージョン2.0以降、Delphiとの互換性は継続的に実装または改善されてきました。
このプロジェクトにはコンパイル モードの概念があり、開発者は、標準に準拠したモードを作成するために、米国規格協会(ANSI) と国際標準化機構(ISO)の標準化された方言の作業パッチを組み込むことを明らかにしました。
Classic Mac OSおよびmacOSとのインターフェースを容易にするため、Apple Pascal構文の一部をサポートするための小さな取り組みが行われました。Apple方言は、Turbo PascalやDelphiでは省略されている標準的なPascal機能の一部も実装しています。
2.2.xリリースシリーズでは、方言の目標は Delphi 7 レベルの構文程度しか変更されず、より高度な互換性が追求されました。注目すべき例外として、 Free Pascal バージョン 2.2.0 でジェネリクスのサポートが追加されたことが挙げられます。これは、Delphi がジェネリクスを何らかの形でサポートする数年前のことでした。
2011年には、開発ブランチにDelphi 2006固有の機能がいくつか追加され、Delphi 2009の新機能(特にUnicodeString型の追加)に向けた初期作業の一部が完了しました。開発ブランチには、 Objective-C(Cocoa )インターフェイス用のObjective-Pascal拡張も含まれています。
Free Pascal はバージョン 2.7.1 から ISO Pascal のサポートを追加しました。バージョン 3.0.0 では、standardpascal.org の P5 ISO Pascal コンパイラを、変更なしでコンパイルできるようになりました。
Free Pascal は、Borland がMS-DOS用の Borland Pascal の開発はバージョン 7 で終了することを明らかにしたときに作成されました。学生の Florian Paul Klämpfl は、GO32v1 DOS エクステンダ( DJ の GNU プログラミング プラットフォームプロジェクトによって開発および使用される) 用の32 ビットコードを生成する Turbo Pascal 方言で記述された独自のコンパイラの開発を開始しました。
当初、このコンパイラはTurbo Pascalでコンパイルされた16ビット実行ファイルでした。2年後、コンパイラは32ビット実行ファイルに コンパイルできるようになりました。
最初の32ビットコンパイラはインターネット上で公開され、最初の貢献者がプロジェクトに参加しました。その後、Linux向けの移植版は、 Borland Kylix PascalコンパイラがLinux向けにリリースされる 5年前に、Michael van Canneytによって作成されました。
DOS 版はEberhard Mattes eXtender (EMX)を用いてOS/2で使用できるように改造され、OS/2 は 2 番目にサポートされるコンパイル対象となりました。オリジナルの作者である Florian Klämpfl に加え、Daniël Mantione もこの実現に大きく貢献し、OS/2 と EMX へのランタイムライブラリのオリジナル移植版を提供しました。コンパイラは徐々に改良され、DOS 版は GO32v2 エクステンダに移行しました。その結果、リリース 0.99.5 がリリースされ、以前のバージョンよりもはるかに広く利用されるようになりました。これは Borland Pascal 準拠のみを目指した最後のリリースであり、その後のリリースでは Delphi 互換モードが追加されました。このリリースはMotorola 68000 ファミリ(m68k) プロセッサを搭載したシステムにも移植されました。
リリース0.99.8ではWin32ターゲットが追加され、Delphiの機能の一部が組み込まれました。ベータ版ではないリリースに向けての安定化作業が開始され、2000年7月にバージョン1.0がリリースされました。1.0.xシリーズは、ビジネスおよび教育の分野で広く利用されました。1.0.xリリースでは、 68k CPUへの移植がやり直され、コンパイラはいくつかの68k Unix系およびAmigaOSオペレーティングシステム向けに安定したコードを生成しました。
1.0.xとなるバージョンの安定化作業中、そしてモトローラ68kシステムへの移植作業中も、コードジェネレータの設計が多くの点であまりにも制限されていることが明らかになりました。主な問題は、プロセッサを追加するとコードジェネレータの書き換えが必要になること、そしてレジスタ割り当てがビルディングブロック間に常に3つの空きレジスタを確保するという原則に基づいていたため柔軟性に欠け、保守が困難だったことです。
これらの理由から、 1999年12月に1.0.xメインブランチから1.1.xシリーズが分岐しました。当初の変更点は、主にコンパイラ全体のクリーンアップと書き換え・再設計でした。コードジェネレータとレジスタアロケータも書き換えられ、残っていたDelphiとの互換性も強化されました。
1.1.x の開発はゆっくりと、しかし着実に進められました。2003 年末にはPowerPCへの移植版が利用可能になり、続いて2004 年夏にはARM への移植版、 2004 年秋にはSPARC への移植版、そして2004 年初頭にはx86-64 -AMD64 への移植版がリリースされ、コンパイラは 64 ビットプラットフォームでも利用可能になりました。
2003年11月、 1.1.xブランチの最初のベータリリースがパッケージ化され、1.9.0と番号が付けられました。その後すぐにバージョン1.9.2と1.9.4がリリースされ、後者ではOS Xのサポートが導入されました。作業は継続され、バージョン1.9.6(2005年1月)、1.9.8(2005年2月下旬)、2.0.0(2005年5月)、2.0.2(2005年12月)、そして2.0.4(2006年8月)がリリースされました。
2006 年には、ユニット システムの書き換えなど、2.2 で計画されていた主要な改修の一部はまだ開始されておらず、代わりに既に実装されている機能の安定化を開始することが決定されました。
このロードマップ変更の動機の一部は、Lazarus統合開発環境プロジェクトのニーズ、特に内部リンカー、Win64、Windows CE、x86上のOS Xのサポート、そしてDWARFなどの関連機能でした。ベータ版2.1.2と2.1.4の後、2007年9月にバージョン2.2.0がリリースされ、2008年8月にはバージョン2.2.2、2009年3月にはバージョン2.2.4がリリースされました。
2.2.xシリーズでは、 ActiveXとコンポーネントオブジェクトモデル(COM)インターフェース、そしてオブジェクトのリンクと埋め込み(OLE)のサポートが大幅に改善されましたが、依然としてバグが見つかっています。キーワードを用いたインターフェースへの委譲はimplements部分的に実装されていましたが、2011年3月時点では完了していませんでした。[ 1 ] ActiveXのライブラリサポートも改善されました。
もう一つの大きな特徴は、Win32、Win64、Windows CE用の内部リンカーです。これにより、リンク時間とメモリ使用量が大幅に改善され、Lazarusのコンパイル・リンク・実行サイクルが大幅に高速化されました。スマートリンク、つまりデッドコード除去の効率も向上しました。
マイナーな新機能としては、DWARF (2/3) デバッグ形式のサポートの改善、末尾再帰、不要なスタックフレームの省略、レジスタベースの共通部分式除去(CSE) 最適化などの最適化が含まれます。ジェネリックプログラミング(generics) サポートの最初の実装も利用可能になりましたが、これは試験的なものでした。
2.4.x リリースシリーズは、以前のリリースに比べて目標が明確ではありませんでした。ユニットシステムの書き換えは再び延期され、2.2 からのリスクの高いコミットを保留して安定化を図るために、2.4 となるブランチが作成されました。これらのリスクの高いコミットは主に、新しいプラットフォーム(Mac PowerPC 64、Mac x86-64、iPhone)へのより複雑な改善、そして ARM および x86-64 アーキテクチャ全般、そして DWARF への多くの修正でした。
その他のコンパイラの改善には、プログラム全体の最適化(WPO) と仮想化解除、および ARM組み込みアプリケーション バイナリ インターフェイス(EABI) のサポートが含まれます。
その後、2.2サイクル中に、よりDelphiに似たリソースサポート(Pascal定数ではなくバイナリ内の特殊セクションに基づく)が追加されました。この機能はLazarusに強く求められており、このブランチの最大のハイライトとなりました。
その他のより小さな追加としては、スレッド環境でのヒープマネージャのパフォーマンスを向上させるメモリ マネージャ、などの Delphi 互換性の小さな改善、およびインターフェイス委任の改善が挙げられます。 OleVariant
2010年1月1日にFree Pascal 2.4.0がリリースされ、続いて2010年11月13日にバグ修正リリース2.4.2がリリースされ、for..inループsealedやabstractクラスのサポートなどの変更が行われました。[ 2 ]
2012年1月、Free Pascal 2.6がリリースされました。2.6リリースシリーズの最初のバージョンであるこのバージョンでは、OS XおよびiOSターゲットのObjective Pascalもサポートされ、多くの小さな改良とバグ修正が行われました。2013年2月には、Free Pascal 2.6.2がリリースされました。このバージョンには、1.0.10以来初めて、新規移植版に基づくNetBSDおよびOpenBSDリリースが含まれていました。2014年3月には、2.6シリーズの最後のポイントリリースである2.6.4がリリースされました。このリリースでは、主にデータベース(fcl-db)のアップデートが行われました。
バージョン3.0.0は2015年11月25日にリリースされ、2012年1月1日以来の最初のメジャーリリースとなった。このリリースでは多くの新しい言語機能が導入された。[ 3 ]
バージョン3.0.2は2017年2月15日にリリースされ、バグ修正とコンパイラのマイナーアップデートが含まれています。 バージョン3.0.4は2017年11月28日にリリースされました。ELF (実行可能およびリンク可能形式) 用の内部リンカー、iOSおよびLinux用のArm AARCH64、i8086プラットフォームの復活、拡張ライブラリなど、以前のバージョンに比べて多くの言語機能強化が含まれています。
次のメジャーリリースであるバージョン3.2.0は、2020年6月19日に公開されました。このリリースでは、ジェネリックルーチン、標準名前空間、マネージドレコード、動的配列の機能拡張など、多くの新しい言語機能が導入されたほか、新しい標準ユニットの導入や追加プラットフォームのサポートも行われました。[ 4 ]
バージョン3.2.2は2021年5月20日にリリースされ、AArch64上のmacOSとスレッド命名をサポートしています。さらに、バグ修正とコンパイラのマイナーアップデートが含まれています。[ 5 ]
リリース候補版であるFPC 3.2.4-rc1は2025年6月にテスト用に利用可能になった。[ 6 ]
2025年7月現在、開発バージョン3.3.1はファイルとしてダウンロード可能でしたfpc.zip。[ 7 ]アーカイブの最新のメンバー(のメンバーがftp.zip抽出された日付を示すファイルを除く)は、2023年9月15日のものでした。
| プロセッサアーキテクチャ | オペレーティングシステム、デバイス | バージョン 3.2.2 または 3.3.1 (トランク) | バージョン 3.0.0 - 3.2.0 | バージョン2.6.2 | バージョン2.6.0 | バージョン2.4.4 | バージョン2.4.2 | バージョン2.4.0 | バージョン2.2.4 | バージョン2.0.x | バージョン1.0.x |
|---|---|---|---|---|---|---|---|---|---|---|---|
| i386 | DOS ( GO32v2エクステンダー) | はい | はい | はい | はい | はい | はい | はい | はい | はい | はい |
| フリーBSD | はい | はい | はい | はい | はい | はい | はい | はい | はい | はい | |
| オープンBSD | はい | はい | はい | いいえ | いいえ | いいえ | いいえ | いいえ | いいえ | はい | |
| ネットBSD | はい | はい | はい | いいえ | いいえ | いいえ | いいえ | いいえ | いいえ | はい | |
| リナックス | はい | はい | はい | はい | はい | はい | はい | はい | はい | はい | |
| macOS | はい | はい | はい | はい | はい | はい | はい | はい | いいえ | いいえ | |
| OS/2 | はい | はい | はい | はい | はい | はい | はい | はい | はい | はい | |
| ウィンドウズ | はい | はい | はい | はい | はい | はい | はい | はい | はい | はい | |
| ウィンドウズCE | はい | はい | はい | はい | はい | はい | はい | いいえ | いいえ | いいえ | |
| ベオス | はい | はい | はい | はい | はい | はい | はい | はい | はい | はい | |
| 俳句 | はい | はい | はい | はい | はい | はい | はい | いいえ | いいえ | いいえ | |
| ネットウェア | はい | はい | はい | はい | はい | はい | はい | はい | はい | いいえ | |
| ソラリス | はい | はい | はい | はい | はい | はい | いいえ | いいえ | いいえ | はい | |
| iPhone SIM | はい | はい | はい | はい | いいえ | いいえ | いいえ | いいえ | いいえ | いいえ | |
| QNX ニュートリノ | はい | いいえ | いいえ | いいえ | いいえ | いいえ | いいえ | いいえ | いいえ | はい | |
| アンドロイド | はい | はい | はい | いいえ | いいえ | いいえ | いいえ | いいえ | いいえ | いいえ | |
| アロス | はい | はい | いいえ | いいえ | いいえ | いいえ | いいえ | いいえ | いいえ | いいえ | |
| x86-64 | フリーBSD | はい | はい | はい | はい | はい | はい | いいえ | いいえ | いいえ | いいえ |
| オープンBSD | はい | はい | はい | 未知 | 未知 | 未知 | 未知 | 未知 | 未知 | 未知 | |
| ネットBSD | はい | はい | はい | 未知 | 未知 | 未知 | 未知 | 未知 | 未知 | 未知 | |
| リナックス | はい | はい | はい | はい | はい | はい | はい | はい | 未知 | いいえ | |
| macOS | はい | はい | はい | はい | はい | はい | はい | いいえ | いいえ | いいえ | |
| ウィンドウズ | はい | はい | はい | はい | はい | はい | はい | いいえ | いいえ | いいえ | |
| iPhone SIM | はい | はい | はい | はい | いいえ | いいえ | いいえ | いいえ | いいえ | いいえ | |
| アロス | はい | はい | はい | はい | はい | はい | いいえ | いいえ | いいえ | いいえ | |
| ドラゴンフライBSD | はい | はい | はい | はい | はい | はい | いいえ | いいえ | いいえ | いいえ | |
| ソラリス | はい | はい | はい | はい | はい | はい | いいえ | いいえ | いいえ | いいえ | |
| 俳句 | はい | はい | いいえ | いいえ | いいえ | いいえ | いいえ | いいえ | いいえ | いいえ | |
| アンドロイド | はい | はい | いいえ | いいえ | いいえ | いいえ | いいえ | いいえ | いいえ | いいえ | |
| アーム | iOS | はい | はい | はい | はい | はい | はい | はい | いいえ | いいえ | いいえ |
| ゲームボーイアドバンス | はい | はい | はい | はい | はい | はい | はい | いいえ | いいえ | いいえ | |
| ニンテンドーDS | はい | はい | はい | はい | はい | はい | はい | いいえ | いいえ | いいえ | |
| リナックス | はい | はい | はい | はい | はい | はい | はい | はい | 未知 | いいえ | |
| ウィンドウズCE | はい | はい | はい | はい | はい | はい | はい | はい | 未知 | いいえ | |
| アンドロイド | はい | はい | はい | いいえ | いいえ | いいえ | いいえ | いいえ | いいえ | いいえ | |
| 埋め込み | はい | はい | はい | いいえ | いいえ | いいえ | いいえ | いいえ | いいえ | いいえ | |
| 組み込みRaspberry Pi | はい | はい | いいえ | いいえ | いいえ | いいえ | いいえ | いいえ | いいえ | いいえ | |
| アロス | はい | はい | いいえ | いいえ | いいえ | いいえ | いいえ | いいえ | いいえ | いいえ | |
| AArch64 | リナックス | はい | はい | はい | いいえ | いいえ | いいえ | いいえ | いいえ | いいえ | いいえ |
| iOS | はい | はい | はい | いいえ | いいえ | いいえ | いいえ | いいえ | いいえ | いいえ | |
| アンドロイド | はい | はい | いいえ | いいえ | いいえ | いいえ | いいえ | いいえ | いいえ | いいえ | |
| macOS | はい | いいえ | いいえ | いいえ | いいえ | いいえ | いいえ | いいえ | いいえ | いいえ | |
| AVR | 埋め込み | はい | はい | いいえ | いいえ | いいえ | いいえ | いいえ | いいえ | いいえ | いいえ |
| パワーPC | リナックス | はい | はい | はい | はい | はい | はい | はい | はい | はい | いいえ |
| macOS | はい | はい | はい | はい | はい | はい | はい | はい | はい | いいえ | |
| クラシックMac OS | はい | はい | はい | はい | はい | いいえ | いいえ | はい | はい | いいえ | |
| アミーガOS4 | はい | はい | はい | はい | はい | 未知 | 未知 | 未知 | はい | いいえ | |
| モルフOS | はい | はい | はい | はい | はい | 未知 | 未知 | 未知 | はい | いいえ | |
| AIX | はい | はい | はい | はい | いいえ | いいえ | いいえ | いいえ | いいえ | いいえ | |
| Wii | はい | はい | はい | はい | はい | いいえ | いいえ | いいえ | いいえ | いいえ | |
| PowerPC 64ビット | リナックス | はい | はい | はい | はい | はい | はい | はい | はい | いいえ | いいえ |
| macOS | はい | はい | はい | はい | はい | はい | はい | いいえ | いいえ | いいえ | |
| AIX | はい | はい | はい | はい | いいえ | いいえ | いいえ | いいえ | いいえ | いいえ | |
| SPARC | ソラリス | はい | はい | はい | はい | はい | はい | いいえ | いいえ | いいえ | いいえ |
| ネットBSD | はい | はい | はい | はい | はい | はい | いいえ | いいえ | いいえ | いいえ | |
| 埋め込み | はい | はい | はい | はい | はい | はい | いいえ | いいえ | いいえ | いいえ | |
| リナックス | はい | はい | はい | はい | はい | はい | いいえ | いいえ | いいえ | いいえ | |
| SPARC64 | リナックス | はい | はい | はい | はい | いいえ | いいえ | いいえ | いいえ | いいえ | いいえ |
| RISC-V | 埋め込み | はい | はい | いいえ | いいえ | いいえ | いいえ | いいえ | いいえ | いいえ | いいえ |
| RISC-V64 | 埋め込み | はい | はい | いいえ | いいえ | いいえ | いいえ | いいえ | いいえ | いいえ | いいえ |
| Java仮想マシン | ジャワ | はい | はい | いいえ | いいえ | いいえ | いいえ | いいえ | いいえ | いいえ | いいえ |
| アンドロイド | はい | はい | いいえ | いいえ | いいえ | いいえ | いいえ | いいえ | いいえ | いいえ | |
| MIPS(BEおよびLE) | リナックス | はい | はい | いいえ | いいえ | いいえ | いいえ | いいえ | いいえ | いいえ | いいえ |
| 埋め込み | はい | はい | いいえ | いいえ | いいえ | いいえ | いいえ | いいえ | いいえ | いいえ | |
| 8086(16ビット) | ドス | はい | はい | いいえ | いいえ | いいえ | いいえ | いいえ | いいえ | いいえ | いいえ |
| Win16 | はい | はい | いいえ | いいえ | いいえ | いいえ | いいえ | いいえ | いいえ | いいえ | |
| 埋め込み | はい | はい | いいえ | いいえ | いいえ | いいえ | いいえ | いいえ | いいえ | いいえ | |
| m68k | リナックス | はい | はい | いいえ | いいえ | いいえ | いいえ | いいえ | いいえ | いいえ | はい |
| ネットBSD | はい | はい | いいえ | いいえ | いいえ | いいえ | いいえ | いいえ | いいえ | はい | |
| アミーガOS | はい | はい | いいえ | いいえ | いいえ | いいえ | いいえ | いいえ | いいえ | はい | |
| アタリ利用規約 | はい | はい | いいえ | いいえ | いいえ | いいえ | いいえ | いいえ | いいえ | はい、限定的なクロスコンパイラのみ | |
| パームOS | はい | はい | いいえ | いいえ | いいえ | いいえ | いいえ | いいえ | いいえ | 未知 | |
| Z80 | 埋め込み | はい | いいえ | いいえ | いいえ | いいえ | いいえ | いいえ | いいえ | いいえ | いいえ |
| ZXスペクトラム | はい | いいえ | いいえ | いいえ | いいえ | いいえ | いいえ | いいえ | いいえ | いいえ | |
| MSX-DOS | はい | いいえ | いいえ | いいえ | いいえ | いいえ | いいえ | いいえ | いいえ | いいえ | |
| Webアセンブリ | ウェブブラウザ | はい | いいえ | いいえ | いいえ | いいえ | いいえ | いいえ | いいえ | いいえ | いいえ |
Free Pascal はバージョン 3.0.0 からJava 仮想マシンのバイトコード生成もサポートしており、Oracle の Java と Google の Android JVM の両方をターゲットにしていますが[ 8 ] 、 Object Pascal の構文は完全にはサポートされていません。Free Pascal 3.0.0 はRaspberry Piなどの ARMHF プラットフォームもサポートしており、Raspbian で実行される ARMV6-EABIHF も含まれます。64 ビット ARM への取り組みにより、3.0.0 では iOS もサポートされるようになりました。ネイティブ ARM Android ターゲットが追加され、以前は Android 用のネイティブ ARM ライブラリを生成するためにハッキングされていた ARM Linux ターゲットは終了しました。これにより、Lazarus アプリケーションを Android に移植することが容易になりました (Custom Drawn Interface [ 9 ]を使用)。FPC 2.6.2 以降、OpenBSDとNetBSDは IA32 および X86_64 アーキテクチャでサポートされています。OS なしの使用 (主に ARM Cortex M と MIPS) 向けに、新しいターゲットembedded が追加されました。 InstantFPC を使用すると、ジャストインタイムで変換された Pascal プログラムを Unix スクリプトまたはCGIバックエンド として実行できます。
Ultibo coreは、Raspberry Pi用の組み込みまたはベアメタル開発環境です。[ 10 ] UltiboはFree Pascalをベースにしており、Lazarusの改良版で開発されています。IDEはPCベースですが、LinuxとMacにも移植されています。UltiboはOSレスのランタイムで、ほとんどの機能をサポートしており、プログラマーはRTLユニットを介してハードウェアを完全に制御できます。ランタイムはマルチスレッド、プリエンプティブマルチタスクを実装しています。プログラマーは特定のCPUにスレッドを配置することも、ランタイムに負荷を自動的に分散させることも、その両方を行うこともできます。Raspberry Piのほとんどのモデル(A、B、A+、B+、Raspberry Pi 2B、3B、4B/400/CM4、Zero)がサポートされています。[ 11 ]
ほとんどの現代的なコンパイラと同様に、Free Pascalは統合開発環境(IDE)で使用できます。独立したIDEに加えて、既存の様々なIDEへのプラグインも提供されています。


コンパイラと IDE の他に、Free Pascal は次のライブラリを提供します。