O que está incluído no lançamento do motor V8 versão 9.0

Em 17 de março de 2021, foi publicado o lançamento da nona versão do motor V8. Esta postagem é uma breve descrição do que foi incluído no changelog do lançamento.





Versão original pós V8 v9.0





JavaScript

Índices de correspondência em RegExp

Desde a versão 9.0, os desenvolvedores podem obter uma matriz de posições inicial e final que correspondem aos grupos de captura que correspondem a uma expressão regular. Esta matriz está disponível por meio de uma propriedade .indices



para objetos correspondentes se a regex tiver um sinalizador / 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;
}
      
      



e, por exemplo, chamamos esta função em JavaScript para adicionar vários vetores (representados como matrizes digitadas):





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



Este recurso ainda é experimental e pode ser ativado com um sinalizador --turbo-inline-js-wasm-calls



.





Veja o documento de design para detalhes .








All Articles