Emscripten 3.0 дастрас аст, як компилятори C/C++ ба WebAssembly

Нашри компилятори Emscripten 3.0 нашр шуд, ки ба шумо имкон медиҳад, ки кодро дар C/C++ ва забонҳои дигаре тартиб диҳед, ки барои онҳо фронтентҳои LLVM асосёфта дар коди универсалии сатҳи пасти мобайнӣ WebAssembly дастрасанд, барои ҳамгироии минбаъда бо лоиҳаҳои JavaScript иҷро мешаванд. дар браузери веб истифода баред ва дар Node.js истифода баред ё эҷоди замимаҳои бисёрплатформаи мустақил, ки бо истифода аз wam runtime кор мекунанд. Рамзи лоиҳа тибқи иҷозатномаи MIT паҳн карда мешавад. Компилятор коркардҳои лоиҳаи LLVM-ро истифода мебарад ва китобхонаи Binaryen барои тавлид ва оптимизатсияи WebAssembly истифода мешавад.

Ҳадафи асосии лоиҳаи Emscripten эҷод кардани асбобест, ки ба шумо имкон медиҳад кодро дар веб сарфи назар аз забони барномасозӣ, ки дар он код навишта шудааст, иҷро кунед. Барномаҳои тартибдодашуда метавонанд зангҳоро ба китобхонаҳои стандартии C ва C++ (libc, libcxx), васеъшавии C++, мултимедиявӣ дар асоси pthreads, API-ҳои POSIX ва бисёр китобхонаҳои мултимедиявӣ истифода баранд. APIҳо барои ҳамгироӣ бо Web API ва коди JavaScript алоҳида пешниҳод карда мешаванд.

Emscripten пахши баромади китобхонаи SDL2-ро тавассути Canvas дастгирӣ мекунад ва инчунин барои OpenGL ва EGL тавассути WebGL дастгирӣ мекунад, ки ба шумо имкон медиҳад барномаҳо ва бозиҳои графикиро ба WebAssembly табдил диҳед (масалан, бандари асбобҳои Qt мавҷуд аст ва Unreal Engine -ро дастгирӣ мекунад. 4 ва муҳаррикҳои бозии воҳиди, муҳаррики физикии Bullet). Илова ба тартиб додани код дар C/C++, лоиҳаҳо алоҳида таҳия карда мешаванд, то ба кор андохтани тарҷумонҳо ва мошинҳои виртуалӣ дар браузерҳо барои забонҳои Lua, C#, Python, Ruby ва Perl таъмин карда шаванд. Инчунин мумкин аст, ки фронтҳои ғайри Clang ба LLVM татбиқ карда шаванд, ки барои забонҳо ба монанди Swift, Rust, D ва Fortran дастрасанд.

Тағироти асосӣ дар Emscripten 3.0:

  • Китобхонаи musl C, ки дар emscripten истифода мешавад, ба версияи 1.2.2 навсозӣ шудааст (версияи 2 дар филиали Emscripten 1.1.15.x истифода шудааст).
  • Як қисми функсияҳое, ки асосан дар доираи лоиҳа истифода мешуданд, аз китобхонаи parseTools.js хориҷ карда шуданд: removePointing, pointingLevels, removeAllPointing, isVoidType, isStructPointerType, isArrayType, isStructType, isVectorType, isStructuralType, artBits, isFunctionDef, isPossiblyFunctionType, isFunctionType, getReturnType, splitTokenList, _IntToHex, IEEEUnHex, Compiletime.isPointerType, Compiletime.isStructType, Compiletime.INT_TYPES, isType.
  • Дар қолибҳои shell.html ва shell_minimal.html, баромади паёмҳои хатогие, ки ҳангоми амалиёти emscripten ба вуҷуд меоянд ва аз ҷониби барнома тавассути stderr бароварда мешаванд, ба таври нобаёнӣ ба ҷои console.error истифода бурдани console.warn гузаронида мешавад.
  • Имконияти муайян кардани рамзгузории матни мушаххасе, ки дар номҳои файл истифода мешаванд, илова карда шудааст. Рамзгузорӣ метавонад дар шакли суффикс ҳангоми интиқоли номи файл муайян карда шавад, масалан, "a.rsp.utf-8" ё "a.rsp.cp1251").

Манбаъ: opennet.ru

Илова Эзоҳ