mruby master changes

mruby masterの変更履歴

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で直接、メモリ領域を更新するようにしています