Emscripten | |
---|---|
Type | Transpiler |
Udvikler | Alon Zakai |
Skrevet i | C [2] , C++ og JavaScript |
Operativ system | på tværs af platforme |
Hardware platform | på tværs af platforme |
nyeste version | 3.1.15 [1] ( 1. juli 2022 ) |
Licens | MIT-licens og University of Illinois åben licens [d] |
Internet side | emscripten.org |
Emscripten er en LLVM bytecode - to- JavaScript compiler , der kan køres i en webbrowser [3] . LLVM-bytekode kan fås fra kildekoden C eller C ++ .
Grundlæggeren af projektet er Alon Zakai. Distribueret under MIT-licensen .
JavaScript-udviklere står ofte over for svære opgaver, som ofte allerede er løst, men ikke i det JavaScript, de har brug for, men i et helt andet programmeringssprog . At omskrive titusinder eller endda hundredtusindvis af linjer kode fra C/C++ til JavaScript er en amatørfornøjelse. Det øger overhovedet ikke spændingen.
Et yderligere problem med portering er, at kodeemulering notorisk er mindre effektiv end native kodeudførelse . Og når hastigheden af trin-for-trin modellering af driften af en andens processor ikke er nok, er de nødt til at tilføje dynamisk rekompilering - automatisk oversættelse af sektioner af den emulerede kode til JavaScript. Det er ret svært, men efter at være blevet refaktoreret af en smart JIT-kompiler, bliver koden hurtigere.
Udviklingsmålet for Emscripten-projektet er at skabe et værktøj, der gør det muligt at udføre kode på internettet , uanset hvilket programmeringssprog denne kode er skrevet på. Emscripten giver dig mulighed for at kompilere LLVM-bytekode til JavaScript-kode, der kan udføres inde i en webbrowser ved kun at bruge en almindelig JavaScript-motor uden behov for yderligere plugins. LLVM-bytekode kan genereres fra C/C++-kilder ved hjælp af llvm-gcc og clang-kompilatorerne , såvel som fra kode i et andet programmeringssprog, som der er en LLVM-frontend til. Emscripten understøtter oversættelse af SDL -output gennem lærred og understøtter også OpenGL gennem WebGL .
Projekter, der med succes er blevet rekompileret til at køre i browseren, omfatter NetBSD -kernen , CPython , Ruby og Lua - fortolkerne , Poppler PDF - fremviseren , FreeType TrueType-skrifttypegengivelsessystemet , H.264 -videodekoderen , Doom [4] og Doom 3 spil [5] , spilmotoren Unreal Engine [6] [7] og andre. [otte]