V8リリース v7.0
約6週間ごとに、私たちはV8のリリースプロセスの一環として、新しいV8のブランチを作成します。各バージョンはChromeのベータ版マイルストーン直前にV8のGit masterからブランチが切られます。本日、V8 version 7.0の最新ブランチを発表できることを嬉しく思います。これは今後数週間でChrome 70安定版と調整してリリースされるまでベータ版です。V8 v7.0は開発者向けのすばらしい機能が満載です。この投稿では、リリースに先立ちいくつかの注目ポイントを予告します。
組み込みバイナリ
組み込みバイナリは、複数のV8 Isolate間で生成コードを共有することでメモリを節約します。V8 v6.9からx64で組み込みバイナリを有効にしました。V8 v7.0では、これらのメモリ節約をia32以外のすべてのプラットフォームに拡張しました。
WebAssemblyスレッドのプレビュー
WebAssembly (Wasm) は、C++などの言語で書かれたコードをコンパイルしてウェブで実行することを可能にします。ネイティブアプリケーションの非常に便利な機能の1つは、スレッドを使用する能力です。これは並列計算のための基本的な手段です。ほとんどのCおよびC++開発者は、アプリケーションスレッド管理の標準化されたAPIであるpthreadsに精通しているでしょう。
WebAssembly コミュニティグループは、真のマルチスレッドアプリケーションを可能にするためにスレッドをウェブにもたらす作業を進めています。この取り組みの一環として、V8はWebAssemblyエンジンでスレッドをサポートするために必要な実装を行いました。この機能をChromeで使用するには、chrome://flags/#enable-webassembly-threads
で有効化するか、サイトがOrigin Trialに登録できます。Origin Trialsは、開発者が完全に標準化される前に新しいウェブ機能を試験的に使用できるものであり、これは新しい機能の検証と改善に不可欠な実世界のフィードバックを収集するのに役立ちます。
JavaScript言語機能
description
プロパティが Symbol.prototype
に追加されます。これにより、Symbol
の説明にもっとエルゴノミックにアクセスする方法が提供されます。以前は、説明に Symbol.prototype.toString()
を介して間接的にしかアクセスできませんでした。この実装を提供したIgaliaに感謝します!
Array.prototype.sort
は、V8 v7.0では安定しています。以前は、V8は10個以上の要素を持つ配列に対して不安定なQuickSortを使用していました。現在、安定したTimSortアルゴリズムを使用しています。こちらのブログ記事で詳細をご覧ください。
V8 API
git log branch-heads/6.9..branch-heads/7.0 include/v8.h
を使用して、API変更のリストを確認できます。
アクティブなV8チェックアウトを持つ開発者は、git checkout -b 7.0 -t branch-heads/7.0
を使用して、V8 v7.0の新機能を試すことができます。またはChromeのベータチャンネルに登録して、間もなく新機能を実際に試してみることができます。