Emscripten 3.0 рдЙрдкрд▓рдмреНрдз рдЖрд╣реЗ, рдПрдХ C/C++ рддреЗ WebAssembly рдХрдВрдкрд╛рдЗрд▓рд░

Emscripten 3.0 рдХрдВрдкрд╛рдЗрд▓рд░рдЪреЗ рдкреНрд░рдХрд╛рд╢рди рдкреНрд░рдХрд╛рд╢рд┐рдд рдХреЗрд▓реЗ рдЧреЗрд▓реЗ рдЖрд╣реЗ, рдЬреЗ рддреБрдореНрд╣рд╛рд▓рд╛ C/C++ рдЖрдгрд┐ рдЗрддрд░ рднрд╛рд╖рд╛рдВрдордзреНрдпреЗ рдХреЛрдб рд╕рдВрдХрд▓рд┐рдд рдХрд░рдгреНрдпрд╛рд╕ рдЕрдиреБрдорддреА рджреЗрддреЗ рдЬреНрдпрд╛рд╕рд╛рдареА LLVM-рдЖрдзрд╛рд░рд┐рдд рдлреНрд░рдВрдЯрдПрдВрдбреНрд╕ рдпреБрдирд┐рд╡реНрд╣рд░реНрд╕рд▓ рд▓реЛ-рд▓реЗрд╡реНрд╣рд▓ рдЗрдВрдЯрд░рдореАрдбрд┐рдПрдЯ рдХреЛрдб WebAssembly рдордзреНрдпреЗ рдЙрдкрд▓рдмреНрдз рдЖрд╣реЗрдд, рддреНрдпрд╛рдирдВрддрд░рдЪреНрдпрд╛ JavaScript рдкреНрд░рдХрд▓реНрдкрд╛рдВрд╕рд╣ рдПрдХреАрдХрд░рдгрд╛рд╕рд╛рдареА, рдЪрд╛рд▓реВ рдЖрд╣реЗ. рд╡реЗрдм рдмреНрд░рд╛рдЙрдЭрд░рдордзреНрдпреЗ, рдЖрдгрд┐ Node. js рдордзреНрдпреЗ рд╡рд╛рдкрд░рд╛ рдХрд┐рдВрд╡рд╛ wasm рд░рдирдЯрд╛рдЗрдо рд╡рд╛рдкрд░реВрди рдЪрд╛рд▓рдгрд╛рд░реЗ рд╕реНрдЯрдБрдб-рдЕрд▓реЛрди рдорд▓реНрдЯреА-рдкреНрд▓реЕрдЯрдлреЙрд░реНрдо рдЕреЕрдкреНрд▓рд┐рдХреЗрд╢рди рддрдпрд╛рд░ рдХрд░рд╛. рдкреНрд░рдХрд▓реНрдк рдХреЛрдб рдПрдордЖрдпрдЯреА рдкрд░рд╡рд╛рдиреНрдпрд╛рдЕрдВрддрд░реНрдЧрдд рд╡рд┐рддрд░рд┐рдд рдХреЗрд▓рд╛ рдЬрд╛рддреЛ. рдХрдВрдкрд╛рдпрд▓рд░ LLVM рдкреНрд░рдХрд▓реНрдкрд╛рддреАрд▓ рдШрдбрд╛рдореЛрдбреАрдВрдЪрд╛ рд╡рд╛рдкрд░ рдХрд░рддреЛ рдЖрдгрд┐ Binaryen рд▓рд╛рдпрдмреНрд░рд░реА WebAssembly рдирд┐рд░реНрдорд┐рддреА рдЖрдгрд┐ рдСрдкреНрдЯрд┐рдорд╛рдпрдЭреЗрд╢рдирд╕рд╛рдареА рд╡рд╛рдкрд░рд▓реА рдЬрд╛рддреЗ.

