Emscripten 3.0 ื–ืžื™ืŸ, ืžื”ื“ืจ C/C++ ืœ-WebAssembly

ืžื”ื“ื•ืจืช ื”ืžื”ื“ืจ Emscripten 3.0 ืคื•ืจืกืžื”, ื•ืžืืคืฉืจืช ืœืš ืœืงืžืคืœ ืงื•ื“ ื‘-C/C++ ื•ื‘ืฉืคื•ืช ืื—ืจื•ืช ืฉืขื‘ื•ืจืŸ ืžืžืฉืงื™ื ืžื‘ื•ืกืกื™ LLVM ื–ืžื™ื ื™ื ืœืชื•ืš WebAssembly ืงื•ื“ ื‘ื™ื ื™ื™ื ืื•ื ื™ื‘ืจืกืœื™ ื‘ืจืžื” ื ืžื•ื›ื”, ืœืฆื•ืจืš ืื™ื ื˜ื’ืจืฆื™ื” ืœืื—ืจ ืžื›ืŸ ืขื ืคืจื•ื™ืงื˜ื™ JavaScript, ื”ืคื•ืขืœื™ื ื‘ื“ืคื“ืคืŸ ืื™ื ื˜ืจื ื˜, ื•ื”ืฉืชืžืฉ ื‘-Node.js ืื• ื™ืฆื™ืจืช ืืคืœื™ืงืฆื™ื•ืช ืžืจื•ื‘ื•ืช ืคืœื˜ืคื•ืจืžื•ืช ืขืฆืžืื™ื•ืช ื”ืคื•ืขืœื•ืช ื‘ืืžืฆืขื•ืช ื–ืžืŸ ืจื™ืฆื” ืฉืœ wasm. ืงื•ื“ ื”ืคืจื•ื™ืงื˜ ืžื•ืคืฅ ืชื—ืช ืจื™ืฉื™ื•ืŸ 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 ื•ื™ื—ื™ื“ื”, ืžื ื•ืข ื›ื“ื•ืจ ืคื™ื–ื™). ื‘ื ื•ืกืฃ ืœื”ื™ื“ื•ืจ ืงื•ื“ ื‘-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 getStructuralPartsParts, isStructuralTypeTypeType isPossiblyFunctionType, isFunctionType, getReturnType, splitTokenList, _IntToHex, IEEEUnHex , Compiletime.isPointerType, Compiletime.isStructType, Compiletime.INT_TYPES, isType.
  • ื‘ืชื‘ื ื™ื•ืช shell.html ื•-shell_minimal.html, ื”ืคืœื˜ ืฉืœ ื”ื•ื“ืขื•ืช ืฉื’ื™ืื” ื”ืžืชืจื—ืฉื•ืช ื‘ืžื”ืœืš ืคืขื•ืœืช emscripten ื•ืžื•ืคืงื•ืช ืขืœ ื™ื“ื™ ื”ืืคืœื™ืงืฆื™ื” ื‘ืืžืฆืขื•ืช stderr ืžืฉืชื ื” ื›ื‘ืจื™ืจืช ืžื—ื“ืœ ืœืฉื™ืžื•ืฉ ื‘console.warn ื‘ืžืงื•ื console.error.
  • ื ื•ืกืคื” ืืช ื”ื™ื›ื•ืœืช ืœืฆื™ื™ืŸ ืงื™ื“ื•ื“ ื˜ืงืกื˜ ืกืคืฆื™ืคื™ ื”ืžืฉืžืฉ ื‘ืฉืžื•ืช ืงื‘ืฆื™ื. ื ื™ืชืŸ ืœืฆื™ื™ืŸ ืืช ื”ืงื™ื“ื•ื“ ื‘ืฆื•ืจื” ืฉืœ ืกื™ื•ืžืช ื‘ืขืช ื”ืขื‘ืจืช ืฉื ื”ืงื•ื‘ืฅ, ืœื“ื•ื’ืžื”, "a.rsp.utf-8" ืื• "a.rsp.cp1251").

ืžืงื•ืจ: OpenNet.ru

ื”ื•ืกืคืช ืชื’ื•ื‘ื”