Emscripten | |
---|---|
Sorts | Transpiler |
Utvecklaren | Alon Zakai |
Skrivet i | C [2] , C++ och JavaScript |
Operativ system | plattformsoberoende |
Hårdvaruplattform | plattformsoberoende |
senaste versionen | 3.1.15 [1] ( 1 juli 2022 ) |
Licens | MIT-licens och University of Illinois öppen licens [d] |
Hemsida | emscripten.org |
Emscripten är en LLVM bytecode - to- JavaScript - kompilator som kan köras i en webbläsare [3] . LLVM-bytekod kan erhållas från C eller C ++ källkod .
Grundaren av projektet är Alon Zakai. Distribueras under MIT-licensen .
JavaScript-utvecklare står ofta inför svåra uppgifter, som ofta redan är lösta, men inte i den JavaScript de behöver, utan i ett helt annat programmeringsspråk . Att skriva om tiotals eller till och med hundratusentals rader kod från C/C++ till JavaScript är ett amatörnöje. Det ökar inte spänningen alls.
Ett ytterligare problem med portering är att kodemulering är notoriskt mindre effektiv än inbyggd kodexekvering . Och när hastigheten för steg-för-steg-modellering av driften av någon annans processor inte räcker, måste de lägga till dynamisk omkompilering - automatisk översättning av delar av den emulerade koden till JavaScript. Det är ganska svårt, men efter att ha omstrukturerats av en smart JIT-kompilator blir koden snabbare.
Utvecklingsmålet för Emscripten-projektet är att skapa ett verktyg som gör att kod kan exekveras på Internet , oavsett vilket programmeringsspråk som denna kod är skriven på. Emscripten låter dig kompilera LLVM-bytekod till JavaScript-kod som kan köras i en webbläsare med enbart en vanlig JavaScript-motor , utan behov av ytterligare plugins. LLVM-bytekod kan genereras från C/C++-källor med hjälp av llvm-gcc och clang-kompilatorerna , såväl som från kod i ett annat programmeringsspråk som det finns ett LLVM-gränssnitt för. Emscripten stöder översättning av SDL -utdata genom canvas och ger även stöd för OpenGL genom WebGL .
Projekt som framgångsrikt har kompilerats om för att köras i webbläsaren inkluderar NetBSD -kärnan , CPython- , Ruby- och Lua - tolkarna , Poppler PDF - visaren , FreeType TrueType- fontåtergivningssystemet , H.264 -videoavkodaren , Doom [4] och Doom 3 spel [5] , spelmotorn Unreal Engine [6] [7] och andra. [åtta]