Ce qui est inclus dans la version du moteur V8 version 9.0

Le 17 mars 2021, la sortie de la neuvième version du moteur V8 a été publiée. Cet article est une brève description de ce qui était inclus dans le journal des modifications de la version.





Publication originale de la version V8 v9.0





JavaScript

Faire correspondre les indices dans RegExp

Depuis la version 9.0, les développeurs peuvent obtenir un tableau de positions de début et de fin qui correspondent aux groupes de capture qui correspondent à une expression régulière. Ce tableau est disponible via une propriété .indices



pour les objets correspondants si l'expression régulière a un indicateur / 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;
}
      
      



et par exemple, nous appelons cette fonction en JavaScript pour ajouter plusieurs vecteurs (représentés sous forme de tableaux typés):





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();
      
      



Cette fonctionnalité est encore expérimentale et peut être activée avec un indicateur --turbo-inline-js-wasm-calls



.





Voir le document de conception pour plus de détails .








All Articles