Zum Hauptinhalt springen

V8-Version v6.3

· 3 Minuten Lesezeit
das V8-Team

Alle sechs Wochen erstellen wir im Rahmen unseres Veröffentlichungsprozesses einen neuen Branch von V8. Jede Version wird kurz vor einem Chrome-Beta-Meilenstein aus dem Git-Master von V8 abgezweigt. Heute freuen wir uns, unseren neuesten Branch, V8-Version 6.3, anzukündigen, der bis zu seiner Veröffentlichung in Zusammenarbeit mit Chrome 63 Stable in einigen Wochen im Beta-Modus ist. V8 v6.3 ist vollgepackt mit allerlei Entwickler-Features. Dieser Beitrag bietet eine Vorschau auf einige der Highlights in Erwartung der Veröffentlichung.

Geschwindigkeit​

Jank Busters III wurde als Teil des Orinoco-Projekts veröffentlicht. Das gleichzeitige Markieren (70-80% des Markierens erfolgt auf einem nicht blockierenden Thread) ist ausgeliefert.

Der Parser benötigt jetzt keine zweite Präparierung einer Funktion mehr. Dies führt zu einer 14% mittleren Verbesserung der Parse-Zeit in unserem internen Startup-Top25-Benchmark.

string.js wurde komplett auf CodeStubAssembler portiert. Vielen Dank an @peterwmwong für seine hervorragenden Beiträge! Als Entwickler bedeutet dies, dass eingebaute String-Funktionen wie String#trim ab Version V8 v6.3 wesentlich schneller sind.

Die Leistung von Object.is() ist jetzt ungefähr auf Augenhöhe mit Alternativen. Im Allgemeinen setzt V8 v6.3 den Weg zu besserer ES2015+ Leistung fort. Neben anderen Punkten haben wir die Geschwindigkeit des polymorphen Zugriffs auf Symbole, polymorphe Inline-Funktion von Konstruktoraufrufen und (markierte) Template-Literale verbessert.

Die Leistung von V8 in den letzten sechs Releases

Die schwache optimierte Funktionsliste ist entfernt worden. Weitere Informationen finden Sie im dedizierten Blog-Post.

Die genannten Punkte sind eine nicht erschöpfende Liste von Leistungsverbesserungen. Es wurden viele weitere Arbeiten zur Leistung durchgeführt.

Speicherverbrauch​

Schreibschutzmechanismen wurden auf die Verwendung des CodeStubAssembler umgestellt. Dies spart etwa 100 KB Speicher pro isoliertem Prozess.

JavaScript-Sprachfunktionen​

V8 unterstützt jetzt die folgenden Stufe-3-Funktionen: dynamischer Modul-Import über import(), Promise.prototype.finally() und asynchrone Iteratoren/Generatoren.

Mit dem dynamischen Modul-Import ist es sehr einfach, Module basierend auf Laufzeitbedingungen zu importieren. Dies ist nützlich, wenn eine Anwendung bestimmte Code-Module verzögert laden soll.

Promise.prototype.finally ermöglicht eine einfache Bereinigung, nachdem ein Promise abgeschlossen wurde.

Das Iterieren mit asynchronen Funktionen wurde durch die Einführung von asynchronen Iteratoren/Generatoren ergonomischer.

Auf der Intl-Seite wird jetzt Intl.PluralRules unterstützt. Diese API ermöglicht leistungsstarke internationalisierte Pluralisierungen.

Inspector/Debugging​

In Chrome 63 wird Blockabdeckung ebenfalls in der DevTools-Benutzeroberfläche unterstützt. Bitte beachten Sie, dass das Inspektor-Protokoll die Blockabdeckung bereits seit V8 v6.2 unterstützt.

V8 API​

Bitte sehen Sie sich unsere Zusammenfassung der API-Änderungen an. Dieses Dokument wird regelmäßig einige Wochen nach jeder Hauptveröffentlichung aktualisiert.

Entwickler mit einem aktuellen V8-Checkout können git checkout -b 6.3 -t branch-heads/6.3 verwenden, um mit den neuen Funktionen in V8 v6.3 zu experimentieren. Alternativ können Sie den Beta-Kanal von Chrome abonnieren und die neuen Funktionen bald selbst ausprobieren.