Zum Hauptinhalt Zur Navigation Zur Suche

Google: Portable-Native-Client-Code für LLVM

Emscripten nutzt für sein neues Backend Fastcomp Bestandteile aus Googles Portable Native Client. Diese Bestandteile sollen nun auch im Hauptzweig von LLVM bereitstehen, um die Arbeit der Projekte zu vereinfachen.
/ Sebastian Grüner
Kommentare News folgen (öffnet im neuen Fenster)
Teile von Google PNaCL sollen in LLVM eingepflegt werden. (Bild: LLVM)
Teile von Google PNaCL sollen in LLVM eingepflegt werden. Bild: LLVM

Das neue Emscripten-Backend Fastcomp(öffnet im neuen Fenster) verwendet die Compile-Schritte von Googles Portable Native Client (PNaCL). Deshalb wäre es für die Zusammenarbeit beider Projekte hilfreich, wenn diese Code-Bestandteile im Hauptzweig von LLVM verfügbar wären statt in einem eigenen Entwicklungszweig. Deshalb diskutiert ein Google-Entwickler mit dem LLVM-Team über die Möglichkeit zur Aufnahme des Codes(öffnet im neuen Fenster).

Der von Google geschriebene Code soll den LLVM-eigenen wesentlich vereinfachen, indem komplexe Funktionen auf einfachere heruntergebrochen werden. Der Code von Google sei zudem modular aufgebaut. So könnten weitere Projekte entscheiden, welche der Einzelteile sie unterstützen wollen. Zudem sei der Code durch die Modularität einfach zu warten und zu testen.

Code vielfach verwendbar

Emscripten oder auch jedes andere Projekt kann diese Funktionen von Google verwenden, um ein neues LLVM-Backend zu schreiben. Dabei werde die Anzahl der verschiedenen Möglichkeiten, die das Backend beachten muss, aber im Vergleich zum jetzigen LLVM-Code deutlich reduziert – was Emscripten-Entwickler Alon Zakai in der Diskussion(öffnet im neuen Fenster) bestätigt.

Zakai sieht auch weitere Szenarien, in denen LLVM-Zwischencode (IR) einfach in etwas anderes übersetzt werden soll. So könnten Studenten etwa Compiler-Optimierungen gelehrt werden, indem diese LLVM IR in eine ihnen schon bekannte Sprache übersetzen müssten.

Googles PNaCl kompiliert C- und C++-Code ebenfalls in eine Zwischenschicht, die eine Teilmenge von LLVMs IR ist. So wird architekturabhängiger Code erzeugt, der in eine portable, ausführbare Datei gepackt werden kann, um "native" Web-Apps zu erstellen. Das Android-Projekt Renderscript(öffnet im neuen Fenster) nutzt ebenfalls die IR von PNaCL.

Ob der Code von Google letztendlich in LLVM landet, ist noch nicht entschieden. So hegen einige Entwickler etwa große Zweifel(öffnet im neuen Fenster) an dem Vorhaben.


Relevante Themen