dynlink
ライブラリは型安全な動的読み込みと動的リンクをサポートします。
バイトコードプログラムからはバイトコードオブジェクトファイル(.cmo
ファイルや .cma
ファイル)を動的読み込み・動的リンクすることができ、ネイティブプログラムからはネイティブプラグイン(通常、 .cmxs
ファイル)を動的読み込み・動的リンクすることができます。
型安全性の保証は、読み込まれるオブジェクトファイルのアクセスできるモジュールを実行中のプログラムの一部に制限し、実行中のプログラムと読み込まれるオブジェクトファイルがそれらのモジュールの同一のインタフェースに対してコンパイルされることを検査することにより行なわれています。
ネイティブコードでは、(モジュールをまたいだ最適化によるエラーを避けるために)幾分かの整合性検査も行ないます。
ネイティブプラグインを作成する際には .cmx
ファイルを隠蔽し、メインプログラム内のモジュールの実装と独立させておくと便利なことがあるかもしれません。
dynlink
ライブラリを使うプログラムはオブジェクトファイルや他のライブラリに加えて dynlink.cma
をリンクする必要があります。