Am 17. März 2021 wurde die Veröffentlichung der neunten Version des V8-Motors veröffentlicht. Dieser Beitrag ist eine kurze Beschreibung dessen, was im Release-Änderungsprotokoll enthalten war.
Original nach V8 Release v9.0
JavaScript
Übereinstimmungsindizes in RegExp
Seit Version 9.0 können Entwickler eine Reihe von Start- und Endpositionen abrufen, die den Erfassungsgruppen entsprechen, die einem regulären Ausdruck entsprechen. Dieses Array ist über eine Eigenschaft .indices
zum Abgleichen von Objekten verfügbar, wenn der reguläre Ausdruck ein Flag hat / 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;
}
und zum Beispiel rufen wir diese Funktion in JavaScript auf, um mehrere Vektoren hinzuzufügen (dargestellt als typisierte Arrays):
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();
Diese Funktion ist noch experimentell und kann mit einem Flag aktiviert werden --turbo-inline-js-wasm-calls
.
Einzelheiten finden Sie im Konstruktionsdokument .