すっかりChangeLogと化しています
本日はこんなことをしました。
バグの修正
def tgc
i = 320000
b = [1]
while i > 0
a = [1, 2, 3, 4, 5, 7, 8]
c = [1, 2, 3, 4]
i = i - 1
end
b
end
こんなプログラムで、GCをいじめたら落ちてしまいました。GC周りかなと思ったら、そうではなく新たな配列を生成するrb_ary_new4の引数の1つの初期値配列をallocaで取っているのですが、それをループ内で行ったので、スタックオーバフローしていました。メソッドの先頭でallocaをするようにしました。
クラス・メソッドのサポート
これまで、クラス・モジュールは無視だったのですが、意識するようにしました。Math.sqrtとsqrtは別物になります。ただし、レシーバーのクラスは静的に一意に決まる必要があります。つまり、ポリモフィズムはできないし、将来もできないです。
構造体や名前空間の代わりに使えるかなと思います。しかも、まだインスタンス変数もクラス変数もサポートして無いです。