Emscripten 3.0 เบชเบฒเบกเบฒเบ”เปƒเบŠเป‰เป„เบ”เป‰, C/C++ to WebAssembly compiler

เบเบฒเบ™เบ›เปˆเบญเบเบ•เบปเบง compiler Emscripten 3.0 เป„เบ”เป‰เบ–เบทเบเบˆเบฑเบ”เบžเบตเบกเบกเบฒ, เบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบฅเบงเบšเบฅเบงเบกเบฅเบฐเบซเบฑเบ”เปƒเบ™ C/C ++ เปเบฅเบฐเบžเบฒเบชเบฒเบญเบทเปˆเบ™เป†เบ—เบตเปˆ LLVM-based frontends เปเบกเปˆเบ™เบกเบตเบขเบนเปˆเปƒเบ™เบฅเบฐเบซเบฑเบ”เบฅเบฐเบ”เบฑเบšเบเบฒเบ‡เบฅเบฐเบ”เบฑเบšเบ•เปˆเปเบฒเบ—เบปเปˆเบงเป„เบ› WebAssembly, เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡เบเบฑเบšเป‚เบ„เบ‡เบเบฒเบ™ JavaScript เบ•เปเปˆเบกเบฒ, เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™. เปƒเบ™เบ•เบปเบงเบ—เปˆเบญเบ‡เป€เบงเบฑเบšเบ‚เบญเบ‡เป€เบงเบฑเบšเป„เบŠเบ•เปŒ, เปเบฅเบฐเบ™เปเบฒเปƒเบŠเป‰เปƒเบ™ Node. js เบซเบผเบทเบเบฒเบ™เบชเป‰เบฒเบ‡เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบซเบผเบฒเบเป€เบงเบ—เบตเบ—เบตเปˆเบขเบทเบ™เบขเบนเปˆเบ„เบปเบ™เบ”เบฝเบงเบ—เบตเปˆเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เป‚เบ”เบเปƒเบŠเป‰ wasm runtime. เบฅเบฐเบซเบฑเบ”เป‚เบ„เบ‡เบเบฒเบ™เปเบกเปˆเบ™เปเบˆเบเบขเบฒเบเบžเบฒเบเปƒเบ•เป‰เปƒเบšเบญเบฐเบ™เบธเบเบฒเบ” MIT. compiler เปƒเบŠเป‰เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบˆเบฒเบเป‚เบ„เบ‡เบเบฒเบ™ LLVM, เปเบฅเบฐเบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ” Binaryen เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เป€เบžเบทเปˆเบญเบชเป‰เบฒเบ‡ WebAssembly เปเบฅเบฐเบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบš.

เป€เบ›เบปเป‰เบฒเบซเบกเบฒเบเบ•เบปเป‰เบ™เบ•เปเบ‚เบญเบ‡เป‚เบ„เบ‡เบเบฒเบ™ Emscripten เปเบกเปˆเบ™เป€เบžเบทเปˆเบญเบชเป‰เบฒเบ‡เป€เบ„เบทเปˆเบญเบ‡เบกเบทเบ—เบตเปˆเบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ›เบฐเบ•เบดเบšเบฑเบ”เบฅเบฐเบซเบฑเบ”เบขเบนเปˆเปƒเบ™เป€เบงเบฑเบšเป‚เบ”เบเบšเปเปˆเบ„เปเบฒเบ™เบถเบ‡เป€เบ–เบดเบ‡เบžเบฒเบชเบฒเบเบฒเบ™เบ‚เบฝเบ™เป‚เบ›เบผเปเบเบผเบกเบ—เบตเปˆเบฅเบฐเบซเบฑเบ”เบ–เบทเบเบ‚เบฝเบ™. เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบ—เบตเปˆเบฅเบงเบšเบฅเบงเบกเบชเบฒเบกเบฒเบ”เปƒเบŠเป‰เบเบฒเบ™เป‚เบ—เป„เบ›เบซเบฒเบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ” C เปเบฅเบฐ C++ เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™ (libc, libcxx), C++ extensions, pthreads-based multithreading, POSIX APIs, เปเบฅเบฐเบซเบผเบฒเบเบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”เบกเบฑเบ™เบ•เบดเบกเบตเป€เบ”เบ. APIs เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ›เบฐเบชเบปเบกเบ›เบฐเบชเบฒเบ™เบเบฑเบš Web API เปเบฅเบฐเบฅเบฐเบซเบฑเบ” JavaScript เปเบกเปˆเบ™เบชเบฐเบซเบ™เบญเบ‡เปƒเบซเป‰เปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบ.

