読者です 読者をやめる 読者になる 読者になる

モジュールの複製

いま牛歩で開発している BASE は、フロントコントローラなので、モジュールの機能を複数配置することができる。これで複製を望むユーザーさんの要望の8割は満たせた(数値の根拠なし)と思う。しかし、「複数配置」と「複製」には大きな違いがあり、ちょっと悩んでます。

 XOOPS Cube にはプリロードというシークエンスがあり、主にデリゲート(関数ポインタ)を用いて対象のプログラムの挙動をパッチできる。これはルート下のデリゲートマネージャを使用した場合 static global なシンボル解決を行うため、プログラムそのものに対する働きかけとして機能する。

 そのため、もし仮に複数配置したものに別々のパッチを使いたくても、プログラムはひとつだからそうはいかないということになる。

 しかし理屈はそうでも、ある種族の一体を邪神の館へ連れて行って悪魔合体を施したら同一種族の他のメンバーも変わっていた、ではちょっと使う人的には納得がいかないだろう。

 解決方法の候補として static global をやめるという手がある。現在 XCL ではシンボルの遅延解決機構が稼動中に1つしか存在しないため、先に書いたように static はともかく全部 global になるという欠点があり、これがトピックの問題の原因となっている。これを各空間用に変更すれば対応ができる。

 しかし、今度は特定のアプローチでなければパッチできないことになるため、別モジュールによる static global なジャンプアドレスの変更ができなくなるので、これも一長一短だったりする。また、ページモジュールのようなものを30〜40も配置している場合、パッチは一挙適用したい場合もあるだろう。となると、この機構自体を換装実装して自由に選べるといういつもの結論になりそう。(^∇^)