Zum Hauptinhalt springen

Blitzschnelles Parsing, Teil 1: Optimierung des Scanners

· 11 Minuten Lesezeit
Toon Verwaest ([@tverwaes](https://twitter.com/tverwaes)), aufsehenerregender Optimierer

Um ein JavaScript-Programm auszuführen, muss der Quelltext verarbeitet werden, damit V8 ihn verstehen kann. V8 beginnt damit, den Quelltext in einen abstrakten Syntaxbaum (AST) zu parsen, eine Menge von Objekten, die die Programmstruktur darstellen. Dieser AST wird von Ignition zu Bytecode kompiliert. Die Leistung dieser Parse- und Kompilierungsphasen ist entscheidend: V8 kann keinen Code ausführen, bevor die Kompilierung abgeschlossen ist. In dieser Blogserie konzentrieren wir uns auf das Parsing und die Arbeit, die in V8 geleistet wurde, um einen blitzschnellen Parser bereitzustellen.

V8-Version v7.4 veröffentlicht

· 8 Minuten Lesezeit
Georg Neis

Alle sechs Wochen erstellen wir einen neuen Zweig von V8 im Rahmen unseres Release-Prozesses. Jede Version wird direkt vor einem Chrome-Beta-Meilenstein von V8s Git-Master abgezweigt. Heute freuen wir uns, unseren neuesten Zweig, V8-Version 7.4, anzukündigen. Dieser befindet sich mehrere Wochen lang in der Beta-Phase bis zur Veröffentlichung in Abstimmung mit Chrome 74 Stable. V8 v7.4 ist voller Entwickler-Features. Dieser Beitrag bietet eine Vorschau auf einige der Highlights als Vorfreude auf die Veröffentlichung.

JIT-loses V8

· 4 Minuten Lesezeit
Jakob Gruber ([@schuay](https://twitter.com/schuay))

V8 v7.4 unterstützt nun die JavaScript-Ausführung ohne Zuordnung ausführbaren Speichers zur Laufzeit.

In seiner Standardkonfiguration basiert V8 stark auf der Fähigkeit, zur Laufzeit ausführbaren Speicher zuzuweisen und zu ändern. Beispielsweise erstellt der TurboFan-Optimierungskompilierer nativen Code für häufig aufgerufene JavaScript (JS)-Funktionen just-in-time, und die meisten regulären JS-Ausdrücke werden vom irregexp-Motor in nativen Code kompiliert. Die Erstellung ausführbaren Speichers zur Laufzeit ist ein Teil dessen, was V8 schnell macht.

V8-Veröffentlichung v7.3

· 3 Minuten Lesezeit
Clemens Backes, Compiler-Bändiger

Alle sechs Wochen erstellen wir einen neuen Branch von V8 im Rahmen unseres Veröffentlichungsprozesses. Jede Version wird direkt vor einem Chrome-Beta-Meilenstein aus dem Git-Master von V8 verzweigt. Heute freuen wir uns, unseren neuesten Branch, V8 Version 7.3, anzukündigen, der bis zu seiner Veröffentlichung in mehreren Wochen in Zusammenarbeit mit Chrome 73 Stable in der Beta-Phase ist. V8 v7.3 ist vollgepackt mit allerlei von Entwicklern geschätzten Features. Dieser Beitrag bietet einen Überblick über einige der Highlights als Vorgeschmack auf die Veröffentlichung.

Trash talk: der Orinoco Müllsammler

· 13 Minuten Lesezeit
Peter ‘der Garbo’ Marshall ([@hooraybuffer](https://twitter.com/hooraybuffer))

Im Laufe der letzten Jahre hat sich der V8-Müllsammler (GC) stark verändert. Das Orinoco-Projekt hat einen sequentiellen Stop-the-World-Müllsammler in einen überwiegend parallelen und gleichzeitigen Sammler mit inkrementellem Fallback verwandelt.

V8-Version v7.2

· 5 Minuten Lesezeit
Andreas Haas, Verantwortlicher für Traps

Alle sechs Wochen erstellen wir einen neuen Branch von V8 als Teil unseres Veröffentlichungsprozesses. Jede Version wird direkt vor einem Chrome-Beta-Meilenstein vom Git-Master von V8 abgetrennt. Heute freuen wir uns, unseren neuesten Branch, V8-Version 7.2, anzukündigen, der sich bis zur Veröffentlichung in mehreren Wochen in Koordination mit Chrome 72 Stable in der Beta-Phase befindet. V8 v7.2 ist voller Entwicklerfunktionen. Dieser Beitrag bietet eine Vorschau auf einige Highlights im Vorgriff auf die Veröffentlichung.

Beschleunigung von Spread-Elementen

· 9 Minuten Lesezeit
Hai Dang & Georg Neis

Während seines dreimonatigen Praktikums im V8-Team arbeitete Hai Dang daran, die Leistung von [...array], [...string], [...set], [...map.keys()] und [...map.values()] zu verbessern (wenn die Spread-Elemente am Anfang des Array-Literals stehen). Er machte auch Array.from(iterable) deutlich schneller. Dieser Artikel erklärt einige Details seiner Änderungen, die ab V8 v7.2 enthalten sind.

Schnellere asynchrone Funktionen und Versprechen

· 19 Minuten Lesezeit
Maya Armyanova ([@Zmayski](https://twitter.com/Zmayski)), immer-wartende Antizipatorin, und Benedikt Meurer ([@bmeurer](https://twitter.com/bmeurer)), professioneller Leistungsversprecher

Asynchrone Verarbeitung in JavaScript hatte traditionell den Ruf, nicht besonders schnell zu sein. Noch schlimmer war es, Live-JavaScript-Anwendungen – insbesondere Node.js-Server – zu debuggen, besonders wenn es um asynchrone Programmierung geht. Glücklicherweise ändern sich die Zeiten. Dieser Artikel untersucht, wie wir asynchrone Funktionen und Versprechen in V8 (und teilweise auch in anderen JavaScript-Engines) optimiert haben und beschreibt, wie wir die Debugging-Erfahrung für asynchronen Code verbessert haben.

V8 Veröffentlichung v7.1

· 4 Minuten Lesezeit
Stephan Herhut ([@herhut](https://twitter.com/herhut)), geklonter Kloner von Klonen

Alle sechs Wochen erstellen wir einen neuen Zweig von V8 im Rahmen unseres Release-Prozesses. Jede Version wird unmittelbar vor einem Chrome-Beta-Meilenstein aus V8’s Git-Master abgezweigt. Heute freuen wir uns, unseren neuesten Zweig, V8 Version 7.1, bekannt zu geben, der bis zur Veröffentlichung in Abstimmung mit Chrome 71 Stable in einigen Wochen in der Betaphase ist. V8 v7.1 ist randvoll mit allerlei Entwickler-Features. Dieser Beitrag bietet eine Vorschau auf einige der Highlights in Erwartung der Veröffentlichung.

V8-Version v7.0

· 3 Minuten Lesezeit
Michael Hablich

Alle sechs Wochen erstellen wir einen neuen Branch von V8 im Rahmen unseres Veröffentlichungsprozesses. Jede Version wird unmittelbar vor einem Chrome-Beta-Meilenstein von V8s Git-Master abgezweigt. Heute freuen wir uns, unseren neuesten Branch anzukündigen, V8 Version 7.0, der sich bis zur Veröffentlichung in Chrome 70 Stable in einigen Wochen in der Beta-Phase befindet. V8 v7.0 ist gefüllt mit allerlei Entwickler-freundlichen Funktionen. Dieser Beitrag bietet einen Vorgeschmack auf einige Highlights zur Vorbereitung der Veröffentlichung.