GoogleがJavaScriptエンジン V8のバージョン5.1を発表した。ECMAScript 2017ドラフト仕様への準拠を改善し、ネイティブに近い実行速度を狙った低レベルなポータブルなバイトコード、WASMの暫定サポートを追加する。
例によって、V8のリリースプロセスはChromeと結びついており、V8の5.1は最終的にChrome 51 Stableがリリースされた時に出る予定だ。
今回のリリースの最終ゴールは、ECMAScript 2015のサポートを97%にもっていくことだ。V8の5.1には以下が含まれている。
Symbol.species
。Array.prototype.map
のようなメソッドによって使われるオブジェクトのデフォルトコンストラクタを、サブクラスがオーバーライドできるようにする。例えば、map
で使われた時に、親クラスのコンストラクタを返すMyArray
クラスを定義することができる。class MyArray extends Array { // speciesを親のArrayコンストラクタにオーバーライト static get [Symbol.species]() { return Array; } } var a = new MyArray(1,2,3); var mapped = a.map(x => x * x); console.log(mapped instanceof MyArray); // false console.log(mapped instanceof Array); // true
Symbol.hasInstance
は、コンストラクタがオブジェクトをそのインスタンスとして認識するかどうかを判別するためにオーバーライドを可能にする。- イテレータはループが停止する際に呼ばれる
close
メソッドをサポートする。 - 独自の
exec
メソッドを定義することで、RegExpサブクラスが使用する正規表現アルゴリズムを変更できる。 name
プロパティによって、それらしい関数名を得ることができる。
V8 5.1にはWebAssembly (WASM)の暫定サポートが追加されている。簡単に言うと、WebAssemblyはネイティブに近い実行速度を狙った低レベルなポータブルなバイトコードだ。ありふれたハードウェアに依存しており、多数のプラットフォームで利用することができる。加えて、WASM ASTはコンパクトで効率の良いバイナリフォーマットになるように設計されており、サンドボックス環境で動作動するよう作られている。
V8 5.1では、for-in
のようなループ実行、Promise、RegExpインスタンス化、Math演算など、多くのJavaScript機能のパフォーマンスが改善されている。
Rate this Article
- Editor Review
- Chief Editor Action