Emscripten | |
---|---|
Typ | Transpiler |
Vývojář | Alon Zakai |
Zapsáno v | C [2] , C++ a JavaScript |
Operační systém | multiplatformní |
Hardwarová platforma | multiplatformní |
Nejnovější verze | 3.1.15 [1] ( 1. července 2022 ) |
Licence | Licence MIT a otevřená licence University of Illinois [d] |
webová stránka | emscripten.org |
Emscripten je kompilátor LLVM bytecode - to -JavaScript , který lze spustit ve webovém prohlížeči [3] . Bytekód LLVM lze získat ze zdrojového kódu C nebo C++ .
Zakladatelem projektu je Alon Zakai. Distribuováno pod licencí MIT .
Vývojáři JavaScriptu poměrně často čelí obtížným úkolům, které jsou často již vyřešeny, ale ne v JavaScriptu, který potřebují, ale ve zcela jiném programovacím jazyce . Přepisování desítek nebo dokonce stovek tisíc řádků kódu z C/C++ do JavaScriptu je amatérským potěšením. Na vzrušení to vůbec nepřidává.
Dalším problémem s portováním je, že emulace kódu je notoricky méně účinná než spouštění nativního kódu . A když rychlost krokového modelování chodu cizího procesoru nestačí, musí přidat dynamickou rekompilaci – automatický překlad částí emulovaného kódu do JavaScriptu. Je to docela obtížné, ale po předělání chytrým JIT kompilátorem se kód zrychlí.
Cílem vývoje projektu Emscripten je vytvořit nástroj, který by umožnil spouštění kódu na internetu bez ohledu na programovací jazyk, ve kterém je tento kód napsán. Emscripten vám umožňuje zkompilovat bajtkód LLVM do kódu JavaScript, který lze spustit ve webovém prohlížeči pouze pomocí běžného enginu JavaScript , bez potřeby dalších pluginů. Bytekód LLVM lze generovat ze zdrojů C/C++ pomocí kompilátorů llvm-gcc a clang a také z kódu v jiném programovacím jazyce, pro který existuje frontend LLVM. Emscripten podporuje překlad výstupu SDL přes plátno a také poskytuje podporu pro OpenGL přes WebGL .
Projekty, které byly úspěšně překompilovány pro spuštění v prohlížeči, zahrnují jádro NetBSD , interprety CPython , Ruby a Lua , prohlížeč PDF Poppler , systém vykreslování písem FreeType TrueType , video dekodér H.264 , Doom [4] a Doom 3 [5] , herní engine Unreal Engine [6] [7] a další. [osm]