Free Pascal Compiler (FPC) および、Pascal用のオープンソース開発環境であるLazarus IDEにおいて、完全な動的パッケージサポートを導入するメジャーアップデートがリリースされました。この機能により、開発者はコンポーネント、コントロール、およびIDE拡張機能を数秒で作成・インストールすることが可能になります。以前は、これらの要素に大幅な変更を加える際、IDE全体またはアプリケーション全体のフルリビルドが必要になることが多くありました。動的パッケージを使用することで、これらのコンポーネントは実行時にロードおよび更新が可能になり、ネイティブなPascalクラスや型を動的パッケージライブラリを通じて公開する、よりモジュール式のプラグインシステムが促進されます。

これを実現するために、開発チームはコンパイラ、ランタイムライブラリ (RTL)、およびLazarus IDEに対して広範な改善を実施しました。新しいシステムは、Linux、Windows、macOS用の標準的な共有ライブラリファイルを使用し、これらにはコンパイラによって生成された特殊なメタデータが含まれています。ランタイムには、文字列や動的配列などの動的型を安全に管理し、異なるパッケージ境界を越えてスレッド変数を保持するメカニズムが含まれています。また、開発者がこれらのパッケージの内容やRTTI(実行時型情報)を検査およびクエリできるように支援する新しいRTLユニット `DynPkgTypes.pas` が追加されました。

このアップデートは大きな柔軟性を提供する一方で、特定の技術的な制約も導入しています。例えば、パッケージ内のユニットはパッケージ自体と同じ名前を持つことができず、コンパイラは競合を防ぐためにソースファイル名に自動的に 'Package' を付加するようになりました。さらに、衝突を避けるために、ユニット名はすべてのインストール済みパッケージ全体で一意である必要があります。動的パッケージは内部コンテンツの包括的なマップを含んでいるため、標準的な共有ライブラリよりもサイズが大きく、これらのパッケージから情報をストリップ(削除)すると動的機能が損なわれます。これらの変更は、FPCエコシステムを近代化し、IDE拡張機能とスタンドアロンソフトウェアプラグインの両方において、より機敏な開発体験を提供することを目的としています。