Ir pieejams Emscripten 3.0 — kompilators no C/C++ uz WebAssembly

Ir publicēts Emscripten 3.0 kompilatora laidiens, kas ļauj apkopot kodu C/C++ un citās valodās, kurām ir pieejamas uz LLVM balstītas priekšgals, universālā zema līmeņa vidēja līmeņa kodā WebAssembly turpmākai integrācijai ar JavaScript projektiem. tīmekļa pārlūkprogrammā un izmantojiet Node.js vai izveidojiet atsevišķas vairāku platformu lietojumprogrammas, kas darbojas, izmantojot wasm izpildlaiku. Projekta kods tiek izplatīts saskaņā ar MIT licenci. Kompilators izmanto izstrādes no LLVM projekta, un Binaryen bibliotēka tiek izmantota WebAssembly ģenerēšanai un optimizācijai.

Emscripten projekta galvenais mērķis ir izveidot rīku, kas ļauj izpildīt kodu tīmeklī neatkarīgi no programmēšanas valodas, kurā kods ir rakstīts. Kompilētās lietojumprogrammas var izmantot izsaukumus uz standarta C un C++ bibliotēkām (libc, libcxx), C++ paplašinājumiem, uz pthreadiem balstītu daudzpavedienu, POSIX API un daudzām multivides bibliotēkām. API integrācijai ar Web API un JavaScript kodu tiek nodrošināti atsevišķi.

Emscripten atbalsta SDL2 bibliotēkas izvades pārraidi, izmantojot Canvas, kā arī nodrošina OpenGL un EGL atbalstu, izmantojot WebGL, kas ļauj konvertēt grafiskās lietojumprogrammas un spēles uz WebAssembly (piemēram, ir Qt rīkkopas ports un atbalsta Unreal Engine 4 un Unit spēļu dzinēji, fiziskais Bullet dzinējs). Papildus koda kompilēšanai C/C++ valodā atsevišķi tiek izstrādāti projekti, lai nodrošinātu tulku un virtuālo mašīnu palaišanu pārlūkprogrammās Lua, C#, Python, Ruby un Perl valodām. LLVM ir iespējams arī lietot priekšgalus, kas nav Clang, un ir pieejami tādām valodām kā Swift, Rust, D un Fortran.

Galvenās izmaiņas Emscripten 3.0:

  • Programmā emscripten izmantotā musl C bibliotēka ir atjaunināta uz versiju 1.2.2 (versija 2 tika izmantota Emscripten 1.1.15.x filiālē).
  • Daļa funkciju, kas galvenokārt tika izmantotas projektā, ir noņemtas no bibliotēkas parseTools.js: removePointing, pointingLevels, removeAllPointing, isVoidType, isStructPointerType, isArrayType, isStructType, isVectorType, isStructuralTypeF, isStructuralType, getStructParits, getStructParype. Def, isPossiblyFunctionType, isFunctionType, getReturnType, splitTokenList, _IntToHex, IEEEUnHex, Compiletime.isPointerType, Compiletime.isStructType, Compiletime.INT_TYPES, isType.
  • Veidnēs shell.html un shell_minimal.html kļūdu ziņojumu izvade, kas rodas emscripten darbības laikā un ko lietojumprogramma izvada, izmantojot stderr, pēc noklusējuma tiek pārslēgta uz console.warn, nevis console.error.
  • Pievienota iespēja norādīt konkrētu teksta kodējumu, ko izmanto failu nosaukumos. Nododot faila nosaukumu, kodējumu var norādīt sufiksa veidā, piemēram, "a.rsp.utf-8" vai "a.rsp.cp1251").

Avots: opennet.ru

Pievieno komentāru