Free PascalがDynamic Package対応を正式リリース

原題: Free Pascal compiler now supports dynamic packages

なぜ重要か

オープンソースのPascal開発環境が本格的なプラグインアーキテクチャを獲得したことで、業務系レガシーシステムのモジュール化やIDEの拡張性が大きく改善される。

Free Pascal CompilerおよびLazarus IDEが、Dynamic Package機能の初回リリースを公開した。Linux・Windows・macOSに対応した共有ライブラリ形式を採用し、IDE全体を再ビルドすることなくコンポーネントやプラグインをインストール・配備できる。RTLにはDynPkgTypes.pasが新設され、パッケージのロード・列挙・アンロードを実行時に行う関数群が提供される。

Free Pascal CompilerとLazarus IDEに、長年の要望だったDynamic Package機能が実装された。今回のリリースは同プロジェクトの公式サイトからダウンロード可能で、全プラットフォーム向けインストーラーに同機能が含まれる。

Dynamic Packageは標準的な共有ライブラリファイル(.so/.dll/.dylib)として実装されており、コンパイラが生成する追加のメタデータを内包する。これにより、Lazarus IDEを再ビルドせずに数秒でコンポーネントや拡張機能をインストールできる。また、アプリケーション側でも実行中にパッケージを差し替えられるプラグインシステムを構築可能だ。単一の実行ファイルへのバンドルも引き続き選択できる。

RTLには新ユニット「DynPkgTypes.pas」が追加され、TPackageType型を通じてパッケージ内の型名・種別・RTTIなどを照会できる。スレッド変数の安全な保全、文字列や動的配列といった動的型のパッケージ間管理機構も整備されている。

一方でいくつかの制約もある。パッケージ名と同名のユニットは持てない(例:ElectroTools.lpkの場合、ユニット一覧ファイルはElectroToolsPackage.pasに自動変換)。また、パッケージ間でのユニット名の一意性が求められ、重複があればどちらかを選択するか名前を変更する必要がある。さらにDynamic Packageは通常の共有ライブラリより大きくなり、ストリップを行うとメタデータが失われパッケージとして機能しなくなる点にも注意が必要だ。

Lazarus IDE側にも複数の改良が加えられており、起動時の進捗表示など操作体験の向上が図られているとされる。

出典

getlazarus.org — 元記事を読む →