Zum Hauptinhalt springen

Zündung des Ignition-Interpreters

· 4 Minuten Lesezeit
Ross McIlroy, V8 Ignition Jump Starter

V8 und andere moderne JavaScript-Engines erzielen ihre Geschwindigkeit durch Just-in-Time (JIT)-Kompilierung von Skripten in nativen Maschinencode unmittelbar vor der Ausführung. Der Code wird zunächst von einem Baseline-Compiler kompiliert, der nicht optimierten Maschinencode schnell generieren kann. Der kompilierte Code wird während der Laufzeit analysiert und optional dynamisch mit einem fortschrittlicheren optimierenden Compiler für maximale Leistung erneut kompiliert. In V8 weist diese Skriptausführungspipeline eine Vielzahl von Sonderfällen und Bedingungen auf, die eine komplexe Mechanik erfordern, um zwischen dem Baseline-Compiler und zwei optimierenden Compilern, Crankshaft und TurboFan, zu wechseln.

V8 auf der BlinkOn 6 Konferenz

· 2 Minuten Lesezeit
das V8-Team

BlinkOn ist ein halbjährliches Treffen von Blink-, V8- und Chromium-Mitwirkenden. BlinkOn 6 fand am 16. und 17. Juni in München statt. Das V8-Team hielt eine Reihe von Präsentationen zu Architektur, Design, Leistungsinitiativen und Sprachimplementierung.

V8-Version v5.3

· 3 Minuten Lesezeit
das V8-Team

Ungefähr alle sechs Wochen erstellen wir einen neuen Branch von V8 im Rahmen unseres Veröffentlichungsprozesses. Jede Version wird direkt vor der Erstellung eines Chrome-Beta-Meilensteins aus dem Git-Master von V8 abgezweigt. Heute freuen wir uns, unseren neuesten Branch anzukündigen, V8-Version 5.3, der bis zu seiner Veröffentlichung in Verbindung mit Chrome 53 Stable in der Beta bleiben wird. V8 v5.3 ist vollgepackt mit allerlei Entwicklerfunktionen, und wir möchten Ihnen eine Vorschau auf einige der Highlights geben, die in wenigen Wochen veröffentlicht werden.

V8-Version v5.2

· 2 Minuten Lesezeit
Das V8-Team

Etwa alle sechs Wochen erstellen wir einen neuen Branch von V8 als Teil unseres Veröffentlichungsprozesses. Jede Version wird direkt von V8s Git-Master abgezweigt, unmittelbar bevor Chrome für einen Chrome-Beta-Meilenstein verzweigt. Heute freuen wir uns, unseren neuesten Branch, V8-Version 5.2, anzukündigen, der bis zur Veröffentlichung in Abstimmung mit Chrome 52 Stable in der Beta-Phase bleiben wird. V8 5.2 ist vollgepackt mit allerlei Entwickler-freundlichen Neuerungen, daher möchten wir Ihnen einen Einblick in einige Highlights geben, um die Veröffentlichung in einigen Wochen vorzubereiten.

ES2015, ES2016 und darüber hinaus

· 9 Minuten Lesezeit
das V8-Team, ECMAScript-Enthusiasten

Das V8-Team legt großen Wert auf die Weiterentwicklung von JavaScript zu einer zunehmend ausdrucksstarken und klar definierten Sprache, die es erleichtert, schnelle, sichere und korrekte Webanwendungen zu schreiben. Im Juni 2015 wurde die ES2015-Spezifikation vom TC39-Standardkomitee ratifiziert, was das größte einzelne Update der JavaScript-Sprache darstellt. Neue Funktionen umfassen Klassen, Pfeilfunktionen, Promises, Iteratoren / Generatoren, Proxy-Objekte, wohlbekannte Symbole und zusätzliche syntaktische Vereinfachungen. TC39 hat auch die Frequenz neuer Spezifikationen erhöht und im Februar 2016 den Kandidatenentwurf für ES2016 veröffentlicht, der diesen Sommer ratifiziert wird. Während es aufgrund des kürzeren Veröffentlichungszyklus nicht so umfangreich ist wie das ES2015-Update, führt ES2016 bemerkenswerterweise den Exponentiations-Operator und Array.prototype.includes ein.