рдПрдореНрд╕реНрдХреНрд░рд┐рдкреНрдЯрди рдкреНрд░рдХрд▓реНрдкрд╛рдЪреЗ рдореБрдЦреНрдп рдЙрджреНрджрд┐рд╖реНрдЯ рдПрдХ рд╕рд╛рдзрди рддрдпрд╛рд░ рдХрд░рдгреЗ рдЖрд╣реЗ рдЬреЗ рддреБрдореНрд╣рд╛рд▓рд╛ рд╡реЗрдмрд╡рд░ рдХреЛрдб рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд░рдгреНрдпрд╛рд╕ рдЕрдиреБрдорддреА рджреЗрддреЗ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖реЗрдЪреА рдкрд░реНрд╡рд╛ рди рдХрд░рддрд╛ рдХреЛрдб рд▓рд┐рд╣рд┐рд▓реЗрд▓рд╛ рдЖрд╣реЗ. рд╕рдВрдХрд▓рд┐рдд рдХреЗрд▓реЗрд▓реЗ рдЕреЕрдкреНрд▓рд┐рдХреЗрд╢рди рдорд╛рдирдХ C рдЖрдгрд┐ C++ рд▓рд╛рдпрдмреНрд░рд░реА (libc, libcxx), C++ рд╡рд┐рд╕реНрддрд╛рд░, pthreads-рдЖрдзрд╛рд░рд┐рдд рдорд▓реНрдЯреАрдереНрд░реЗрдбрд┐рдВрдЧ, POSIX API рдЖрдгрд┐ рдЕрдиреЗрдХ рдорд▓реНрдЯреАрдореАрдбрд┐рдпрд╛ рд▓рд╛рдпрдмреНрд░рд░реАрдВрдирд╛ рдХреЙрд▓ рд╡рд╛рдкрд░реВ рд╢рдХрддрд╛рдд. рд╡реЗрдм API рдЖрдгрд┐ JavaScript рдХреЛрдбрд╕рд╣ рдПрдХрддреНрд░реАрдХрд░рдгрд╛рд╕рд╛рдареА API рд╕реНрд╡рддрдВрддреНрд░рдкрдгреЗ рдкреНрд░рджрд╛рди рдХреЗрд▓реЗ рдЖрд╣реЗрдд.

