Was ist in der Version der V8-Engine Version 9.0 enthalten?

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 "

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;
}
      
      



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 .








All Articles