メインコンテンツまでスキップ

V8リリース v6.1

· 約4分
V8チーム

V8では、リリースプロセスの一環として、6週間ごとに新しいブランチを作成します。各バージョンは、Chrome Betaのマイルストーン直前にV8のGitマスターからブランチされます。本日、私たちは新しいブランチV8 version 6.1を発表できることを嬉しく思います。このバージョンは数週間後にChrome 61 Stableとの連携でリリースされるまでベータ版となります。V8 v6.1は、開発者向けの便利な機能でいっぱいです。リリースに先立ち、いくつかのハイライトを事前にご紹介します。

パフォーマンスの向上

反復処理またはMap.prototype.forEach / Set.prototype.forEachメソッドを介して、MapsおよびSetsのすべての要素を訪問する操作は、V8 v6.0以降最大11倍の性能向上を達成しました。専用ブログ記事で詳しい情報をご覧ください。

さらに、他の言語機能のパフォーマンス向上にも取り組みました。たとえば、Object.prototype.isPrototypeOfメソッドは、クラスやコンストラクター関数ではなく主にオブジェクトリテラルとObject.createを使用するコンストラクターを使わないコードにとって重要であり、現在では常に速く、場合によってはinstanceof演算子を使用するよりも速くなっています。

可変引数の関数呼び出しおよびコンストラクター呼び出しも大幅に高速化されました。Reflect.applyおよびReflect.constructを使用した呼び出しでは、最新バージョンで最大17倍の速度向上が見られます。

Array.prototype.forEachはTurboFanでインライン化され、すべての主要な非ホーリー要素の種類に最適化されました。

バイナリサイズの削減

V8チームは廃止されたCrankshaftコンパイラを完全に削除し、バイナリサイズを大幅に削減しました。加えて、組み込み生成器を削除したことで、プラットフォームに応じてV8の配布バイナリサイズが700KB以上削減されました。

asm.jsが検証されWebAssemblyにコンパイルされるように

V8がasm.jsコードを検出した場合、そのコードを検証しようと試みます。有効なasm.jsコードはWebAssemblyに変換されます。V8の性能評価によれば、これによりスループット性能が向上する傾向があります。ただし、追加の検証ステップにより、スタートアップ性能における単独のリグレッションが発生する可能性があります。

この機能はChromium側でデフォルトで有効化されただけであることにご注意ください。組み込みまたはasm.jsバリデーターを使用したい場合は、フラグ--validate-asmを有効化してください。

WebAssembly

WebAssemblyコードでブレークポイントにヒットした場合、DevToolsでローカル変数を表示することが可能になりました。

V8 API

API変更の概要をチェックしてください。このドキュメントは、各主要リリース後数週間してから定期的に更新されます。

アクティブなV8チェックアウトを持つ開発者は、git checkout -b 6.1 -t branch-heads/6.1を使用してV8 v6.1の新機能を試すことができます。または、Chromeのベータチャンネルを購読して、直接新機能を試すこともできます。