V8-Version v5.1
Der erste Schritt im Veröffentlichungsprozess von V8 ist, einen neuen Branch von der Git-Master-Version zu erstellen, unmittelbar bevor Chromium für einen Chrome-Beta-Meilenstein verzweigt (etwa alle sechs Wochen). Unser neuester Release-Branch ist V8 v5.1, der bis zu einer stabilen Version als Beta bleibt, die zusammen mit Chrome 51 Stable veröffentlicht wird. Hier sind die Highlights der neuen Entwicklerfunktionen dieser Version von V8.
Verbesserte ECMAScript-Unterstützung
V8 v5.1 enthält zahlreiche Änderungen, um die ES2017-Entwurfsspezifikation einzuhalten.
Symbol.species
Array-Methoden wie Array.prototype.map
erstellen Instanzen der Unterklasse als Ausgabe, mit der Möglichkeit, dies durch Änderung von Symbol.species
anzupassen. Ähnliche Änderungen wurden an anderen eingebauten Klassen vorgenommen.
Anpassung von instanceof
Konstruktoren können ihre eigene Symbol.hasInstance
-Methode implementieren, die das Standardverhalten überschreibt.
Iteratorschließung
Iteratoren, die im Rahmen einer for
-of
-Schleife (oder anderer eingebauter Iteration wie dem Spread-Operator) erstellt werden, werden nun auf eine Schließmethode überprüft, die aufgerufen wird, wenn die Schleife vorzeitig beendet wird. Dies kann für Aufräumarbeiten nach der Iteration verwendet werden.
RegExp-Unterklassen exec
Methode
RegExp-Unterklassen können die exec
-Methode überschreiben, um nur den Kernabgleichalgorithmus zu ändern, mit der Garantie, dass dieser von höheren Funktionen wie String.prototype.replace
aufgerufen wird.
Funktionsnamen-Inferenz
Funktionsnamen, die für Funktionsausdrücke abgeleitet werden, sind nun in der name
-Eigenschaft von Funktionen erhältlich, gemäß der ES2015-Formalierung dieser Regeln. Dies könnte bestehende Stack-Traces ändern und andere Namen als frühere V8-Versionen liefern. Es liefert auch nützliche Namen für Eigenschaften und Methoden mit berechneten Eigenschaftsnamen:
class Container {
...
[Symbol.iterator]() { ... }
...
}
const c = new Container;
console.log(c[Symbol.iterator].name);
// → '[Symbol.iterator]'
Array.prototype.values
Analog zu anderen Sammlungsarten gibt die values
-Methode auf Array
einen Iterator über die Inhalte des Arrays zurück.
Leistungsverbesserungen
V8 v5.1 bringt auch einige bemerkenswerte Verbesserungen in der Leistung für die folgenden JavaScript-Funktionen:
- Ausführen von Schleifen wie
for
-in
Object.assign
- Promise- und RegExp-Instanziierung
- Aufruf von
Object.prototype.hasOwnProperty
Math.floor
,Math.round
undMath.ceil
Array.prototype.push
Object.keys
Array.prototype.join
&Array.prototype.toString
- Wiederholte Zeichenketten glätten, z.B.
'.'.repeat(1000)
WebAssembly (Wasm)
V8 v5.1 hat eine vorläufige Unterstützung für WebAssembly. Sie können es über das Flag --expose_wasm
in d8
aktivieren. Alternativ können Sie die Wasm-Demos mit Chrome 51 (Beta-Kanal) ausprobieren.
Speicher
V8 hat weitere Teile von Orinoco implementiert:
- Parallele Evakuierung der jungen Generation
- Skalierbare erinnerte Sets
- Schwarze Zuweisung
Der Einfluss sind reduzierte Unterbrechungen und Speicherverbrauch in Notzeiten.
V8 API
Bitte werfen Sie einen Blick auf unsere Zusammenfassung der API-Änderungen. Dieses Dokument wird einige Wochen nach jeder Hauptversion regelmäßig aktualisiert.
Entwickler mit einem aktiven V8-Auschecken können git checkout -b 5.1 -t branch-heads/5.1
verwenden, um mit den neuen Funktionen von V8 v5.1 zu experimentieren. Alternativ können Sie sich zum [Beta-Kanal von Chrome][https://www.google.com/chrome/browser/beta.html) anmelden und die neuen Funktionen bald selbst ausprobieren.