LLVM: Emscripten macht C und C++ zu Javascript
Mit Emscripten lässt sich von LLVM erzeugter Bytecode in Javascript umwandeln. So lässt sich praktisch Code in jeder von LLVM erzeugten Sprache in Javascript umwandeln und im Browser beziehungsweise überall, wo Javascript läuft, ausführen. Ziel des Projektes ist es, Code im Web auszuführen, ganz gleich, in welcher Sprache dieser geschrieben ist.
Dabei wird C/C++-Code in LLVM-Bytecode übersetzt, der anschließend von Emscripten in Javascript umgewandelt wird. Andere Sprachen werden indirekt unterstützt. So kann beispielsweise die in C/C++ geschriebene Runtimes von Python und Lua in Javascript übersetzt und anschließend Python und Lua im Browser ausgeführt werden.
Derzeit kann Emscripten große Teile von C und C++ umwandeln, einschließlich großer Projekte wie CPython(öffnet im neuen Fenster), Poppler(öffnet im neuen Fenster) und Bullet(öffnet im neuen Fenster), erklären die Entwickler in einer FAQ(öffnet im neuen Fenster). Sie gehen dennoch davon aus, dass Emscripten noch viele Fehler hat und es zu Problemen bei der Übersetzung beliebigen Codes kommen kann.
Was mit Emscripten schon geht, zeigen einige Demos(öffnet im neuen Fenster), darunter Umsetzungen von Doom, Python(öffnet im neuen Fenster), der Physikengine Bullets(öffnet im neuen Fenster) und Schriftrendering mit Freetype(öffnet im neuen Fenster).
Der mit Emscripten generierte Code ist rund 90 Prozent langsamer als mit "gcc -O3" generierter Code. Das sei nicht gut, aber auch nicht so schlecht, kommentieren die Entwickler und verweisen auf die zu erwartende Optimierung bei LLVM, Javascript-Optimierer wie den Closure Compiler und die schneller werdenden Javascript-Engines.
Emscripten(öffnet im neuen Fenster) selbst ist in Javascript geschrieben, steht unter der MIT-Lizenz und kann bei Github heruntergeladen werden.
- Anzeige Hier geht es zum Handbuch für Softwareentwickler bei Amazon Wenn Sie auf diesen Link klicken und darüber einkaufen, erhält Golem eine kleine Provision. Dies ändert nichts am Preis der Artikel.



