Apa yang termasuk dalam rilis mesin V8 versi 9.0

Pada 17 Maret 2021, rilis versi kesembilan dari mesin V8 diterbitkan. Posting ini adalah deskripsi singkat tentang apa yang termasuk dalam log perubahan rilis.





Posting asli V8 rilis v9.0





JavaScript

Cocokkan indeks di RegExp

Sejak versi 9.0, pengembang bisa mendapatkan larik posisi awal dan akhir yang cocok dengan grup tangkapan yang cocok dengan ekspresi reguler. Larik ini tersedia melalui properti .indices



untuk objek yang cocok jika ekspresi reguler memiliki sebuah bendera / 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;
}
      
      



dan misalnya, kami memanggil fungsi ini di JavaScript untuk menambahkan beberapa vektor (direpresentasikan sebagai array yang diketik):





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



Fitur ini masih eksperimental dan dapat diaktifkan dengan sebuah bendera --turbo-inline-js-wasm-calls



.





Lihat dokumen desain untuk detailnya .








All Articles