V8-Version v5.1

· 3 Minuten Lesezeit
das V8-Team

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.

Jank-Busters Teil Zwei: Orinoco

· 6 Minuten Lesezeit
die Jank-Busters: Ulan Degenbaev, Michael Lippautz und Hannes Payer

In einem früheren Blogpost haben wir das Problem von Rucklern vorgestellt, die durch Garbage Collection verursacht werden und ein flüssiges Surfen beeinträchtigen. In diesem Blogpost stellen wir drei Optimierungen vor, die die Grundlage für einen neuen Garbage Collector in V8 mit dem Codenamen Orinoco bilden. Orinoco basiert auf der Idee, dass die Implementierung eines überwiegend parallelen und gleichzeitig arbeitenden Garbage Collectors ohne strikte Generationengrenzen die Ruckler bei der Garbage Collection und den Speicherverbrauch reduziert, während gleichzeitig eine hohe Durchsatzrate erhalten bleibt. Statt Orinoco als separaten Garbage Collector hinter einem Flag zu implementieren, haben wir uns entschieden, die Funktionen von Orinoco schrittweise auf die V8 Hauptentwicklung einzuführen, um den Benutzern sofort Vorteile zu bieten. Die drei in diesem Beitrag diskutierten Funktionen sind paralleles Kompaktieren, parallele Verarbeitung des Remembered Sets und schwarze Allokation.

V8 Veröffentlichung v5.0

· 3 Minuten Lesezeit
das V8-Team

Der erste Schritt im V8-Veröffentlichungsprozess ist eine neue Branching vom Git-Master direkt bevor Chromium für einen Chrome-Beta-Meilenstein (etwa alle sechs Wochen) brancht. Unsere neueste Veröffentlichungs-Branch ist V8 v5.0, die bis zum Erscheinen einer stabilen Version zusammen mit Chrome 50 Stable im Beta-Status bleiben wird. Hier sind die Highlights der neuen, entwicklerorientierten Features in dieser Version von V8.

Experimentelle Unterstützung für WebAssembly in V8

· 3 Minuten Lesezeit
Seth Thompson, WebAssembly-Evangelist

Für einen umfassenden Überblick über WebAssembly und einen Fahrplan für die zukünftige Zusammenarbeit in der Community, siehe Ein Meilenstein für WebAssembly auf dem Mozilla Hacks Blog.

Seit Juni 2015 arbeiten Mitarbeiter von Google, Mozilla, Microsoft, Apple und der W3C WebAssembly Community Group intensiv daran, WebAssembly zu entwerfen, spezifizieren und zu implementieren (1, 2, 3, 4). WebAssembly ist ein neues Laufzeitsystem und ein Kompilierungsziel für das Web. WebAssembly ist ein niedrigstufiger, portabler Bytecode, der in einem kompakten Binärformat kodiert ist und mit einer nahezu nativen Geschwindigkeit in einer speichersicheren Sandbox ausgeführt wird. Als Weiterentwicklung bestehender Technologien ist WebAssembly eng in die Webplattform integriert und schneller im Herunterladen über das Netzwerk sowie schneller in der Initialisierung als asm.js, ein niedrigstufiger Subset von JavaScript.

RegExp Lookbehind Assertions

· 3 Minuten Lesezeit
Yang Guo, Regular Expression Engineer

Eingeführt mit der dritten Ausgabe der ECMA-262-Spezifikation sind reguläre Ausdrücke seit 1999 Teil von JavaScript. In Bezug auf Funktionalität und Ausdruckskraft spiegelt die Implementierung regulärer Ausdrücke in JavaScript ungefähr die anderer Programmiersprachen wider.