Zum Hauptinhalt Zur Navigation Zur Suche

LLVM: Webkit bekommt schnellere Javascript-Engine

Zur Darstellung dynamischer Inhalte benutzt Webkit nun ein weiteres Javascript-Backend. Dieses basiert auf LLVM und verwendet JIT-Compile-Techniken.
/ Sebastian Grüner
Kommentare Auf Google folgen (öffnet im neuen Fenster)
Webkit bekommt ein weiteres Javascript-Backend. (Bild: Webkit.org)
Webkit bekommt ein weiteres Javascript-Backend. Bild: Webkit.org

Mit einer sehr ausführlichen Beschreibung(öffnet im neuen Fenster) kündigt das Webkit-Team offiziell die neue Javascript-Engine FTL an. Der Name steht für Fourth Tier LLVM, denn die neue Engine JIT-kompiliert(öffnet im neuen Fenster) Javascript mittels LLVM und stellt damit eine vierte Möglichkeit bereit, wie Javascript innerhalb von Webkit verarbeitet wird. Diese sind alle für verschiedene Anwendungsfälle optimiert.

FTL ist entstanden, weil die Apple-Entwickler feststellten, dass eine weitere Verbesserung des DFG-Backends nicht praktikabel sei. Mit FTL verfolgen sie das Ziel, C-artige Optimierungen auf die Javascript-Kompilierungen zu übertragen. Dazu verwendeten sie bestehende Teile aus dem Javascript-Core wieder, setzen aber auch auf die Optimierungen, die LLVM bietet.

Statt wie bisher den Maschinen-Code über DFG zu erzeugen, geschieht dies nun mit LLVM, wobei sämtliche Idiome von Javascript in die LLVM-IR überführt werden. In eigenen Benchmarks zeigen die Entwickler Geschwindigkeitssteigerungen um bis zu 40 Prozent. Möglich macht das aber nicht allein das neue Javascript-Backend, vielmehr hat das Team auch einige Veränderungen an LLVM selbst vorgenommen.

So ist es nun etwa möglich, während eine Funktion ausgeführt wird, diese gegen ihren mit LLVM optimierten Code auszutauschen. Darüber hinaus unterstützte LLVM bisher keinen sich selbst verändernden Code. Zur Beschleunigung trägt ebenso die Integration von LLVM in den Webkit-eigenen Garbage Collector bei. Die Ideen für diese Art der Speicherbereinigung sind etwa 25 Jahre alt und stammen ursprünglich von DEC.

FTL ist seit etwa zwei Wochen(öffnet im neuen Fenster) im Hauptentwicklungszweig von Webkit vorhanden und steht bisher nur iOS- und Mac-OS-X-Nutzern bereit. Noch lassen sich aber nicht alle Javascript-Operation mit FTL kompilieren und weitere Leistungssteigerungen seien ebenso noch möglich, betonen die Entwickler. Die neue Technik lässt sich mit den Nightly-Builds von Webkit testen.


Relevante Themen