Google hat Version 8.7 der V8-JavaScript-Engine veröffentlicht. Die Version enthält eine syntaktische Innovation, die die asynchrone Überwachung von Speicherbereichen in Threads ermöglicht. Es gibt auch eine neue API, die C ++ – Aufrufe beschleunigen soll.
Schneller integriert
Die Fast C-API soll die Interaktion zwischen den in der Engine ausgeführten JavaScript-Anwendungen und dem C ++ – Code verbessern. Laut dem V8-Team scheinen die JavaScript-Bindungen zwischen der Engine und dem für die Integration verantwortlichen Embedder der Engpass für leistungskritische Funktionen zu sein.
Die ursprüngliche Implementierung kam zustande gemäß der Erklärung der Fast C API mit den Verbindungen mit der für 2D und 3D konzipierten Grafikbeschleunigung WebGL-Schnittstelle oder sein Nachfolger WebGPU. Es erfüllt jedoch nicht die Leistungsanforderungen von API-Aufrufen, die beispielsweise der Hardware sehr nahe kommen. Die neue API kennt nicht nur die POD-C ++ – Typen (Plain Old Data), sondern auch einige erweiterte Typen im aktuellen Status und ist für zusätzliche Ergänzungen wie z int64_t
oder TypedArray
bereit.
Die Fast C-API erstellt die interne Struktur v8::CFunctionInfo
Dies stellt die Rückrufsignaturen dar, die sich auf die C ++ – Typen beziehen. Um es zu verwenden, müssen Entwickler zuerst einen Rückruf mit einer bestimmten Signatur und dann die v8::CFunction::Make
Methode mit dem Rückruf, um eine geeignete Kopie der zu erhalten v8::CFunction
zu machen. Dann arbeiten Sie wie gewohnt am v8::FunctionTemplate
die zusätzlich zur schnellen API den regulären Rückruf erhält.
Ohne zu verstopfen
Die syntaktische Ergänzung für Atomics
wie so oft bei V8 geplanter JavaScript-Standard vor: Atomics.waitAsync
ist eine nicht blockierende Variante von Atomics.wait
Das ist eine Position in einer Int32Array
auf einen Wert geprüft. Weil es rein ist Atomics.wait
Die Methode blockiert den Programmablauf, er ist nicht in main
erlaubt, aber die asynchrone Variante ist.
Weitere Details finden Sie hier Siehe den V8-Blog. Wie üblich befindet sich die JavaScript-Engine in der Beta-Phase, bis die entsprechende Chrome-Version 87 als stabile Version herauskommt. Anweisungen, wie Entwickler auf das Git-Repository zugreifen können, finden Sie hier in der V8-Dokumentation. Die aktuelle Engine ist auch in der Beta-Version von Chrome 87 enthalten, die Google zur Verfügung steht den Chrome-Beta-Channel bietet an.
(Arm)