Qué se incluye en el lanzamiento de la versión 9.0 del motor V8

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 "

V8 v9.0, . 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 .








All Articles