Emscripten เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบเบฒเบ™เบญเบญเบเบญเบฒเบเบฒเบ”เบœเบปเบ™เบœเบฐเบฅเบดเบ”เบ‚เบญเบ‡เบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ” SDL2 เบœเปˆเบฒเบ™ Canvas, เปเบฅเบฐเบเบฑเบ‡เบชเบฐเบซเบ™เบญเบ‡เบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™ OpenGL เปเบฅเบฐ EGL เบœเปˆเบฒเบ™ WebGL, เป€เบŠเบดเปˆเบ‡เบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ›เปˆเบฝเบ™เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบเบฒเบŸเบดเบเปเบฅเบฐเป€เบเบกเบเบฑเบš WebAssembly (เบ•เบปเบงเบขเปˆเบฒเบ‡, เบกเบตเบžเบญเบ”เบ‚เบญเบ‡เบŠเบธเบ”เป€เบ„เบทเปˆเบญเบ‡เบกเบท Qt เปเบฅเบฐเบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™ Unreal Engine. 4 เปเบฅเบฐเป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบเป€เบเบกเบซเบ™เปˆเบงเบ, เป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบ Bullet เบ—เบฒเบ‡เบ”เป‰เบฒเบ™เบฎเปˆเบฒเบ‡เบเบฒเบ). เบ™เบญเบเป€เบซเบ™เบทเบญเบˆเบฒเบเบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเบฅเบฐเบซเบฑเบ”เปƒเบ™ C / C ++, เป‚เบ„เบ‡เบเบฒเบ™เบ•เปˆเบฒเบ‡เป†เป„เบ”เป‰เบ–เบทเบเบžเบฑเบ”เบ—เบฐเบ™เบฒเปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบเป€เบžเบทเปˆเบญเบฎเบฑเบšเบ›เบฐเบเบฑเบ™เบเบฒเบ™เป€เบ›เบตเบ”เบ•เบปเบงเบ™เบฒเบเบžเบฒเบชเบฒเปเบฅเบฐเป€เบ„เบทเปˆเบญเบ‡ virtual เปƒเบ™เบ•เบปเบงเบ—เปˆเบญเบ‡เป€เบงเบฑเบšเบชเปเบฒเบฅเบฑเบšเบžเบฒเบชเบฒ โ€‹โ€‹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, isStructuralPyarts, getsType. FunctionDef, isPossiblyFunctionType, isFunctionType, getReturnType, splitTo kenList, _IntToHex, IEEEUnHex , Compiletime.isPointerType, Compiletime.isStructType, Compiletime.INT_TYPES, isType.
  • เปƒเบ™เปเบกเปˆเปเบšเบšเบ‚เบญเบ‡ shell.html เปเบฅเบฐ shell_minimal.html, เบœเบปเบ™เบœเบฐเบฅเบดเบ”เบ‚เบญเบ‡เบ‚เปเป‰เบ„เบงเบฒเบกเบชเบฐเปเบ”เบ‡เบ‚เปเป‰เบœเบดเบ”เบžเบฒเบ”เบ—เบตเปˆเป€เบเบตเบ”เบ‚เบทเป‰เบ™เปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ‡เบฒเบ™เบ‚เบญเบ‡ emscripten เปเบฅเบฐเบ–เบทเบเบชเบปเปˆเบ‡เบญเบญเบเป‚เบ”เบเปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบœเปˆเบฒเบ™ stderr เบ–เบทเบเบ›เปˆเบฝเบ™เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เป€เบžเบทเปˆเบญเปƒเบŠเป‰ console.warn เปเบ—เบ™ console.error.
  • เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เปƒเบ™เบเบฒเบ™เบฅเบฐเบšเบธเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ”เบ‚เปเป‰เบ„เบงเบฒเบกเบชเบฐเป€เบžเบฒเบฐเบ—เบตเปˆเปƒเบŠเป‰เปƒเบ™เบŠเบทเปˆเป„เบŸเบฅเปŒ. เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ”เบชเบฒเบกเบฒเบ”เบ–เบทเบเบเปเบฒเบ™เบปเบ”เปƒเบ™เบฎเบนเบšเปเบšเบšเบ‚เบญเบ‡ suffix เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบœเปˆเบฒเบ™เบŠเบทเปˆเป„เบŸเบฅเปŒ, เบ•เบปเบงเบขเปˆเบฒเบ‡, "a.rsp.utf-8" เบซเบผเบท "a.rsp.cp1251").

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: opennet.ru

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™