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

V8リリースv8.7

· 約3分
Ingvar Stepanyan ([@RReverser](https://twitter.com/RReverser)), V8の旗手

V8では、6週間ごとに新しいブランチを作成するリリースプロセスの一環として、新しいバージョンを提供しています。各バージョンは、Chromeのベータ版マイルストーンの直前にV8のGitマスターからブランチが作成されます。本日、最新のブランチV8バージョン8.7を発表できることを嬉しく思います。このバージョンは数週間後にChrome 87の安定版に合わせてリリースされるまでベータ版にあります。V8 v8.7は、開発者向けの数多くの機能が盛り込まれています。この投稿では、リリースに先駆けていくつかのハイライトを紹介します。

JavaScript

危険な高速JS呼び出し

V8 v8.7には、JavaScriptからネイティブ呼び出しを行うための強化されたAPIが含まれています。

この機能は現在まだ実験的で、V8では--turbo-fast-api-callsフラグ、Chromeでは--enable-unsafe-fast-js-callsフラグを通じて有効化できます。この機能はChromeの一部のネイティブグラフィックスAPIのパフォーマンス向上を目的としていますが、他の埋め込みアプリケーションでも使用できます。このAPIは、開発者がv8::FunctionTemplateのインスタンスを作成する新しい手段を提供します。この詳細はこちらのヘッダーファイルで確認できます。オリジナルAPIで作成された関数には影響を与えません。

詳細および利用可能な機能一覧についてはこちらの説明文をご覧ください。

Atomics.waitAsync

Atomics.waitAsyncがV8 v8.7で利用可能になりました。

Atomics.waitおよびAtomics.notifyは、ミューテックスや同期手段を実装するために役立つ低レベルの同期プリミティブです。ただし、Atomics.waitはブロッキングであるため、メインスレッドで呼び出すことはできません(試みた場合はTypeErrorがスローされます)。非ブロッキング版のAtomics.waitAsyncは、メインスレッドでも利用可能です。

Atomics APIの詳細についてはこちらの説明文をご参照ください。

V8 API

git log branch-heads/8.6..branch-heads/8.7 include/v8.hを使用することで、APIの変更一覧を取得できます。

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