El 17 de marzo de 2021 se publicó el lanzamiento de la novena versión del motor V8. Esta publicación es una breve descripción de lo que se incluyó en el registro de cambios de la versión.
Versión original posterior a V8 v9.0
JavaScript
Coincidencia de índices en RegExp
Desde la versión 9.0, los desarrolladores pueden obtener una serie de posiciones de inicio y finalización que coinciden con los grupos de captura que coinciden con una expresión regular. Esta matriz está disponible a través de una propiedad .indices
para hacer coincidir objetos si la expresión regular tiene una bandera / 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;
}
y, por ejemplo, llamamos a esta función en JavaScript para agregar múltiples vectores (representados como matrices escritas):
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();
Esta función aún es experimental y se puede habilitar con una bandera --turbo-inline-js-wasm-calls
.
Consulte el documento de diseño para obtener más detalles .