Emscripten рдХреЕрдирд╡реНрд╣рд╛рд╕ рджреНрд╡рд╛рд░реЗ SDL2 рд▓рд╛рдпрдмреНрд░рд░реАрдЪреЗ рдЖрдЙрдЯрдкреБрдЯ рдкреНрд░рд╕рд╛рд░рд┐рдд рдХрд░рдгреНрдпрд╛рд╕ рд╕рдорд░реНрдерди рджреЗрддреЗ, рдЖрдгрд┐ WebGL рджреНрд╡рд╛рд░реЗ OpenGL рдЖрдгрд┐ EGL рд╕рд╛рдареА рд╕рдорд░реНрдерди рджреЗрдЦреАрд▓ рдкреНрд░рджрд╛рди рдХрд░рддреЗ, рдЬреЗ рддреБрдореНрд╣рд╛рд▓рд╛ рдЧреНрд░рд╛рдлрд┐рдХрд▓ рдНрдкреНрд▓рд┐рдХреЗрд╢рдиреНрд╕ рдЖрдгрд┐ рдЧреЗрдо WebAssembly рдордзреНрдпреЗ рд░реВрдкрд╛рдВрддрд░рд┐рдд рдХрд░рдгреНрдпрд╛рд╕ рдЕрдиреБрдорддреА рджреЗрддреЗ (рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, Qt рдЯреВрд▓рдХрд┐рдЯрдЪреЗ рдПрдХ рдкреЛрд░реНрдЯ рдЖрд╣реЗ рдЖрдгрд┐ рдЕрд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЗрдВрдЬрд┐рдирд▓рд╛ рд╕рдорд░реНрдерди рджреЗрддреЗ. 4 рдЖрдгрд┐ рдпреБрдирд┐рдЯ рдЧреЗрдо рдЗрдВрдЬрд┐рди, рднреМрддрд┐рдХ рдмреБрд▓реЗрдЯ рдЗрдВрдЬрд┐рди). C/C++ рдордзреНрдпреЗ рдХреЛрдб рд╕рдВрдХрд▓рд┐рдд рдХрд░рдгреНрдпрд╛рд╡реНрдпрддрд┐рд░рд┐рдХреНрдд, Lua, C#, Python, Ruby рдЖрдгрд┐ Perl рдпрд╛ рднрд╛рд╖рд╛рдВрд╕рд╛рдареА рдмреНрд░рд╛рдЙрдЭрд░рдордзреНрдпреЗ рджреБрднрд╛рд╖реА рдЖрдгрд┐ рд╡реНрд╣рд░реНрдЪреНрдпреБрдЕрд▓ рдорд╢реАрди рд▓реЙрдиреНрдЪ рдХрд░рдгреЗ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╕реНрд╡рддрдВрддреНрд░рдкрдгреЗ рдкреНрд░рдХрд▓реНрдк рд╡рд┐рдХрд╕рд┐рдд рдХреЗрд▓реЗ рдЬрд╛рдд рдЖрд╣реЗрдд. рд╕реНрд╡рд┐рдлреНрдЯ, рд░рд╕реНрдЯ, рдбреА рдЖрдгрд┐ рдлреЛрд░рдЯреНрд░рд╛рди рд╕рд╛рд░рдЦреНрдпрд╛ рднрд╛рд╖рд╛рдВрд╕рд╛рдареА рдЙрдкрд▓рдмреНрдз рдЕрд╕рд▓реЗрд▓реНрдпрд╛ LLVM рд╡рд░ рдиреЙрди-рдХреНрд▓реЕрдВрдЧ рдлреНрд░рдВрдЯрдПрдВрдб рд▓рд╛рдЧреВ рдХрд░рдгреЗ рджреЗрдЦреАрд▓ рд╢рдХреНрдп рдЖрд╣реЗ.

Emscripten 3.0 рдордзреАрд▓ рдкреНрд░рдореБрдЦ рдмрджрд▓:

  • emscripten рдордзреНрдпреЗ рд╡рд╛рдкрд░рд▓реЗрд▓реА musl C рд▓рд╛рдпрдмреНрд░рд░реА рдЖрд╡реГрддреНрддреА 1.2.2 рдордзреНрдпреЗ рдЕрджреНрдпрддрдирд┐рдд рдХреЗрд▓реА рдЧреЗрд▓реА рдЖрд╣реЗ (рдЖрд╡реГрддреНрддреА 2 Emscripten 1.1.15.x рд╢рд╛рдЦреЗрдд рд╡рд╛рдкрд░рд▓реА рдЧреЗрд▓реА рд╣реЛрддреА).
  • рдлрдВрдХреНрд╢рдиреНрд╕рдЪрд╛ рдПрдХ рднрд╛рдЧ рдЬреЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯрдордзреНрдпреЗ рдкреНрд░рд╛рдореБрдЦреНрдпрд╛рдиреЗ рд╡рд╛рдкрд░рд▓рд╛ рдЧреЗрд▓рд╛ рд╣реЛрддрд╛ рддреЛ parseTools.js рд▓рд╛рдпрдмреНрд░рд░реАрдордзреВрди рдХрд╛рдвреВрди рдЯрд╛рдХрдгреНрдпрд╛рдд рдЖрд▓рд╛ рдЖрд╣реЗ: removePointing, pointingLevels, removeAllPointing, isVoidType, isStructPointerType, isArrayType, isStructType, isVectorType, getTructuralTructural, getTructuralType. рдмрд┐рдЯреНрд╕, 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

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╛