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

V8リリース v4.6

· 約6分
V8チーム

約6週間ごとに、私たちはリリースプロセスの一環としてV8の新しいブランチを作成します。各バージョンはV8のGitマスターからChromeがChrome Betaマイルストーン用にブランチを分岐する直前に分岐されます。本日、私たちは最新のブランチV8バージョン4.6を発表できることを喜ばしく思います。このバージョンは、Chrome 46 Stableと連携してリリースされるまでベータ版です。V8 4.6は、開発者向けの便利な機能でいっぱいなので、数週間後のリリースに先立って、いくつかのハイライトを事前にお届けしたいと思います。

改良されたECMAScript 2015 (ES6)サポート

V8 v4.6では、いくつかのECMAScript 2015 (ES6)機能をサポートしています。

スプレッド演算子

スプレッド演算子を使用すると、配列を操作するのが非常に便利になります。例えば、単純に配列を結合したい場合、従来の命令的なコードが不要になります。

// 配列の結合
// スプレッド演算子なしのコード
const inner = [3, 4];
const merged = [0, 1, 2].concat(inner, [5]);

// スプレッド演算子を使用したコード
const inner = [3, 4];
const merged = [0, 1, 2, ...inner, 5];

スプレッド演算子のもうひとつの優れた使い方として、applyの代替があります:

// 配列に格納された引数
// スプレッド演算子なしのコード
function myFunction(a, b, c) {
console.log(a);
console.log(b);
console.log(c);
}
const argsInArray = ['Hi ', 'Spread ', 'operator!'];
myFunction.apply(null, argsInArray);

// スプレッド演算子を使用したコード
function myFunction (a,b,c) {
console.log(a);
console.log(b);
console.log(c);
}

const argsInArray = ['Hi ', 'Spread ', 'operator!'];
myFunction(...argsInArray);

new.target

new.targetはクラスを操作する際に役立つES6の機能の1つです。この機能は実際にはすべての関数に対して暗黙的なパラメータとなります。関数がnewキーワードを使用して呼び出された場合、このパラメータには呼び出された関数への参照が保持されます。newが使用されない場合、このパラメータは未定義となります。

実際には、new.targetを使用すると、関数が通常どおり呼び出されたのか、newキーワードを介してコンストラクタとして呼び出されたのかを確認できます。

function myFunction() {
if (new.target === undefined) {
throw 'newで呼び出してお試しください。';
}
console.log('動作しました!');
}

// エラー:
myFunction();

// 正常動作:
const a = new myFunction();

ES6のクラスと継承が使用される場合、スーパークラスのコンストラクタ内のnew.targetは、newで呼び出された派生クラスのコンストラクタにバインドされます。特にこれにより、コンストラクション中にスーパークラスが派生クラスのプロトタイプにアクセスできるようになります。

ジャンクの削減

ジャンクは特にゲームプレイ時に悩みの種となります。そして、多くの場合、ゲームが複数プレイヤーを特徴としている場合にはさらに悪化します。oortonline.glは、複雑な3Dシーンを粒子効果や最新のシェーダーレンダリングを使用して描画することで現在のブラウザの限界をテストするWebGLベンチマークです。V8チームはこれらの環境でChromeの性能の限界を押し広げるための探求を開始しました。まだ終わってはいませんが、私たちの努力の成果がすでに現れています。Chrome 46では、oortonline.glの性能における素晴らしい進展が見られます。

いくつかの最適化には次のものが含まれます:

良いことに、oortonline.gl に関連するすべての変更は、WebGL を多用するアプリケーションのすべてのユーザーに潜在的な影響を与える一般的な改善です。

V8 API

API の変更内容については、変更概要をご覧ください。このドキュメントは、各主要リリースの数週間後に定期的に更新されます。

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