V8-Version v5.7
Alle sechs Wochen erstellen wir einen neuen Branch von V8 im Rahmen unseres Veröffentlichungsprozesses. Jede Version wird direkt vor einem Chrome-Beta-Meilenstein vom Git-Master von V8 abgezweigt. Heute freuen wir uns, unseren neuesten Branch, V8 Version 5.7, anzukündigen, der sich bis zur Veröffentlichung in Verbindung mit Chrome 57 Stable in einigen Wochen in der Beta-Phase befindet. V8 5.7 ist vollgepackt mit allerlei Entwickler-Features. Wir möchten Ihnen einen Vorgeschmack auf einige der Highlights geben, um die Veröffentlichung zu erwarten.
Leistungsverbesserungen
Native Async-Funktionen so schnell wie Promises
Async-Funktionen sind jetzt ungefähr so schnell wie derselbe Code, der mit Promises geschrieben wurde. Die Ausführungsleistung von Async-Funktionen hat sich laut unseren Microbenchmarks vervierfacht. Im gleichen Zeitraum hat sich auch die Gesamtleistung von Promises verdoppelt.
Weitere Verbesserungen bei ES2015
V8 macht weiterhin ES2015-Sprachfunktionen schneller, damit Entwickler neue Funktionen nutzen können, ohne Leistungseinbußen zu erleiden. Der Spread-Operator, Destructuring und Generatoren sind jetzt ungefähr so schnell wie ihre naiven ES5-Äquivalente.
RegExp 15% schneller
Das Migrieren von RegExp-Funktionen von einer selbst gehosteten JavaScript-Implementierung zu einer, die in die Codegenerierungsarchitektur von TurboFan eingebunden ist, hat eine etwa 15% schnellere Gesamtleistung von RegExp erbracht. Weitere Details finden Sie im dedizierten Blogeintrag.
JavaScript-Sprachfunktionen
Mehrere kürzliche Ergänzungen zur ECMAScript-Standardbibliothek sind in dieser Version enthalten. Zwei String-Methoden, padStart
und padEnd
, bieten nützliche Funktionen zur String-Formatierung, während Intl.DateTimeFormat.prototype.formatToParts
Autoren die Möglichkeit gibt, ihre Datums-/Zeitformatierung auf lokalisierte Weise anzupassen.
WebAssembly aktiviert
Chrome 57 (inklusive V8 v5.7) wird die erste Version sein, die WebAssembly standardmäßig aktiviert. Weitere Details finden Sie in den Einführungsdokumenten auf webassembly.org und in der API-Dokumentation auf MDN.
V8-API-Erweiterungen
Bitte werfen Sie einen Blick auf unsere Zusammenfassung der API-Änderungen. Dieses Dokument wird regelmäßig ein paar Wochen nach jeder Hauptveröffentlichung aktualisiert. Entwickler mit einem aktiven V8-Checkout können git checkout -b 5.7 -t branch-heads/5.7
verwenden, um mit den neuen Funktionen in V8 v5.7 zu experimentieren. Alternativ können Sie Chrome's Beta-Kanal abonnieren und die neuen Funktionen bald selbst ausprobieren.
PromiseHook
Diese C++-API ermöglicht es Benutzern, Profiling-Code zu implementieren, der den Lebenszyklus von Promises nachverfolgt. Dies ermöglicht die kommende AsyncHook-API von Node, mit der Sie asynchrone Kontextweitergabe erstellen können.
Die PromiseHook
-API bietet vier Lebenszyklus-Hooks: init, resolve, before und after. Der init-Hook wird ausgeführt, wenn ein neues Promise erstellt wird; der resolve-Hook wird ausgeführt, wenn ein Promise aufgelöst wird; die pre- und post-Hooks werden unmittelbar vor und nach einem PromiseReactionJob
ausgeführt. Weitere Informationen finden Sie im Tracking-Issue und im Design-Dokument.