フリーパスカル

フリーパスカル
開発者フロリアン・クランプフルボランティア
初回リリース1997 (1997年
安定版リリース
3.2.2 / 2021年5月20日 ( 2021-05-20 )
プレビューリリース
3.3.1
リポジトリ
書かれたオブジェクトパスカル
オペレーティング·システムクロスプラットフォーム組み込み
タイプコンパイラ組み込みオペレーティングシステム
ライセンスコンパイラおよびユーティリティ実行ファイルにはGNU一般公衆利用許諾書が適用されます。コンパイラで作成された実行ファイルの一部となるランタイム、パッケージ、コンポーネント、その他のライブラリには、静的リンクの例外が適用されるGNU劣等一般公衆利用許諾書が適用されます。
Webサイトフリーパスカル.org ウィキデータで編集する

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-CCocoa )インターフェイス用の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オペレーティングシステム向けに安定したコードを生成しました。

バージョン2

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月)がリリースされました。

バージョン 2.2.x

2006 年には、ユニット システムの書き換えなど、2.2 で計画されていた主要な改修の一部はまだ開始されておらず、代わりに既に実装されている機能の安定化を開始することが決定されました。

このロードマップ変更の動機の一部は、Lazarus統合開発環境プロジェクトのニーズ、特に内部リンカー、Win64Windows CEx86上の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.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ループsealedabstractクラスのサポートなどの変更が行われました。[ 2 ]

バージョン 2.6.x

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.x

バージョン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.x

次のメジャーリリースであるバージョン3.2.0は、2020年6月19日に公開されました。このリリースでは、ジェネリックルーチン、標準名前空間、マネージドレコード、動的配列の機能拡張など、多くの新しい言語機能が導入されたほか、新しい標準ユニットの導入や追加プラットフォームのサポートも行われました。[ 4 ]

バージョン3.2.2は2021年5月20日にリリースされ、AArch64上のmacOSとスレッド命名をサポートしています。さらに、バグ修正とコンパイラのマイナーアップデートが含まれています。[ 5 ]

リリース候補版であるFPC 3.2.4-rc1は2025年6月にテスト用に利用可能になった。[ 6 ]

バージョン 3.3.x

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
i386DOS ( 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 以降、OpenBSDNetBSDは 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へのプラグインも提供されています。

Windows 10のLazarus IDE
Linuxの Free Pascal IDE でドイツ語「Hello, World!」プログラムを表示する
  • Free Pascal には、Turbo Pascal の IDE に似た独自のテキストモードIDE があります。これは、Turbo Vision のクローンである Free Vision フレームワーク(Free Pascal にも含まれています)を使用して作成されています。Turbo Pascal IDE の多くの機能に加え、コード補完機能や複数のヘルプファイル形式(HTML、Microsoft Compiled HTML Help (CHM)、Information Presentation Facility (IPF))のサポートも備えています。IDE はコマンドラインツールではなく、コマンドラインコンパイラとデバッガ(libgdb または GDBMI を使用)と同じソースコードに基づく独自の組み込みコンパイラを使用して機能を提供します。

バンドルライブラリ

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

Free Pascalで作成されたソフトウェアの例

  • Beyond Compareは、Windows、OS X、Linux用のデータ比較ユーティリティです。Linux版とOS X版はLazarus/FPCでコンパイルされています。
  • Cartes du Cielは、Linux、OS X、Windowsで動作する無料のプラネタリウムプログラムです。望遠鏡で見えるほとんどの星座、惑星、天体を地図に表示し、ラベル付けします。Lazarus/FPCで完全に記述され、GPLライセンスの下で公開されています。
  • Cheat Engineは、プロプライエタリでソースコードも入手可能なフリーウェアのメモリスキャナ、バイナリエディタ、デバッガです。コンピュータゲームでのチート行為に使用できます。バージョン6.0以降はLazarus/FPCでコンパイルされています。
  • Double Commanderは、Microsoft Windows 専用の Total Commander にヒントを得た、オープンソースのマルチプラットフォーム 2 パネル オーソドックス ファイル マネージャーです。
  • Free Pascal はObject Pascalとアセンブリ言語で書かれており、自己コンパイルされます。
  • HNSKY、Hallo Northern Sky は Windows と Linux 用の無料プラネタリウムプログラムです。バージョン 3.4.0 以降は Lazarus/FPC で作成・コンパイルされています。
  • Lazarus : グラフィカル アプリケーションを迅速に開発するための、Free Pascal 関連の Delphi のようなソフトウェア パッケージ。
  • Morfik : Morfik WebOS AppBuilder は Free Pascal を使用して CGI バイナリを生成します。
  • MyNotexは、Linux 用の無料のメモ作成およびメモ管理ソフトウェアです。
  • Nimコンパイラの初期バージョンは、 Nimでセルフホスティングされるようになる前はFree Pascalで開発されていました。 [ 12 ]
  • Peazip は、Lazarus/FPC で作成されたオープンソースのアーカイバです。
  • 以前は Python で書かれていたTorChat は、現在 Free Pascal と Lazarus で書き直されています。

参照

  • fpGUI Free Pascal GUIツールキット – Object Pascalで実装されたクロスプラットフォームでカスタム描画可能なツールキット

参考文献

公式サイト

概要

ゲーム開発に特化したサイト