Googles JavaScript-Engine: V8 ebnet den Weg für "respektvollen Code"

Google gibt darüber hinaus mit Version 8.6 den Code für den JS-Fuzzer frei. Außerdem implementiert das Update SIMD-Befehle in den V8-Compiler Liftoff.

Lesezeit: 2 Min.
In Pocket speichern
vorlesen Druckansicht Kommentare lesen 65 Beiträge
Von
  • Madeleine Domogalla

Googles JavaScript-Engine V8 hat ein Update erhalten und liegt in Version 8.6 vor. Bis das nächste Chrome-Release unter der Versionsnummer 86 stabil ist, behält die aktuelle V8-Version den Beta-Status. Das V8-Entwicklerteam gibt unter anderem den Code für den JS-Fuzzer frei und geht erste Schritte in Richtung "respektvollem Code".

Damit schließt sich das Entwicklerteam hinter der JavaScript-Engine den Chromium-weiten Bemühungen an. Ziel ist, abwertende, verletzende, direkte oder indirekte diskriminierende Terminologie in Programmiersprachen zu vermeiden. Nicht erst im Zuge der mit den BLM-Protesten (Black Lives Matter) wiederaufflammenden Diskussionen über ein Ende rassistisch motivierter Diskriminierung bemühen sich auch immer mehr Open-Source-Projekte und Softwareanbieter um eine diskriminierungsfreie Sprache. Version 8.6 der JavaScript-Engine nimmt einige Änderungen an der Code-Basis vor. Mit einer Liste der verfügbaren Aufgaben lädt Google Interessierte dazu ein, am Prozess mitzuwirken.

Das V8-Entwicklerteam hat den Code für den JS-Fuzzer freigegeben. Dabei handelt es sich um einen auf Mutation Testing basierenden JavaScript-Fuzzer. In den letzten Jahren sei das Tool ein wichtiger Bestandteil für Stabilität und Sicherheit von V8 gewesen. Nun ist der Code für alle frei verfügbar.

Darüber hinaus fügt V8 8.6 einen Pfad für kleine ganze Zahlen zu Number.prototype.toString hinzu, der in domänenspezifischen Sprache Torque geschrieben ist. Dieser Ansatz ist in Zusammenarbeit mit Microsoft entstanden. Die Konvertierung einer JavaScript-Zahl in eine Zeichenfolge (String) kann überraschend aufwendig sein, da sowohl Gleitkommazahlen (oder auch Fließkommazahlen genannt), wissenschaftliche Schreibweisen, NaNs (englisch für "Not a Number"), Unendlichkeit, Rundungen und weiteres berücksichtigt werden muss. Wie groß ein resultierender String sein wird, ist oft vor einer Berechnung nicht absehbar. Häufig sind es nur kleine Zahlen, die ausgegeben werden sollen. Mit einem zusätzlichen Pfad konnte man offenbar die Mikrobenchmarks beim Number Printing um rund 75 Prozent verbessern.

Version 8.5 der JavaScript-Engine brachte den V8-Compiler Liftoff für alle Plattformen. Nun liegt ein Proposal zu WebAssambly vor, das Single Instruction, Multiple Data (SIMD) umfasst. SIMD-Befehle sind eine spezielle Klasse von Befehlen, die die Datenparallelität in Anwendungen ausnutzen, indem sie denselben Prozess gleichzeitig auf mehreren Datenelementen ausführen. SIMD soll es WebAssembly ermöglichen, die Vorteile allgemein verfügbarer Hardware-Vektor-Anweisungen zu nutzen, um rechenintensive Anwendungen zu beschleunigen. Audio-/Video-Codecs und Image-Prozessoren sind Beispiele für derartige Anwendungen, die SIMD-Befehle zur Beschleunigung der Leistung nutzen. Die meisten modernen Architekturen unterstützen einige Varianten von SIMD-Befehlen.

Bislang wurde SIMD nur in TurboFan, dem Top-Tier-Compiler von V8, implementiert. Auf diese Weise lässt sich die maximale Leistung aus den SIMD-Befehlen herausholen. Mit Version 8.6 wurde SIMD auch in Liftoff implementiert. Entwickler können ihren SIMD-Code in Liftoff debuggen – die Performance soll im Vergleich zum WebAssembly-Interpreter deutlich besser sein. Nähere Informationen zu V8 8.6 finden sich in den Release Notes.

(mdo)