2021年3月17日、V8エンジンの9番目のバージョンのリリースが公開されました。この投稿は、リリース変更ログに含まれていたものの簡単な説明です。
オリジナルのポストV8リリースv9.0
JavaScript
RegExpのインデックスを一致させる
バージョン9.0以降、開発者は、正規表現に一致するキャプチャグループに一致する開始位置と終了位置の配列を取得できます。この配列は.indices
、正規表現にフラグがある場合、オブジェクトを照合するためのプロパティを介して使用できます/ d
。
const re = /(a)(b)/d; // Note the /d flag.
const m = re.exec('ab');
console.log(m.indices[0]); // Index 0 is the whole match.
// → [0, 2]
console.log(m.indices[1]); // Index 1 is the 1st capture group.
// → [0, 1]
console.log(m.indices[2]); // Index 2 is the 2nd capture group.
// → [1, 2]
super
super
(, super.x
) V8 TurboFan. , super
, , , .
"for ( async of "
WebAssembly
JS-to-Wasm
V8 WebAssembly JavaScript. , JavaScript WebAssembly, JS-to-Wasm, JavaScript WebAssembly, , .
, , , JavaScript WebAssembly , JavaScript JavaScript. , JS-to-Wasm ., .
, WebAssembly, , :
double addNumbers(double x, double y) {
return x + y;
}
たとえば、JavaScriptでこの関数を呼び出して、複数のベクトル(型付き配列として表される)を追加します。
const addNumbers = instance.exports.addNumbers;
function vectorSum(len, v1, v2) {
const result = new Float64Array(len);
for (let i = 0; i < len; i++) {
result[i] = addNumbers(v1[i], v2[i]);
}
return result;
}
const N = 100_000_000;
const v1 = new Float64Array(N);
const v2 = new Float64Array(N);
for (let i = 0; i < N; i++) {
v1[i] = Math.random();
v2[i] = Math.random();
}
// Warm up.
for (let i = 0; i < 5; i++) {
vectorSum(N, v1, v2);
}
// Measure.
console.time();
const result = vectorSum(N, v1, v2);
console.timeEnd();
この機能はまだ実験段階であり、フラグを使用して有効にすることができます--turbo-inline-js-wasm-calls
。
詳細については、設計ドキュメントを参照してください。