Subscribed unsubscribe Subscribe Subscribe

枕を欹てて聴く

香炉峰の雪は簾を撥げて看る

iv / lv5, ECMA262 5.1th full support

ECMAScript JavaScript C++

https://github.com/Constellation/iv

iv / lv5というECMA262 5.1th完全準拠を目指したengineを書いておりました (highly inspired from V8, JSC)

で, もうほぼ仕様準拠しておりました, が, 正規表現のみJSCREを使っていて, そこだけECMA262と挙動が異なっていることがあり, 「ぐぬぬ」と言っていました. JSCREとは, 昔V8やJSCが使っていたものでIrregexpやYarrに取って代わられる前のもので, この間DartのVM見ていると, libjscreをcompileしていました. おかえりJSCRE! ちなみにJSCREはもともとPCREをWebKitさんがforkして別物に書き換えちゃったものです.


ですが, この度一念発起してRegExp Runtime, AeroHand (source code上はaeroという名前)を作成し, 無事それに置き換えることができ, 結果正規表現周りの挙動もECMA262準拠となりました.

Aero Handのsrc codeはlv5以下にあります.
https://github.com/Constellation/iv/tree/master/iv/aero

VMの名前とかInterpreterの名前から想像できるように(というかそもそもengine名がlv5), そういう由来の名前です. 佐天さん... > AeroHand


という訳で, Arrayのlengthやindexに対するPropertyDescriptorの設定といった基本的に仕様厨しか喜ばないような重箱の隅に至るまで対応したので, ECMA262 5.1th full supportを宣言します. iv / lv5 projectの当初目標である, ECMA262完全準拠を達成しました.

今後

とりあえず, BoehmGCから自作のGCに置き換えようと狙っております. あとJITもしたいです.

補足

bugがあったら是非issueにでも叩きこむなどしていただければありがたいです.