Emscripten | |
---|---|
Tip de | Transpiler |
Dezvoltator | Alon Zakai |
Scris in | C [2] , C++ și JavaScript |
Sistem de operare | multiplatformă |
Platformă hardware | multiplatformă |
ultima versiune | 3.1.15 [1] ( 1 iulie 2022 ) |
Licență | Licența MIT și licența deschisă a Universității din Illinois [d] |
Site-ul web | emscripten.org |
Emscripten este un compilator LLVM bytecode - to- JavaScript care poate fi rulat într -un browser web [3] . Codul octet LLVM poate fi obținut din codul sursă C sau C++ .
Fondatorul proiectului este Alon Zakai. Distribuit sub licență MIT .
Dezvoltatorii JavaScript se confruntă destul de des cu sarcini dificile, care sunt adesea deja rezolvate, dar nu în JavaScript de care au nevoie, ci într-un limbaj de programare complet diferit . Rescrierea a zeci sau chiar sute de mii de linii de cod de la C/C++ la JavaScript este o plăcere pentru amatori. Nu adaugă deloc la emoție.
O problemă suplimentară cu portarea este că emularea codului este notoriu mai puțin eficientă decât executarea codului nativ . Și când viteza de modelare pas cu pas a funcționării procesorului altcuiva nu este suficientă, trebuie să adauge recompilare dinamică - traducerea automată a secțiunilor codului emulat în JavaScript. Este destul de dificil, dar după ce a fost refactorizat de un compilator JIT inteligent, codul devine mai rapid.
Scopul de dezvoltare al proiectului Emscripten este de a crea un instrument care să permită executarea codului pe Internet , indiferent de limbajul de programare în care este scris acest cod. Emscripten vă permite să compilați bytecode LLVM în cod JavaScript care poate fi executat în interiorul unui browser web folosind doar un motor JavaScript obișnuit , fără a fi nevoie de pluginuri suplimentare. Codul octet LLVM poate fi generat din surse C/C++ folosind compilatoarele llvm-gcc și clang , precum și din codul dintr-un alt limbaj de programare pentru care există o interfață LLVM. Emscripten acceptă traducerea ieșirii SDL prin canvas și oferă, de asemenea, suport pentru OpenGL prin WebGL .
Proiectele care au fost recompilate cu succes pentru a rula în browser includ kernelul NetBSD , interpreții CPython , Ruby și Lua , vizualizatorul Poppler PDF , sistemul de redare a fonturilor FreeType TrueType , decodorul video H.264 , Doom [4] și Doom 3. jocuri [5] , motorul de joc Unreal Engine [6] [7] și altele. [opt]