UNIXにおけるpackage式は、以下のような機能を持っている必要があります。
変数packagePathに、文字列で与えられたディレクトリ、あるいは、文字列 の配列で与えられた複数のディレクトリは、package式のサーチパスとして Cmmソースあるいはそのコンパイル形式ファイルが探索されなければなりませ ん。また、loadPathのサーチするための条件は以下の通りです。
たとえば、
var packagePath = "/usr/local/share/cmm/packages" ;
と設定されている場合は、ディレクトリ"/usr/local/share/cmm/packages"も検索対象となり ます。
また、
var loadPath = ["/usr/share/cmm/packages",
SPMgt;"/usr/local/share/cmm/packages",
SPMgt;"/usr/home/pon/cmm/packages" ] ;
となっている場合は、
"/usr/share/cmm/packages"
"/usr/local/share/cmm/packages"
"/usr/home/pon/cmm/packages"
をこの順に探索し、最初に見つかったバイナリパッケージをロードします。
また、ロードされたバイナリパッケージは、配列型の定義済みグローバル変数
__loadedPackages
に配列で格納されます。例えば、fileA.soと、fileB.so がロードされてい る場合、変数__loadedPackagesには、そのバイナリパッケージのパッケージ 名が格納されています。
[ "fielA.so", "fileB.so"]
UNIXのCmm処理系は、この変数を参照してパッケージをロードするかしないかを決めます。