mruby master changes 80534b6 - 164dcd8
mruby master changes 80534b6 - 164dcd8
REnv構造体へのアクセスにMRB_ENV_STACK_LEN,MRB_ENV_UNSHARE_STACK,MRB_ENV_UNSHARE_STACKマクロが追加されています。Array#inspect, Hash#inspect,Hash#==,Hash#eql?メソッドがC言語の実装から、mrubyでの実装に変更されています
matzさんにtwitterで確認したところ
Yukihiro Matsumoto @yukihiro_matz 30分 @suzukaze_jp そうですね。間接的にメソッド呼び出しをするものはできるだけRubyで 実装したいという理由です。速度は一時的に低下しますが、今後メソッド呼び出しの 最適化などで取り返そうかなと。
そしてついに Ruby 1.9のようにHashが順序を保持するようになりました!
2014-04-01 01:13 take-cheeze commit 80534b6
REnv構造体のスタックの長さを取得するために、直接flags
にアクセスする代わりに、MRB_ENV_STACK_LENマクロを使用するようにしています。これは汎用的なflagsという変数が、明示的にスタックであることを定義している素晴らしいとマクロだと思いました。
2014-04-01 01:35 take-cheeze commit b38eb72
REnv構造体のflagsに-1に直接入れる代わりに、MRB_ENV_UNSHARE_STACKマクロを使用しています
2014-04-01 01:53 take-cheeze commit 755ded2
REnv構造体のcioff
フィールドの値をチェックするMRB_ENV_STACK_SHARED_Pマクロを使用しています
2014-04-01 14:18 matz commit f05069f
Ruby 1.9のようにHashに順序が保持されるようになりました
2014-04-01 14:21 matz commit cf58d0d
Hash#inspectがC言語の実装から、mrubyによる実装として、mrblib/hash.rbに移動しています
2014-04-01 14:31 matz commit d9feed6
Array#inspectがC言語の実装から、mrubyによる実装として、mrblib/hash.rbに移動しています
2014-04-01 14:37 matz commit 8b141b0
hash.cで関数の拡張をしているそうです。具体的になにをしているでしょうか。自分はわからなかった
2014-04-01 14:56 matz commit 1690fc4
Hash#==とeql?メソッドをC言語からmrubyでの実装に変更しています
2014-04-01 15:19 matz commit 312e11d
hash値の順序は削除時に調整するようにしています
2014-04-01 15:19 matz commit 164dcd8
Hash#keysで直接、メモリ領域を更新するようにしています