モジュール変数デストラクタ呼び出しを消した
理由
- 高速化の邪魔になるから
- 別の変数から参照されているのにデストラクタが呼び出されるのは不自然に感じるから
- あっても嬉しいことがなさそう
- struct 型の値に newmod されたときのものか(それともクローンか)というフラグを持たせるのが気持ち悪い
delmod は newmod されたときの変数かどうかにかかわらず empty struct を代入するように変更。
別の変数から参照されているのにデストラクタが呼び出されるのはオフィシャル HSP もそうか。いや、あれは参照じゃなくて、weak reference と考えれば。にしても、別の変数から参照されていても削除されて、デリファレンスすると SEGV を簡単に出せるあたり HSP 。
ちなみに、モジュール変数の実体が削除されるタイミングは
- newmod されたときの変数が delmod されたとき
- newmod されたときの変数がスコープを終了するとき(local変数やモジュール変数のメンバなど)
- newmod されたときの変数に違う型の値が代入されるなどして初期化されるとき
- HSP の終了時