Emscripten

Versiunea actuală a paginii nu a fost încă examinată de colaboratori experimentați și poate diferi semnificativ de versiunea revizuită pe 22 martie 2019; verificările necesită 12 modificări .
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]

Note

  1. 3.1.15 . Preluat la 1 iulie 2022. Arhivat din original la 1 iulie 2022.
  2. Proiectul emscripten Open Source pe Open Hub: Pagina de limbi - 2006.
  3. Walton, Zach Portează cu ușurință C++ la HTML5/JavaScript cu Emscripten (link nu este disponibil) . webpronews . iEntry Network (4 aprilie 2012). Consultat la 30 iulie 2018. Arhivat din original la 30 iulie 2013. 
  4. JS-DOS/JOCURI/DOOM . Consultat la 30 iulie 2018. Arhivat din original la 19 iulie 2018.
  5. D3Wasm: un port al motorului id Tech 4 / Doom 3 către WebAssembly . Preluat la 1 martie 2019. Arhivat din original la 4 martie 2019.
  6. Unreal Engine . Consultat la 30 iulie 2018. Arhivat din original la 11 aprilie 2015.
  7. Mozilla și Epic Preview Unreal Engine 4 care rulează în Firefox . Consultat la 30 iulie 2018. Arhivat din original la 6 octombrie 2014.
  8. Compilatorul Emscripten a ajuns la posibilitatea de a-și reconstrui propria copie de arhivă din 7 aprilie 2014 pe Wayback Machine // opennet.ru 13/11/2012